[{"data":1,"prerenderedAt":574},["ShallowReactive",2],{"navigation_docs":3,"-bundles-design-translations-and-markets":256,"-bundles-design-translations-and-markets-surround":569},[4,102],{"title":5,"path":6,"stem":7,"children":8},"TreStack Timer","\u002Ftimer","1.timer",[9,12,30,51,68,89],{"title":10,"path":6,"stem":11},"TreStack Timer docs","1.timer\u002Findex",{"title":13,"path":14,"stem":15,"children":16,"page":29},"Getting started","\u002Ftimer\u002Fstart","1.timer\u002F1.start",[17,21,25],{"title":18,"path":19,"stem":20},"Installing TreStack Timer","\u002Ftimer\u002Fstart\u002Finstalling-a-trestack-app","1.timer\u002F1.start\u002F1.installing-a-trestack-app",{"title":22,"path":23,"stem":24},"Turning on the app embed and placing the app block","\u002Ftimer\u002Fstart\u002Fplacing-your-first-app-block","1.timer\u002F1.start\u002F2.placing-your-first-app-block",{"title":26,"path":27,"stem":28},"Development stores and theme previews","\u002Ftimer\u002Fstart\u002Fdevelopment-stores-and-theme-previews","1.timer\u002F1.start\u002F3.development-stores-and-theme-previews",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Timer types","\u002Ftimer\u002Ftimer-types","1.timer\u002F2.timer-types",[35,39,43,47],{"title":36,"path":37,"stem":38},"TreStack Timer, setup and settings","\u002Ftimer\u002Ftimer-types\u002Ftrestack-timer","1.timer\u002F2.timer-types\u002F1.trestack-timer",{"title":40,"path":41,"stem":42},"Placement, countries, and translations","\u002Ftimer\u002Ftimer-types\u002Fplacement-and-targeting","1.timer\u002F2.timer-types\u002F2.placement-and-targeting",{"title":44,"path":45,"stem":46},"Cart page and cart drawer timers","\u002Ftimer\u002Ftimer-types\u002Fcart-timers","1.timer\u002F2.timer-types\u002F3.cart-timers",{"title":48,"path":49,"stem":50},"Email timers","\u002Ftimer\u002Ftimer-types\u002Femail-timers","1.timer\u002F2.timer-types\u002F4.email-timers",{"title":52,"path":53,"stem":54,"children":55,"page":29},"Performance and themes","\u002Ftimer\u002Freference","1.timer\u002F3.reference",[56,60,64],{"title":57,"path":58,"stem":59},"Performance notes","\u002Ftimer\u002Freference\u002Fperformance-notes","1.timer\u002F3.reference\u002F1.performance-notes",{"title":61,"path":62,"stem":63},"Theme compatibility","\u002Ftimer\u002Freference\u002Ftheme-compatibility","1.timer\u002F3.reference\u002F2.theme-compatibility",{"title":65,"path":66,"stem":67},"Running several timers at once","\u002Ftimer\u002Freference\u002Frunning-several-timers","1.timer\u002F3.reference\u002F3.running-several-timers",{"title":69,"path":70,"stem":71,"children":72,"page":29},"Billing, privacy, and data","\u002Ftimer\u002Faccount","1.timer\u002F4.account",[73,77,81,85],{"title":74,"path":75,"stem":76},"Billing, trials, and plan changes","\u002Ftimer\u002Faccount\u002Fbilling","1.timer\u002F4.account\u002F1.billing",{"title":78,"path":79,"stem":80},"Privacy and data, what the app stores","\u002Ftimer\u002Faccount\u002Fprivacy-and-data","1.timer\u002F4.account\u002F2.privacy-and-data",{"title":82,"path":83,"stem":84},"Data processing and subprocessors","\u002Ftimer\u002Faccount\u002Fdata-processing-and-subprocessors","1.timer\u002F4.account\u002F3.data-processing-and-subprocessors",{"title":86,"path":87,"stem":88},"Uninstalling TreStack Timer","\u002Ftimer\u002Faccount\u002Funinstalling-trestack-timer","1.timer\u002F4.account\u002F4.uninstalling-trestack-timer",{"title":90,"path":91,"stem":92,"children":93,"page":29},"When something is wrong","\u002Ftimer\u002Ftroubleshooting","1.timer\u002F5.troubleshooting",[94,98],{"title":95,"path":96,"stem":97},"When the timer does not appear","\u002Ftimer\u002Ftroubleshooting\u002Ftroubleshooting-app-blocks","1.timer\u002F5.troubleshooting\u002F1.troubleshooting-app-blocks",{"title":99,"path":100,"stem":101},"When the timer shows in the wrong place or looks wrong","\u002Ftimer\u002Ftroubleshooting\u002Ftroubleshooting-storefront-display","1.timer\u002F5.troubleshooting\u002F2.troubleshooting-storefront-display",{"title":103,"path":104,"stem":105,"children":106},"TreStack Bundles","\u002Fbundles","2.bundles",[107,110,131,160,185,198,219,244],{"title":108,"path":104,"stem":109},"TreStack Bundles docs","2.bundles\u002Findex",{"title":111,"path":112,"stem":113,"children":114,"page":29},"Getting a deal live","\u002Fbundles\u002Fstart","2.bundles\u002F1.start",[115,119,123,127],{"title":116,"path":117,"stem":118},"Getting started with TreStack Bundles","\u002Fbundles\u002Fstart\u002Fgetting-started","2.bundles\u002F1.start\u002F1.getting-started",{"title":120,"path":121,"stem":122},"Deal types and deal bars","\u002Fbundles\u002Fstart\u002Fdeal-types","2.bundles\u002F1.start\u002F2.deal-types",{"title":124,"path":125,"stem":126},"Creating, publishing and managing deals","\u002Fbundles\u002Fstart\u002Fcreating-and-publishing-deals","2.bundles\u002F1.start\u002F3.creating-and-publishing-deals",{"title":128,"path":129,"stem":130},"Development stores and testing safely","\u002Fbundles\u002Fstart\u002Fdevelopment-stores-and-testing","2.bundles\u002F1.start\u002F4.development-stores-and-testing",{"title":132,"path":133,"stem":134,"children":135,"page":29},"Building offers","\u002Fbundles\u002Fdeals","2.bundles\u002F2.deals",[136,140,144,148,152,156],{"title":137,"path":138,"stem":139},"Quantity breaks and Buy X, get Y","\u002Fbundles\u002Fdeals\u002Fquantity-breaks-and-buy-x-get-y","2.bundles\u002F2.deals\u002F1.quantity-breaks-and-buy-x-get-y",{"title":141,"path":142,"stem":143},"Bundles and mix and match","\u002Fbundles\u002Fdeals\u002Fbundles-and-mix-and-match","2.bundles\u002F2.deals\u002F2.bundles-and-mix-and-match",{"title":145,"path":146,"stem":147},"Free gifts and progressive gifts","\u002Fbundles\u002Fdeals\u002Fgifts-and-progressive-gifts","2.bundles\u002F2.deals\u002F3.gifts-and-progressive-gifts",{"title":149,"path":150,"stem":151},"Upsells, add-ons and personalisation","\u002Fbundles\u002Fdeals\u002Fupsells-add-ons-and-personalisation","2.bundles\u002F2.deals\u002F4.upsells-add-ons-and-personalisation",{"title":153,"path":154,"stem":155},"Subscriptions in a deal","\u002Fbundles\u002Fdeals\u002Fsubscriptions","2.bundles\u002F2.deals\u002F5.subscriptions",{"title":157,"path":158,"stem":159},"Products, dates and visibility","\u002Fbundles\u002Fdeals\u002Fproducts-dates-and-visibility","2.bundles\u002F2.deals\u002F6.products-dates-and-visibility",{"title":161,"path":162,"stem":163,"children":164,"page":29},"How a deal looks, and where","\u002Fbundles\u002Fdesign","2.bundles\u002F3.design",[165,169,173,177,181],{"title":166,"path":167,"stem":168},"Designing a deal","\u002Fbundles\u002Fdesign\u002Fdesign","2.bundles\u002F3.design\u002F1.design",{"title":170,"path":171,"stem":172},"Badges, timers and scratch-off","\u002Fbundles\u002Fdesign\u002Fbadges-timers-and-scratch-off","2.bundles\u002F3.design\u002F2.badges-timers-and-scratch-off",{"title":174,"path":175,"stem":176},"Variants, swatches and images","\u002Fbundles\u002Fdesign\u002Fvariants-swatches-and-images","2.bundles\u002F3.design\u002F3.variants-swatches-and-images",{"title":178,"path":179,"stem":180},"Prices, the sticky bar and the savings summary","\u002Fbundles\u002Fdesign\u002Fprices-sticky-bar-and-savings","2.bundles\u002F3.design\u002F4.prices-sticky-bar-and-savings",{"title":182,"path":183,"stem":184},"Translations, currencies and markets","\u002Fbundles\u002Fdesign\u002Ftranslations-and-markets","2.bundles\u002F3.design\u002F5.translations-and-markets",{"title":186,"path":187,"stem":188,"children":189,"page":29},"Prices at checkout","\u002Fbundles\u002Fcheckout","2.bundles\u002F4.checkout",[190,194],{"title":191,"path":192,"stem":193},"How the discount is applied at checkout","\u002Fbundles\u002Fcheckout\u002Fhow-the-discount-is-applied","2.bundles\u002F4.checkout\u002F1.how-the-discount-is-applied",{"title":195,"path":196,"stem":197},"Combining discounts, and store limits","\u002Fbundles\u002Fcheckout\u002Fcombinations-and-limits","2.bundles\u002F4.checkout\u002F2.combinations-and-limits",{"title":199,"path":200,"stem":201,"children":202,"page":29},"Tests and numbers","\u002Fbundles\u002Fmeasure","2.bundles\u002F5.measure",[203,207,211,215],{"title":204,"path":205,"stem":206},"Deal analytics","\u002Fbundles\u002Fmeasure\u002Fanalytics","2.bundles\u002F5.measure\u002F1.analytics",{"title":208,"path":209,"stem":210},"Added revenue","\u002Fbundles\u002Fmeasure\u002Fadded-revenue","2.bundles\u002F5.measure\u002F2.added-revenue",{"title":212,"path":213,"stem":214},"A\u002FB testing a deal","\u002Fbundles\u002Fmeasure\u002Fab-tests","2.bundles\u002F5.measure\u002F3.ab-tests",{"title":216,"path":217,"stem":218},"Smart A\u002FB tests","\u002Fbundles\u002Fmeasure\u002Fsmart-ab-tests","2.bundles\u002F5.measure\u002F4.smart-ab-tests",{"title":220,"path":221,"stem":222,"children":223,"page":29},"Billing, privacy, and when something is wrong","\u002Fbundles\u002Faccount","2.bundles\u002F6.account",[224,228,232,236,240],{"title":225,"path":226,"stem":227},"TreStack Bundles plans and billing","\u002Fbundles\u002Faccount\u002Fplans-and-billing","2.bundles\u002F6.account\u002F1.plans-and-billing",{"title":229,"path":230,"stem":231},"Going over your plan","\u002Fbundles\u002Faccount\u002Fgoing-over-your-plan","2.bundles\u002F6.account\u002F2.going-over-your-plan",{"title":233,"path":234,"stem":235},"Pausing, cancelling and uninstalling","\u002Fbundles\u002Faccount\u002Fpausing-cancelling-and-uninstalling","2.bundles\u002F6.account\u002F3.pausing-cancelling-and-uninstalling",{"title":237,"path":238,"stem":239},"Privacy, data and sub-processors","\u002Fbundles\u002Faccount\u002Fprivacy-and-data","2.bundles\u002F6.account\u002F4.privacy-and-data",{"title":241,"path":242,"stem":243},"When a deal does not show or prices look wrong","\u002Fbundles\u002Faccount\u002Ftroubleshooting","2.bundles\u002F6.account\u002F5.troubleshooting",{"title":245,"path":246,"stem":247,"children":248,"page":29},"Reference","\u002Fbundles\u002Freference","2.bundles\u002F7.reference",[249,252],{"title":57,"path":250,"stem":251},"\u002Fbundles\u002Freference\u002Fperformance-notes","2.bundles\u002F7.reference\u002F1.performance-notes",{"title":253,"path":254,"stem":255},"Theme compatibility and placement","\u002Fbundles\u002Freference\u002Ftheme-compatibility","2.bundles\u002F7.reference\u002F2.theme-compatibility",{"id":257,"title":182,"body":258,"description":562,"extension":563,"links":564,"meta":565,"navigation":566,"path":183,"seo":567,"stem":184,"__hash__":568},"docs\u002F2.bundles\u002F3.design\u002F5.translations-and-markets.md",{"type":259,"value":260,"toc":545},"minimark",[261,276,306,311,314,317,321,324,327,364,368,375,382,387,391,394,397,400,420,425,431,437,441,474,478,518,522,525],[262,263,264,268,269,272,275],"p",{},[265,266,267],"strong",{},"Applies to:"," TreStack Bundles, every plan",[270,271],"br",{},[265,273,274],{},"Updated:"," 11 October 2026",[277,278,279,284],"callout",{},[262,280,281],{},[265,282,283],{},"At a glance",[285,286,287,294,300],"ul",{},[288,289,290,293],"li",{},[265,291,292],{},"Built-in languages:"," English and 19 others, machine-translated",[288,295,296,299],{},[265,297,298],{},"Deal texts:"," Translated by you, one language at a time",[288,301,302,305],{},[265,303,304],{},"Prices:"," Entered in your store currency, converted by Shopify",[307,308,310],"h2",{"id":309},"languages","Languages",[262,312,313],{},"The widget's own texts, such as FREE, Sold out, Choose, Done, Reveal, the words of the Most popular sticker and the subscription choices, come built in. They exist in English and 19 other languages: Czech, Danish, German, Spanish, Finnish, French, Italian, Japanese, Korean, Norwegian Bokmål, Dutch, Polish, Portuguese (Brazil), Portuguese (Portugal), Swedish, Turkish, Vietnamese, Chinese (Simplified) and Chinese (Traditional). The widget picks them by your storefront's language. The 19 translations are machine translations, so read the ones your shoppers use.",[262,315,316],{},"The Translations page rewords any of them. Open it from the app menu, or with Translations in the deal editor's header, which opens it with that deal first. The Language list holds your store's languages from Shopify, shown as \"FR - French\", one at a time. The General section (\"Buttons, labels and messages the widget shows on every deal.\") holds the built-in texts. A text you change there applies in that language on every deal, and this works in your store's primary language too, so General is also where you reword the English texts.",[307,318,320],{"id":319},"translating-a-deal","Translating a deal",[262,322,323],{},"Below General, each deal has its own section of \"This deal's titles, subtitles, labels and badges.\", with a count such as \"12 of 20 translated\". Open a section to see each original next to a field for its translation. There are 58 kinds of deal text, among them titles, subtitles, labels, badges, highlights, gifts, upsells, the timer, scratch-off, subscriptions, the sticky bar, the savings summary, the low stock alert, the pop-ups and the discount name. Save, or Discard to drop your changes.",[262,325,326],{},"How the translations behave:",[285,328,329,335,341,347,353],{},[288,330,331,334],{},[265,332,333],{},"Not in the primary language."," Your deal's own texts are already in your primary language, so deal translations apply only in the other languages.",[288,336,337,340],{},[265,338,339],{},"Empty means fallback."," A text left empty shows the built-in translation where there is one, otherwise the original.",[288,342,343,346],{},[265,344,345],{},"Editing the original orphans the translation."," Change a title in the editor and its old translation no longer applies; translate the new text again.",[288,348,349,352],{},[265,350,351],{},"No automatic translation."," You write each translation yourself.",[288,354,355,358,359,363],{},[265,356,357],{},"Variables stay as written."," Keep ",[360,361,362],"code",{},"{{saved_percentage}}"," and the other variables exactly as in the original. If they do not match, the field warns \"Variables don't match the original.\" and names the ones to use, but it still saves.",[307,365,367],{"id":366},"checkout-labels-and-product-names","Checkout labels and product names",[262,369,370,371,374],{},"Each deal's discount shows a label in the cart and at checkout. It is the deal's Discount name (shown in cart\u002Fcheckout), from Settings, or the bar's title when that is empty. ",[360,372,373],{},"{{quantity}}",", and the buy and get quantities of a Buy X, get Y bar, are filled in; other variables are removed, because checkout has no prices or product names to fill them with. A label is cut at 255 characters.",[262,376,377,378,381],{},"The label shows in the shopper's language only when you translated the discount name or the bar title on the Translations page. Shoppers in your primary language see the original, and so do shoppers in a language you did not translate. More on ",[379,380,191],"a",{"href":192},".",[262,383,384,385,381],{},"Product names and option names, such as Color and Size, come from Shopify, not from the app. Translate them with a translation app and the widget shows them. Swatches match option names as the storefront shows them, so a translated option name shows the plain dropdown, as explained on ",[379,386,174],{"href":175},[307,388,390],{"id":389},"currencies-and-markets","Currencies and markets",[262,392,393],{},"You enter discount amounts in your store currency. For a shopper paying in another currency, they are converted with Shopify's rate for that currency, and the widget shows the same prices checkout charges. Price rounding happens in the shopper's currency. If no usable rate exists, the shopper gets no discount and the widget shows full prices, never a wrong price. The personalisation fee is always priced in your store currency.",[262,395,396],{},"A deal limited to one market can have its amounts in that market's currency. When you pick a market with its own currency in Settings, Visibility, the deal's amounts are entered in it: exact for shoppers paying in that currency, converted for anyone else. If the app cannot read that currency's rate, the editor says so, for example \"Could not read the EUR exchange rate: amounts are in USD\", and the amounts stay in your store currency.",[262,398,399],{},"Visibility in the deal's Settings limits where a deal applies:",[285,401,402,408,414],{},[288,403,404,407],{},[265,405,406],{},"Markets:"," All, or one of your Shopify markets.",[288,409,410,413],{},[265,411,412],{},"Exclude markets:"," with All, leaves out the markets you tick.",[288,415,416,419],{},[265,417,418],{},"Exclude B2B customers:"," buyers of Shopify B2B get neither the widget nor the discount. Third-party B2B apps are not supported.",[262,421,422,423,381],{},"Shopify enforces the markets on the discount, and the widget hides the deal outside them. When several deals target one product, a deal set to the shopper's market is shown before an all-markets deal; the full order is on ",[379,424,157],{"href":158},[262,426,427,430],{},[265,428,429],{},"Country previewing",", above the editor preview, shows the widget's prices in another country's currency. It does not change the language of the texts.",[262,432,433,436],{},[265,434,435],{},"Currency converter apps."," If your store uses a currency converter app the widget supports (five are supported; write to us to ask which), the widget asks it to convert the prices it writes, so they match the rest of the page. Those conversions are for display only: checkout charges the currency and amount Shopify uses for the shopper, which can differ from what a converter showed.",[307,438,440],{"id":439},"selling-in-another-market-in-four-steps","Selling in another market, in four steps.",[442,443,445,450,453,457,460,464,467,471],"steps",{"level":444},"3",[446,447,449],"h3",{"id":448},"check-the-built-in-texts","Check the built-in texts",[262,451,452],{},"Translations, pick the language, open General. Reword any machine translation that reads wrong.",[446,454,456],{"id":455},"translate-the-deal","Translate the deal",[262,458,459],{},"Open the deal's section in the same language and translate its texts, the discount name included. Keep variables as they are.",[446,461,463],{"id":462},"translate-product-names","Translate product names",[262,465,466],{},"In Shopify, with a translation app.",[446,468,470],{"id":469},"set-the-market-and-preview-it","Set the market and preview it",[262,472,473],{},"Settings, Visibility for the markets. Then Country previewing for the prices, and the storefront in that language for the texts.",[307,475,477],{"id":476},"settings-reference","Settings reference",[479,480,481,486,490,494,498,502,506,510,514],"field-group",{},[482,483,485],"field",{"name":484},"Built-in texts","English and 19 other languages, machine-translated, chosen by the storefront language.",[482,487,489],{"name":488},"General","Rewords built-in texts per language, the primary language included, on every deal.",[482,491,493],{"name":492},"Deal texts","58 kinds per deal. Not applied in the primary language. Editing the original means translating again.",[482,495,497],{"name":496},"Checkout label","Discount name, else the bar title. Translated only where you translated it.",[482,499,501],{"name":500},"Product names","From Shopify. Translate them with a translation app.",[482,503,505],{"name":504},"Prices","Store currency, converted with Shopify's rate. The widget shows what checkout charges.",[482,507,509],{"name":508},"Market currency","A one-market deal takes its amounts in that market's currency.",[482,511,513],{"name":512},"Visibility","Markets, Exclude markets, Exclude B2B customers (Shopify B2B only).",[482,515,517],{"name":516},"Converter apps","Five supported converter apps re-convert the widget's prices. Display only.",[307,519,521],{"id":520},"if-this-does-not-work","If this does not work",[262,523,524],{},"The failures most likely on this procedure, with the check that resolves each one.",[526,527,528,533,537,541],"accordion",{},[529,530,532],"accordion-item",{"label":531},"Product names show in your default language","Product names come from Shopify, not from the app. Translate them with a translation app and the widget picks them up.",[529,534,536],{"label":535},"The checkout label stays in the default language","Translate the deal's discount name, or the bar title when the deal has no discount name, in that language on the Translations page, then save. Shoppers in your primary language always see the original.",[529,538,540],{"label":539},"A translation stopped showing","The original text was edited after you translated it, so the old translation no longer applies. Translate the new text again.",[529,542,544],{"label":543},"A converter app shows a different total from checkout","Converter apps change only what the page shows. Checkout charges the amount Shopify calculates for the shopper's currency, and the widget without the converter shows that same amount.",{"title":546,"searchDepth":547,"depth":547,"links":548},"",2,[549,550,551,552,553,560,561],{"id":309,"depth":547,"text":310},{"id":319,"depth":547,"text":320},{"id":366,"depth":547,"text":367},{"id":389,"depth":547,"text":390},{"id":439,"depth":547,"text":440,"children":554},[555,557,558,559],{"id":448,"depth":556,"text":449},3,{"id":455,"depth":556,"text":456},{"id":462,"depth":556,"text":463},{"id":469,"depth":556,"text":470},{"id":476,"depth":547,"text":477},{"id":520,"depth":547,"text":521},"The widget's built-in texts in 20 languages, translating your deal texts and checkout labels, how prices follow the shopper's currency, and deals limited to some markets.","md",null,{},true,{"title":182,"description":562},"_4W1MOCIVmkHytNuv0CupL8ts8uEb71tdmbPoAJKraU",[570,572],{"title":178,"path":179,"stem":180,"description":571,"children":-1},"How the widget writes prices, compare-at prices, price rounding and the theme's own price, plus the sticky add to cart bar, the savings summary, low stock alerts and sold-out bars.",{"title":191,"path":192,"stem":193,"description":573,"children":-1},"Each published deal is one automatic discount in Shopify. What the checkout counts, the label shoppers see, which checkout routes apply it, and how to check a price yourself.",1791656488625]