[{"data":1,"prerenderedAt":545},["ShallowReactive",2],{"navigation_docs":3,"-bundles-start-development-stores-and-testing":256,"-bundles-start-development-stores-and-testing-surround":540},[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":128,"body":258,"description":533,"extension":534,"links":535,"meta":536,"navigation":537,"path":129,"seo":538,"stem":130,"__hash__":539},"docs\u002F2.bundles\u002F1.start\u002F4.development-stores-and-testing.md",{"type":259,"value":260,"toc":517},"minimark",[261,276,306,311,314,317,324,328,331,345,348,375,378,381,384,396,400,403,406,409,415,419,452,456,490,494,497],[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],{},"Development stores:"," Free, every feature",[288,295,296,299],{},[265,297,298],{},"Best for trying a live store:"," Duplicate theme plus widget-only",[288,301,302,305],{},[265,303,304],{},"Test orders in analytics:"," Never counted",[307,308,310],"h2",{"id":309},"development-stores","Development stores",[262,312,313],{},"On a Shopify development store, TreStack Bundles is free, with every feature, and needs no plan: the app does not send it to the Plans page. A banner says This app is free for development stores, and that when the store goes live, all bundle deals will be hidden until you choose a plan and approve the subscription. You can close the banner; View plans opens the Plans page.",[262,315,316],{},"You can still pick a plan on a development store, for example to see the approval screen. It is billed in test mode, so no money changes hands.",[262,318,319,320,323],{},"When a development store goes live without a plan, every deal pauses: the widget hides, the discounts are removed, and the deal list shows the deals as Paused. The admin stays open. Choose a plan and approve it in Shopify, and the deals come back. A deal whose discount cannot be created again, because the store already has 25 active automatic discounts, returns to draft instead, and Home says A deal was unpublished. ",[321,322,233],"a",{"href":234}," has the details.",[307,325,327],{"id":326},"testing-without-shoppers-seeing-it","Testing without shoppers seeing it",[262,329,330],{},"Two things go live when you publish a deal, and a safe test has to keep both away from shoppers:",[285,332,333,339],{},[288,334,335,338],{},[265,336,337],{},"The widget"," shows on every theme where the Bundle deals app embed is on. If your live theme has the embed on, a published deal is in front of shoppers within about a minute.",[288,340,341,344],{},[265,342,343],{},"The discount"," is a Shopify automatic discount, created on publish. It works at checkout whatever the theme shows. A quantity break, for example, also prices 2 units a shopper added with the theme's own Add to cart button.",[262,346,347],{},"To try a deal on a store that sells, work on a copy of the theme:",[349,350,351,357,363,369],"ol",{},[288,352,353,356],{},[265,354,355],{},"Duplicate your live theme"," (Online Store, Themes, Duplicate), turn the Bundle deals embed on in the copy only, and save it. Leave the embed off in the live theme while you test.",[288,358,359,362],{},[265,360,361],{},"Turn on Apply discount only via bundle widget",", in the deal's Settings, under Visibility. With it on, only items added through the widget get the discount. Since shoppers on your live theme have no widget, they get no discount either.",[288,364,365,368],{},[265,366,367],{},"Target one product",", with Selected products, so a mistake touches as little as possible.",[288,370,371,374],{},[265,372,373],{},"Preview the copy"," from Online Store, Themes, and open the product there.",[262,376,377],{},"When you are happy, turn the embed on in the live theme (or publish the copy), and turn widget-only off if you want the theme's own Add to cart to count too.",[262,379,380],{},"While you test on a copy, Home still says Store widget is disabled, and may show a banner that the store widget is not visible on product pages, because the status reads your live theme only. That is expected.",[262,382,383],{},"Save as draft keeps a deal off the storefront and creates no discount, but a draft cannot be previewed on the storefront either: View in store and theme previews show published deals only. The editor's own Preview, with Country previewing and Product previewing, shows a draft with your real prices.",[262,385,386,387,391,392,395],{},"Two storefront address tricks help while testing. Adding ",[388,389,390],"code",{},"?bndl=off"," to a storefront address turns the widget off for that page load, to compare the page with and without it. Adding ",[388,393,394],{},"?bndl=dev"," shows the widget as usual but does not send that page's deal views and add-to-carts to analytics. Neither hides anything from shoppers, and both apply only to the address you add them to.",[307,397,399],{"id":398},"test-orders-and-analytics","Test orders and analytics",[262,401,402],{},"Shopify marks orders paid with a test payment method as test orders: the Bogus Gateway on a development store, or Shopify Payments in test mode. TreStack Bundles leaves test orders out of every figure, and out of the added revenue your plan measures. That is why a development store shows no orders, revenue or added revenue, however many test orders you place.",[262,404,405],{},"Visitors still count. A visit with the widget on screen counts when the shopper (or you) allowed analytics in the store's cookie banner. Nothing is counted in the theme editor.",[262,407,408],{},"A real order you place to test a live store is a real order: it counts in analytics and in billable added revenue, and refunding or cancelling it later does not take it out. Use Shopify's test mode for test purchases.",[262,410,411,412,414],{},"Figures are recomputed every 15 minutes, so a new order or visit takes up to that long to show. ",[321,413,204],{"href":205}," explains every figure.",[307,416,418],{"id":417},"testing-a-deal-in-four-steps","Testing a deal, in four steps.",[420,421,423,428,431,435,438,442,445,449],"steps",{"level":422},"3",[424,425,427],"h3",{"id":426},"duplicate-the-theme","Duplicate the theme",[262,429,430],{},"Turn the Bundle deals embed on in the copy only. Keep it off in the live theme while you test.",[424,432,434],{"id":433},"publish-on-one-product","Publish on one product",[262,436,437],{},"Selected products, with Apply discount only via bundle widget on. Publish, then wait about a minute.",[424,439,441],{"id":440},"run-a-test-order","Run a test order",[262,443,444],{},"Open the product in the theme preview, pick a bar, add it to the cart, and pay with Shopify's test mode.",[424,446,448],{"id":447},"check-the-cart-and-checkout","Check the cart and checkout",[262,450,451],{},"The prices, the discount line with your discount name or bar title, gifts and upsells. Then try changing quantities in the cart.",[307,453,455],{"id":454},"settings-reference","Settings reference",[457,458,459,464,468,472,476,480,484,487],"field-group",{},[460,461,463],"field",{"name":462},"Development store price","Free, with every feature, no plan needed. A plan picked on one is billed in test mode.",[460,465,467],{"name":466},"Go-live","When a development store goes live without a plan, every deal pauses until a plan is approved.",[460,469,471],{"name":470},"Test orders","Never counted in analytics or in billable added revenue. Real orders count even if refunded later.",[460,473,475],{"name":474},"Theme preview","Shows published deals on any theme where the app embed is on, including an unpublished copy.",[460,477,479],{"name":478},"Embed status in the app","Reads the live theme only. A copy with the embed on still reads as disabled.",[460,481,483],{"name":482},"Apply discount only via bundle widget","In Settings, Visibility. Only items added through the widget get the discount, so shoppers without the widget get none.",[460,485,486],{"name":390},"On a storefront address, turns the widget off for that page load.",[460,488,489],{"name":394},"On a storefront address, shows the widget but keeps that page's deal views and add-to-carts out of analytics.",[307,491,493],{"id":492},"if-this-does-not-work","If this does not work",[262,495,496],{},"The failures most likely on this procedure, with the check that resolves each one.",[498,499,500,505,509,513],"accordion",{},[501,502,504],"accordion-item",{"label":503},"Analytics show visitors but no orders","Test orders are never counted, so on a development store, or with Shopify Payments in test mode, orders, revenue and added revenue stay at zero. Visitors still count. Figures also lag by up to 15 minutes.",[501,506,508],{"label":507},"All deals vanished after the store went live","The store left development without a plan, so its deals paused. Open the app: a Your bundle deals are paused banner leads to the Plans page. Choose a plan and approve it in Shopify, and the deals come back. A deal that cannot get its discount back returns to draft; publish it again once there is room.",[501,510,512],{"label":511},"The widget is missing in the theme preview","Check that the Bundle deals embed is on and saved in the copy you are previewing, that the deal is published and Active (a draft never shows on the storefront), that the product is one the deal targets, and that the preview's country is in the deal's markets.",[501,514,516],{"label":515},"A shopper got the discount during a test","The discount works at checkout even where the widget is hidden. Turn on Apply discount only via bundle widget for the deal, or unpublish it with the Published switch until the test can run on a copy of the theme.",{"title":518,"searchDepth":519,"depth":519,"links":520},"",2,[521,522,523,524,531,532],{"id":309,"depth":519,"text":310},{"id":326,"depth":519,"text":327},{"id":398,"depth":519,"text":399},{"id":417,"depth":519,"text":418,"children":525},[526,528,529,530],{"id":426,"depth":527,"text":427},3,{"id":433,"depth":527,"text":434},{"id":440,"depth":527,"text":441},{"id":447,"depth":527,"text":448},{"id":454,"depth":519,"text":455},{"id":492,"depth":519,"text":493},"Development stores use TreStack Bundles free. How to try a deal on a live store without shoppers seeing or getting it, how test orders and analytics behave, and what happens when a development store goes live.","md",null,{},true,{"title":128,"description":533},"gE2LJpZ9-cuuCCdR4pZqha2JLbmkv6uaWSm27tvcIDo",[541,543],{"title":124,"path":125,"stem":126,"description":542,"children":-1},"The deal editor and its sections, what Publish, Save and Save as draft do, the statuses in the deal list, and how duplicating and removing a deal work.",{"title":137,"path":138,"stem":139,"description":544,"children":-1},"How quantity break and Buy X, get Y bars are priced, how the shopper can fill a bar with other products, and how the cart decides which bar applies.",1791656487018]