[{"data":1,"prerenderedAt":664},["ShallowReactive",2],{"navigation_docs":3,"-bundles-checkout-combinations-and-limits":256,"-bundles-checkout-combinations-and-limits-surround":659},[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":195,"body":258,"description":652,"extension":653,"links":654,"meta":655,"navigation":656,"path":196,"seo":657,"stem":197,"__hash__":658},"docs\u002F2.bundles\u002F4.checkout\u002F2.combinations-and-limits.md",{"type":259,"value":260,"toc":635},"minimark",[261,276,306,311,314,317,320,327,331,336,339,343,346,349,352,356,528,532,565,569,608,612,615],[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],{},"Combines with:"," Product, order and shipping discounts",[288,295,296,299],{},[265,297,298],{},"Live deals:"," Up to 25, shared with other apps",[288,301,302,305],{},[265,303,304],{},"Deal size:"," 10,000 bytes, warning from 80 percent",[307,308,310],"h2",{"id":309},"combining-with-other-discounts","Combining with other discounts",[262,312,313],{},"Every deal's discount is set to combine with product discounts, order discounts and shipping discounts. The app sets this when it is installed, and there is no setting for it in the app: no deal can be set to stand alone.",[262,315,316],{},"Discount codes still work next to a deal. Shopify combines two discounts only when each of them allows the other's kind, so a code combines with a deal only when the code itself is set to combine with product discounts. You set that on the code in Shopify admin, Discounts.",[262,318,319],{},"A cart line takes one product discount. When a deal and another product discount both reach the same line, Shopify decides which one applies to it; they do not add up on that line. Order and shipping discounts are worked out on top of the line prices.",[262,321,322,323,326],{},"Subscriptions: the deal's discount applies to one-time and subscription purchases, on every renewal, and stacks on the price of the selling plan. See ",[324,325,153],"a",{"href":154},".",[307,328,330],{"id":329},"two-deals-or-two-bundle-apps-on-one-product","Two deals, or two bundle apps, on one product",[262,332,333,334,326],{},"The widget shows one deal per product, chosen by market, then by the most specific targeting, then by the most recently published. That rule is the widget's only. At checkout every published deal runs its own discount, so two deals that target the same product can both try to price it, and Shopify's rules decide what applies to each line. The editor warns when you pick products that are already in another deal: Some of the products are in \"deal name\" deal which may result in conflicting discounts. Keep one published deal per product. See ",[324,335,157],{"href":158},[262,337,338],{},"Two bundle apps on one product conflict in the same way. Both set the theme's quantity box and both tag the cart line, and checkout applies one product discount per line, so the shopper may not pay the price the widget showed. The app turns nothing off when it finds another bundle app; it only writes a warning to the browser console for the one it recognises. Keep one bundle app per product.",[307,340,342],{"id":341},"shopifys-25-automatic-discounts-and-the-size-limit","Shopify's 25 automatic discounts, and the size limit",[262,344,345],{},"Shopify allows 25 active automatic discounts per store, counted across all apps and the discounts you make yourself. Each published deal holds one of them, so you can run at most 25 live deals, and fewer when other apps use some. The app sets no limit of its own. Publishing past the limit shows Store discount limit reached; in the editor you can choose Save as draft so your edits are kept, or Manage active deals to unpublish another one. Unpublishing or removing a deal frees its discount.",[262,347,348],{},"The limit also matters when a paused plan resumes: a deal whose discount can no longer be created goes back to draft, and Home shows A deal was unpublished, naming the limit of 25 automatic discounts.",[262,350,351],{},"Each deal's settings are compiled for the checkout, and the result must fit in 10,000 bytes. Products, variants and labels take the most room, and a checkout label translated into another language adds its translation. From 80 percent the editor shows This deal is close to the size limit. Beyond the limit it shows This deal is too large to publish and does not publish it. A deal with an A\u002FB test is one discount holding every variant, so all variants count together; the editor names a variant that is too large on its own.",[307,353,355],{"id":354},"all-limits","All limits",[357,358,359,372],"table",{},[360,361,362],"thead",{},[363,364,365,369],"tr",{},[366,367,368],"th",{},"What",[366,370,371],{},"Limit",[373,374,375,384,392,400,408,416,424,432,440,448,456,464,472,480,488,496,504,512,520],"tbody",{},[363,376,377,381],{},[378,379,380],"td",{},"Live deals",[378,382,383],{},"25 active automatic discounts per store, across all apps (Shopify); no app limit",[363,385,386,389],{},[378,387,388],{},"Bars per deal",[378,390,391],{},"1 to 20",[363,393,394,397],{},[378,395,396],{},"Products per Product bundle bar",[378,398,399],{},"20, the page's product included",[363,401,402,405],{},[378,403,404],{},"Slots per Mix & Match bar, products per slot",[378,406,407],{},"20 each",[363,409,410,413],{},[378,411,412],{},"Free gifts and gift selectors per bar",[378,414,415],{},"5 each; 20 products per selector",[363,417,418,421],{},[378,419,420],{},"Progressive gifts",[378,422,423],{},"20",[363,425,426,429],{},[378,427,428],{},"Bar upsells per bar",[378,430,431],{},"5",[363,433,434,437],{},[378,435,436],{},"Checkbox upsells",[378,438,439],{},"5; quantity up to 99",[363,441,442,445],{},[378,443,444],{},"Badges",[378,446,447],{},"30; one border badge per target",[363,449,450,453],{},[378,451,452],{},"Highlights per bar",[378,454,455],{},"6",[363,457,458,461],{},[378,459,460],{},"A\u002FB variants",[378,462,463],{},"2 to 4; one open test per deal",[363,465,466,469],{},[378,467,468],{},"Product targeting",[378,470,471],{},"200 products, 100 collections per pick",[363,473,474,477],{},[378,475,476],{},"Product picker for other products",[378,478,479],{},"The first 1,000 products",[363,481,482,485],{},[378,483,484],{},"Text fields",[378,486,487],{},"1,000 characters; Name and Discount name 255",[363,489,490,493],{},[378,491,492],{},"Custom CSS",[378,494,495],{},"20,000 characters per deal, and 20,000 for all deals",[363,497,498,501],{},[378,499,500],{},"Image uploads",[378,502,503],{},"JPG, PNG, GIF, WebP, SVG; up to 20 MB; 30 a minute",[363,505,506,509],{},[378,507,508],{},"Compiled deal size",[378,510,511],{},"10,000 bytes; warning from 80 percent",[363,513,514,517],{},[378,515,516],{},"Saves and publishes",[378,518,519],{},"30 a minute",[363,521,522,525],{},[378,523,524],{},"CSV export",[378,526,527],{},"10 an hour",[307,529,531],{"id":530},"staying-inside-the-limits-in-four-steps","Staying inside the limits, in four steps.",[533,534,536,541,544,548,551,555,558,562],"steps",{"level":535},"3",[537,538,540],"h3",{"id":539},"count-your-automatic-discounts","Count your automatic discounts",[262,542,543],{},"In Shopify admin, Discounts, count the active automatic discounts, including other apps' and your own. That number plus your live deals cannot pass 25.",[537,545,547],{"id":546},"unpublish-what-you-no-longer-run","Unpublish what you no longer run",[262,549,550],{},"Use the Published switch in the deal list. The deal and its settings stay in the app as a draft.",[537,552,554],{"id":553},"use-collections-for-big-deals","Use collections for big deals",[262,556,557],{},"A deal with many hand-picked products or variants grows fastest. Selected collections keep it small.",[537,559,561],{"id":560},"keep-one-deal-per-product","Keep one deal per product",[262,563,564],{},"Check the editor's conflict warning before you publish, and keep one bundle app per product.",[307,566,568],{"id":567},"settings-reference","Settings reference",[570,571,572,577,581,585,589,593,597,601,605],"field-group",{},[573,574,576],"field",{"name":575},"Combinations","Always product, order and shipping discounts. No setting in the app.",[573,578,580],{"name":579},"Discount codes","Combine with a deal when the code is set to combine with product discounts.",[573,582,584],{"name":583},"Automatic discounts","25 active per store across all apps (Shopify). One per published deal.",[573,586,588],{"name":587},"Deal size","10,000 bytes after compiling. Warning from 80 percent, refused above.",[573,590,592],{"name":591},"Deals per product","One in the widget. At checkout every published deal's discount runs.",[573,594,596],{"name":595},"Bars","1 to 20 per deal.",[573,598,600],{"name":599},"Gifts","5 single gifts and 5 gift selectors per bar, 20 products per selector, 20 progressive gifts.",[573,602,604],{"name":603},"Upsells","5 per bar, 5 checkbox upsells.",[573,606,607],{"name":444},"30 per deal.",[307,609,611],{"id":610},"if-this-does-not-work","If this does not work",[262,613,614],{},"The failures most likely on this page, with the check that resolves each one.",[616,617,618,623,627,631],"accordion",{},[619,620,622],"accordion-item",{"label":621},"Store discount limit reached","The store already has 25 active automatic discounts. Unpublish a deal you no longer run, or deactivate another automatic discount in Shopify admin, then publish again.",[619,624,626],{"label":625},"This deal is too large to publish","It has too many products, variants or labels for one discount. Split it into two deals, or target a collection instead of hand-picked products.",[619,628,630],{"label":629},"A discount code did not combine with the deal","Open the code in Shopify admin, Discounts, and check that it may combine with product discounts. If the code is itself a product discount on the same item, only one of the two applies to that line.",[619,632,634],{"label":633},"The checkout price differs from the widget on one product","Check for a second published deal on that product, or another bundle app's offer there. Keep one of each per product.",{"title":636,"searchDepth":637,"depth":637,"links":638},"",2,[639,640,641,642,643,650,651],{"id":309,"depth":637,"text":310},{"id":329,"depth":637,"text":330},{"id":341,"depth":637,"text":342},{"id":354,"depth":637,"text":355},{"id":530,"depth":637,"text":531,"children":644},[645,647,648,649],{"id":539,"depth":646,"text":540},3,{"id":546,"depth":646,"text":547},{"id":553,"depth":646,"text":554},{"id":560,"depth":646,"text":561},{"id":567,"depth":637,"text":568},{"id":610,"depth":637,"text":611},"How a deal's discount combines with codes and other discounts, what happens when two deals or two bundle apps share a product, Shopify's 25 automatic discounts, the deal size limit, and every other limit in the app.","md",null,{},true,{"title":195,"description":652},"UGVrWwvzgAYLp2Ng3y2Kvdbn65GIiecK9F-menKKHNo",[660,662],{"title":191,"path":192,"stem":193,"description":661,"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.",{"title":204,"path":205,"stem":206,"description":663,"children":-1},"What Home and the Analytics page show, where each number comes from, what each figure means, and why the numbers will not match your books to the cent.",1791656488690]