[{"data":1,"prerenderedAt":592},["ShallowReactive",2],{"navigation_docs":3,"-bundles-deals-bundles-and-mix-and-match":256,"-bundles-deals-bundles-and-mix-and-match-surround":587},[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":141,"body":258,"description":580,"extension":581,"links":582,"meta":583,"navigation":584,"path":142,"seo":585,"stem":143,"__hash__":586},"docs\u002F2.bundles\u002F2.deals\u002F2.bundles-and-mix-and-match.md",{"type":259,"value":260,"toc":563},"minimark",[261,276,306,311,314,317,355,358,361,371,375,383,386,389,407,410,414,417,420,424,427,441,444,450,456,460,493,497,536,540,543],[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],{},"Products per bundle or set:"," Up to 20",[288,295,296,299],{},[265,297,298],{},"Discount:"," Whole sets only",[288,301,302,305],{},[265,303,304],{},"Alternative product:"," No discount",[307,308,310],"h2",{"id":309},"product-bundles","Product bundles",[262,312,313],{},"A Product bundle bar sells the page's product together with other products, as one offer. The template Complete the bundle starts with two bars: the page's product on its own at full price, and a bundle bar titled Complete the bundle, selected by default. To add a bundle bar to any deal, open Deal bars and choose Add bar, then Product bundle.",[262,315,316],{},"A new bundle bar holds one product, Default product, which stands for the product on the page. Choose Add product to add others, up to 20 products per bar with the page's product included. If you remove Default product, Add default product puts it back at the top. Each product in the bar has its own fields:",[285,318,319,325,331,337,343,349],{},[288,320,321,324],{},[265,322,323],{},"Variants:"," limits which variants of that product the shopper can pick, shown for products with more than one variant.",[288,326,327,330],{},[265,328,329],{},"Quantity:"," how many of that product one bundle holds.",[288,332,333,336],{},[265,334,335],{},"Price:"," Full price, Percentage off, Amount off or Fixed price, with Discount per item or Total price.",[288,338,339,342],{},[265,340,341],{},"Hide price:"," hides that product's price in the widget.",[288,344,345,348],{},[265,346,347],{},"Title and Image:"," the text and picture the widget shows for that product.",[288,350,351,354],{},[265,352,353],{},"Pre-selected variant:"," First available, or a variant you choose.",[262,356,357],{},"There is no single price for the whole bundle: each product carries its own discount. For a bundle that costs a set amount, give each product a Fixed price so that the totals add up to it. A product priced at Full price adds its regular price.",[262,359,360],{},"When a product has fewer tracked items in stock than its Quantity, the editor warns Required quantity is higher than stock. The check cannot see products set to keep selling when out of stock, so it can also warn for those.",[262,362,363,364,367,368,370],{},"The bar itself has a Layout (Horizontal or Vertical), Title, Subtitle and Label, and two options. Show products only when selected hides the products until the shopper selects the bar. Require variant selection makes the shopper pick each variant instead of starting on a preselected one. A bundle bar can also carry gifts, upsells and personalisation, which are covered in ",[365,366,145],"a",{"href":146}," and ",[365,369,149],{"href":150},".",[307,372,374],{"id":373},"mix-and-match","Mix and match",[262,376,377,378,382],{},"A Mix & Match bar sells a set with one price for the whole set, and lets the shopper swap some of its products for others you allow. There is no template for it: add it with Add bar, then Mix & Match. A new one is titled Bundle & Save, with the subtitle \"Save ",[379,380,381],"code",{},"{{saved_amount}}","\" and 15% off the set.",[262,384,385],{},"The set is made of slots, one item each, up to 20. The first slot is the page's product and stays first. Choose Add product to add more slots; Shopify bundles, products made of other products, are not offered. Every slot after the first has Variants, Move up, Move down and a remove button, a Title, and Select changeable products, where you pick up to 20 products the shopper can swap that slot for. A slot without changeable products reads Customers cannot change this product.",[262,387,388],{},"The bar's price is one discount for the set:",[285,390,391,396,401],{},[288,392,393,395],{},[265,394,335],{}," Full price, Percentage off, Amount off or Fixed price.",[288,397,398,400],{},[265,399,298],{}," a percentage of the whole set, or an amount off each set.",[288,402,403,406],{},[265,404,405],{},"Bundle price:"," with Fixed price, what one set costs.",[262,408,409],{},"Button text (Change by default) is the label on a slot the shopper can change, and Edit product modal sets the heading, texts, sizes and colors of the pop-up it opens, shared by every Mix & Match bar of the deal. The bar also has Show products only when selected, Show product prices and Require variant selection. Mix & Match bars take no gifts, upsells or personalisation.",[307,411,413],{"id":412},"alternative-product","Alternative product",[262,415,416],{},"An Alternative product bar sells a different product from the one on the page, for example a larger pack. Choose Select a product, limit its variants if you want, and set its Title (the product's name by default), Subtitle and Label.",[262,418,419],{},"This bar carries no discount: the app never prices it, so the shopper pays the product's regular price. It takes no gifts or upsells either. If the alternative should be cheaper, set that price on the product in Shopify, or use a quantity break or bundle bar instead.",[307,421,423],{"id":422},"what-checkout-needs","What checkout needs",[262,425,426],{},"A bundle or mix and match set is discounted only when it is complete in the cart. The widget adds the items with a hidden tag that ties them together, and only items added that way form a set: the same products added from their own pages do not.",[285,428,429,435],{},[288,430,431,434],{},[265,432,433],{},"Product bundles:"," the number of sets is the page product's items divided by its Quantity in the bundle. Every other product needs its own Quantity for each set. If one product is missing, the set gets no discount at all. Items past the last whole set pay full price.",[288,436,437,440],{},[265,438,439],{},"Mix and match:"," a set is one item for every slot, and the number of sets is the fewest items any slot has. A missing slot means no discount, and extra items pay full price. A percentage is taken off the total of all sets; an amount or a Bundle price is per set.",[262,442,443],{},"A complete mix and match set is merged into one cart line, titled with the bar's title, when Shopify allows it. Otherwise its products stay as separate lines with the same total price. Sets of a deal that shows on Selected collections, or that has collection exceptions, are never merged.",[262,445,446,447,449],{},"The merged line needs a product to sit on, so the app creates one hidden product for each Mix & Match bar, priced 0, with the product type Bundles app item. It is unlisted, and it stays in your product list after you uninstall the app. ",[365,448,233],{"href":234}," explains how to archive it.",[262,451,452,453,455],{},"Bundles and mix and match are more than one cart line, so the theme's Buy it now button is hidden while such a bar is selected, and the shopper checks out through the cart. ",[365,454,191],{"href":192}," covers the checkout routes.",[307,457,459],{"id":458},"building-a-bundle-in-four-steps","Building a bundle, in four steps.",[461,462,464,469,472,476,479,483,486,490],"steps",{"level":463},"3",[465,466,468],"h3",{"id":467},"start-from-complete-the-bundle","Start from Complete the bundle",[262,470,471],{},"Pick the template, or choose Add bar, then Product bundle, in an existing deal.",[465,473,475],{"id":474},"add-the-products","Add the products",[262,477,478],{},"Add product for each one, then set its Quantity and limit its Variants where needed.",[465,480,482],{"id":481},"price-each-product","Price each product",[262,484,485],{},"A Price per product. For a set total, use Fixed price on each and check that they add up.",[465,487,489],{"id":488},"check-and-publish","Check and publish",[262,491,492],{},"Watch for the stock warning, publish, then add the bundle to a cart and remove one item to see the discount go.",[307,494,496],{"id":495},"settings-reference","Settings reference",[498,499,500,505,509,513,517,521,525,529,532],"field-group",{},[501,502,504],"field",{"name":503},"Products per bar","Up to 20 per Product bundle bar, the page's product included. Up to 20 slots per Mix & Match bar.",[501,506,508],{"name":507},"Default product","Stands for the product on the page. The first slot of a Mix & Match bar is always the page's product.",[501,510,512],{"name":511},"Price, Product bundle","Per product: Full price, Percentage off, Amount off or Fixed price.",[501,514,516],{"name":515},"Price, Mix & Match","One for the set: a Discount, or a Bundle price per set.",[501,518,520],{"name":519},"Pre-selected variant","First available, or a variant you choose, per bundle product.",[501,522,524],{"name":523},"Select changeable products","Up to 20 products the shopper can swap a Mix & Match slot for.",[501,526,528],{"name":527},"Show products only when selected","Hides the bar's products until the shopper selects it.",[501,530,531],{"name":413},"Sells another product at its regular price. No discount, gifts or upsells.",[501,533,535],{"name":534},"Hidden products","One unlisted product per Mix & Match bar, type Bundles app item. It stays after uninstall.",[307,537,539],{"id":538},"if-this-does-not-work","If this does not work",[262,541,542],{},"The failures most likely on this procedure, with the check that resolves each one.",[544,545,546,551,555,559],"accordion",{},[547,548,550],"accordion-item",{"label":549},"The bundle got no discount at checkout","The set is incomplete. Every product needs its Quantity for each set, and only items added through the widget count. Add the bundle again from the product page and check that no item was removed or reduced.",[547,552,554],{"label":553},"A mix and match set shows as separate lines","Shopify did not allow the merge, or the deal shows on Selected collections or has collection exceptions. The separate lines are priced the same as one merged line.",[547,556,558],{"label":557},"An unfamiliar Bundles app item product is in the catalog","The app created it for a Mix & Match bar or a personalisation fee. Leave it while the deal is live: the set or fee needs it. After an uninstall you can archive it.",[547,560,562],{"label":561},"The alternative product shows no saving","Alternative product bars carry no discount. The shopper pays the product's own price.",{"title":564,"searchDepth":565,"depth":565,"links":566},"",2,[567,568,569,570,571,578,579],{"id":309,"depth":565,"text":310},{"id":373,"depth":565,"text":374},{"id":412,"depth":565,"text":413},{"id":422,"depth":565,"text":423},{"id":458,"depth":565,"text":459,"children":572},[573,575,576,577],{"id":467,"depth":574,"text":468},3,{"id":474,"depth":574,"text":475},{"id":481,"depth":574,"text":482},{"id":488,"depth":574,"text":489},{"id":495,"depth":565,"text":496},{"id":538,"depth":565,"text":539},"Product bundle bars, where each product has its own discount; Mix & Match bars, with one price for a set the shopper can change; Alternative product bars; and what checkout needs to discount a set.","md",null,{},true,{"title":141,"description":580},"jU5kBc3jjM8DJbananWci2YPjIq1cmV6PN6mtAgmlDQ",[588,590],{"title":137,"path":138,"stem":139,"description":589,"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.",{"title":145,"path":146,"stem":147,"description":591,"children":-1},"Free products and free shipping on a deal bar, gift selectors where the shopper chooses, progressive gifts that unlock with bigger bars, and when a gift is free in the cart.",1791656487117]