[{"data":1,"prerenderedAt":590},["ShallowReactive",2],{"navigation_docs":3,"-bundles-deals-products-dates-and-visibility":256,"-bundles-deals-products-dates-and-visibility-surround":585},[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":157,"body":258,"description":578,"extension":579,"links":580,"meta":581,"navigation":582,"path":158,"seo":583,"stem":159,"__hash__":584},"docs\u002F2.bundles\u002F2.deals\u002F6.products-dates-and-visibility.md",{"type":259,"value":260,"toc":561},"minimark",[261,276,306,311,314,334,337,340,344,347,371,374,380,384,387,413,419,422,426,429,441,447,453,457,490,494,534,538,541],[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],{},"Targeting:"," Products or collections, not variants",[288,295,296,299],{},[265,297,298],{},"Dates:"," Your browser's time zone",[288,301,302,305],{},[265,303,304],{},"Deals shown per product:"," One, but every discount runs",[307,308,310],"h2",{"id":309},"choosing-products","Choosing products",[262,312,313],{},"The Products section of the editor decides on which product pages the deal shows. Visibility has three choices:",[285,315,316,322,328],{},[288,317,318,321],{},[265,319,320],{},"All products:"," every product, the default. Select exceptions opens a menu, Products or Collections, to leave some out; they are then listed under Exceptions.",[288,323,324,327],{},[265,325,326],{},"Selected products:"," only the products you pick with Select products.",[288,329,330,333],{},[265,331,332],{},"Selected collections:"," every product in the collections you pick with Select collections.",[262,335,336],{},"The picker takes up to 200 products, or 100 collections, at a time. Targeting works on whole products: there is no way to show a deal for some variants of a product only.",[262,338,339],{},"When products you pick are already in another deal, the editor warns: Some of the products are in \"deal name\" deal which may result in conflicting discounts, with the products listed. Take that warning seriously, as the last section explains.",[307,341,343],{"id":342},"names-and-active-dates","Names and active dates",[262,345,346],{},"The Settings section starts with three names:",[285,348,349,355,361],{},[288,350,351,354],{},[265,352,353],{},"Name (only visible for you):"," the deal's name in the app. It must be unique.",[288,356,357,360],{},[265,358,359],{},"Block title:"," the heading above the bars on the storefront.",[288,362,363,366,367,370],{},[265,364,365],{},"Discount name (shown in cart\u002Fcheckout):"," the label of the discount at checkout. Without one, the bar's title is used. ",[368,369,191],"a",{"href":192}," covers the label.",[262,372,373],{},"Active dates sets when the deal runs: a Start date and Start time, and with Set end date on, an End date and End time. Times are typed as HH:MM and are in the time zone of the browser you are using, which the field shows next to the time. Turning on Set end date fills in midnight at the end of the start day, or this time tomorrow if that has passed.",[262,375,376,377,379],{},"A published deal whose start is in the future is Scheduled, and shows once it starts. A deal whose end date has passed is Expired: it stays published, but the widget hides it and its discount stops at the end date, because the Shopify discount carries the same start and end. The app checks statuses every minute. ",[368,378,124],{"href":125}," lists every status.",[307,381,383],{"id":382},"markets-b2b-and-the-widget-only-rule","Markets, B2B and the widget-only rule",[262,385,386],{},"The Visibility part of Settings has the rest of the rules:",[285,388,389,395,401,407],{},[288,390,391,394],{},[265,392,393],{},"Markets:"," All, or one market. A deal set to one market shows only to shoppers in that market, and Shopify applies its discount only there.",[288,396,397,400],{},[265,398,399],{},"Exclude markets:"," shown with All. Tick it and choose the Excluded markets where the deal does not show or apply.",[288,402,403,406],{},[265,404,405],{},"Exclude B2B customers:"," buyers of a Shopify B2B company get neither the widget nor the discount. The editor notes it works with Shopify B2B only: third-party B2B apps are not supported. With it off, B2B carts are priced like any other.",[288,408,409,412],{},[265,410,411],{},"Apply discount only via bundle widget:"," only items added through the widget get the discount. The editor notes that items added via POS, non-bundle product pages, or other apps won't receive the bundle discount.",[262,414,415,416,418],{},"When a deal is set to one market, its amounts are entered in that market's currency when the market has its own. They are exact in that currency and converted for any other. If the app cannot read the market's exchange rate, the field says so and the amounts stay in your store currency. ",[368,417,182],{"href":183}," covers currencies.",[262,420,421],{},"Without the widget-only rule, every item of a targeted product counts towards a quantity break or Buy X, get Y, however it reached the cart: the theme's Add to cart, a collection page, another app, a draft order or POS. With the rule on, only lines the widget added are discounted. Bundles and mix and match always need items added through the widget.",[307,423,425],{"id":424},"when-several-deals-share-a-product","When several deals share a product",[262,427,428],{},"The widget shows one deal per product. It first drops the deals that are outside their dates, set to another market, excluding the shopper's market, or excluding B2B buyers when the shopper is one. From the rest it picks:",[430,431,432,435,438],"ol",{},[288,433,434],{},"A deal set to the shopper's market over a deal for all markets.",[288,436,437],{},"The most specific targeting: Selected products, then Selected collections, then All products with exceptions, then All products.",[288,439,440],{},"The most recently published version.",[262,442,443,444,446],{},"The Bundle deal app block has a Deal ID setting that shows one of that product's eligible deals instead of the automatic choice, but the app does not display deal ids yet. ",[368,445,253],{"href":254}," covers the app block.",[262,448,449,450,452],{},"The one-deal rule is the widget's only. At checkout every published deal runs its own discount, so a product in two published deals can be priced by either, following Shopify's rules for which discounts apply to a line. Give each product one published deal. ",[368,451,195],{"href":196}," explains how deals combine with other discounts.",[307,454,456],{"id":455},"targeting-a-deal-in-four-steps","Targeting a deal, in four steps.",[458,459,461,466,469,473,476,480,483,487],"steps",{"level":460},"3",[462,463,465],"h3",{"id":464},"pick-the-products","Pick the products",[262,467,468],{},"All products with exceptions, Selected products, or Selected collections. Read the conflict warning if it appears.",[462,470,472],{"id":471},"set-the-dates","Set the dates",[262,474,475],{},"Start date and time, and an end date if the offer ends. Check the time zone shown next to the time.",[462,477,479],{"id":478},"set-markets-and-buyers","Set markets and buyers",[262,481,482],{},"Markets, Exclude markets, Exclude B2B customers, and Apply discount only via bundle widget if only widget orders should be discounted.",[462,484,486],{"id":485},"publish-and-check","Publish and check",[262,488,489],{},"Publish, then open a product page from the deal's products. The deal list shows Active or Scheduled.",[307,491,493],{"id":492},"settings-reference","Settings reference",[495,496,497,502,506,510,514,518,522,526,530],"field-group",{},[498,499,501],"field",{"name":500},"Visibility","All products (with optional exceptions), Selected products, or Selected collections.",[498,503,505],{"name":504},"Exceptions","Products or collections left out of All products.",[498,507,509],{"name":508},"Picker limits","200 products or 100 collections at a time. No variant targeting.",[498,511,513],{"name":512},"Start and end","Date and HH:MM time in your browser's time zone. The end date is optional.",[498,515,517],{"name":516},"Markets","All or one market. Enforced by Shopify at checkout as well as by the widget.",[498,519,521],{"name":520},"Exclude markets","With All only. The excluded markets get neither widget nor discount.",[498,523,525],{"name":524},"Exclude B2B customers","Shopify B2B buyers get neither widget nor discount. Third-party B2B apps are not supported.",[498,527,529],{"name":528},"Apply discount only via bundle widget","Off by default. On, items added any other way pay full price.",[498,531,533],{"name":532},"Priority","Shopper's market, then most specific targeting, then the most recently published version.",[307,535,537],{"id":536},"if-this-does-not-work","If this does not work",[262,539,540],{},"The failures most likely on this procedure, with the check that resolves each one.",[542,543,544,549,553,557],"accordion",{},[545,546,548],"accordion-item",{"label":547},"A different deal shows on the product","Another eligible deal wins the priority order: a deal for the shopper's market, then the more specific targeting, then the one published last. Narrow or unpublish the deal you do not want there.",[545,550,552],{"label":551},"The deal shows in one country only","Markets is set to one market, or Exclude markets leaves others out. Set Markets to All and check the excluded list.",[545,554,556],{"label":555},"A B2B buyer sees no deal","Exclude B2B customers is on. Turn it off to show and price the deal for Shopify B2B buyers too.",[545,558,560],{"label":559},"The deal starts or ends an hour off","Dates are entered in the time zone of the browser you used, shown next to the time. Check that zone, then correct the time.",{"title":562,"searchDepth":563,"depth":563,"links":564},"",2,[565,566,567,568,569,576,577],{"id":309,"depth":563,"text":310},{"id":342,"depth":563,"text":343},{"id":382,"depth":563,"text":383},{"id":424,"depth":563,"text":425},{"id":455,"depth":563,"text":456,"children":570},[571,573,574,575],{"id":464,"depth":572,"text":465},3,{"id":471,"depth":572,"text":472},{"id":478,"depth":572,"text":479},{"id":485,"depth":572,"text":486},{"id":492,"depth":563,"text":493},{"id":536,"depth":563,"text":537},"Which products show a deal, when it runs, in which markets and for which buyers, what the widget-only setting leaves out, and which deal shows when several share a product.","md",null,{},true,{"title":157,"description":578},"XPPFI3aKCr3McaDuyhMAlNpqaz8xSjfPivhSi8yyfjE",[586,588],{"title":153,"path":154,"stem":155,"description":587,"children":-1},"Offering one-time or subscribe next to a deal, for products that have selling plans from a subscription app: how the choice looks, how bars and add-ons use plans, and how the price is worked out.",{"title":166,"path":167,"stem":168,"description":589,"children":-1},"Templates and the live preview, layouts, colors, fonts, brand colors, custom CSS and accessibility. Badges, timers, swatches, prices and the sticky bar each have their own page.",1791656488120]