[{"data":1,"prerenderedAt":605},["ShallowReactive",2],{"navigation_docs":3,"-bundles-deals-upsells-add-ons-and-personalisation":256,"-bundles-deals-upsells-add-ons-and-personalisation-surround":600},[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":149,"body":258,"description":593,"extension":594,"links":595,"meta":596,"navigation":597,"path":150,"seo":598,"stem":151,"__hash__":599},"docs\u002F2.bundles\u002F2.deals\u002F4.upsells-add-ons-and-personalisation.md",{"type":259,"value":260,"toc":576},"minimark",[261,276,306,311,314,357,364,368,375,378,398,401,405,408,446,452,456,459,462,465,468,472,505,509,549,553,556],[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],{},"Bar upsells:"," Up to 5 per bar",[288,295,296,299],{},[265,297,298],{},"Checkbox upsells:"," Up to 5 per deal",[288,301,302,305],{},[265,303,304],{},"Personalisation fee:"," Required, never discounted",[307,308,310],"h2",{"id":309},"upsells-on-a-bar","Upsells on a bar",[262,312,313],{},"A bar upsell offers another product inside a bar, at its own price, which the shopper ticks to add. Open a quantity break, Buy X, get Y or Product bundle bar in Deal bars and choose Add upsell. Mix & Match and Alternative product bars take no upsells. Each Upsell is a section with Move up, Move down and Remove, and a new one starts at 20% off.",[285,315,316,322,328,334,345,351],{},[288,317,318,321],{},[265,319,320],{},"Select a product:"," the product to offer, with Variants to limit its variants and a Pre-selected variant (First available or one you choose).",[288,323,324,327],{},[265,325,326],{},"Quantity:"," items of the upsell per set of the bar.",[288,329,330,333],{},[265,331,332],{},"Price:"," Full price, Percentage off, Amount off or Fixed price, with Discount per item or Total price.",[288,335,336,339,340,344],{},[265,337,338],{},"Text:"," \"+ Add at ",[341,342,343],"code",{},"{{saved_percentage}}"," discount\" by default, with an Image and its size.",[288,346,347,350],{},[265,348,349],{},"Visible only when bar is selected:"," the upsell shows only inside the selected bar.",[288,352,353,356],{},[265,354,355],{},"Enable subscription:"," on by default. Follow deal subscription sells the upsell on the bar's selling plan when the shopper subscribes and the upsell can be bought on that plan. Always sell as subscription sells it on a selling plan even with a one-time purchase: the bar's plan when it can, else the first plan of the upsell's own product.",[262,358,359,360,363],{},"A new upsell starts unticked: the shopper ticks it to add it with the bar. Badges can be attached to an upsell, and they go when you remove it. ",[361,362,170],"a",{"href":171}," covers badges.",[307,365,367],{"id":366},"checkbox-add-ons","Checkbox add-ons",[262,369,370,371,374],{},"Checkbox upsells are add-on products shown below the bars, each with a checkbox. They show while a quantity break, Buy X, get Y or Product bundle bar is selected, not with a Mix & Match or Alternative product bar. Turn them on in the Checkbox upsells section with Enable checkbox upsells, give the group a Block title if you want one, and choose Add upsell, up to 5. A new one is 20% off, titled with the product's name and the subtitle \"Save ",[341,372,373],{},"{{saved_amount}}","!\".",[262,376,377],{},"Each one has a product with Variants and a Pre-selected variant, a Price, a Title and Subtitle, and Enable subscription as for a bar upsell, plus these options:",[285,379,380,386,392],{},[288,381,382,385],{},[265,383,384],{},"Show product options only when selected:"," hides the variant and quantity selectors until the shopper ticks the upsell. On by default.",[288,387,388,391],{},[265,389,390],{},"Match quantity with deal bar:"," adds as many of the add-on as the selected bar has items, or one with a bundle bar.",[288,393,394,397],{},[265,395,396],{},"Show quantity selector:"," the shopper can add up to 99 at this price.",[262,399,400],{},"Remove upsell takes one away, with its badges.",[307,402,404],{"id":403},"personalisation","Personalisation",[262,406,407],{},"Personalisation adds a text field per item, for an engraving or a name, and charges a fee per item. Open any bar except a Mix & Match bar and choose Add personalisation. The editor notes that the app creates a product in your store for the fee: it is hidden from your store's search, but may still be visible in your store's collections.",[285,409,410,416,422,428,434,440],{},[288,411,412,415],{},[265,413,414],{},"Price per item:"," the fee for each personalised item. It is required and must be above 0; the deal cannot be saved without it (\"Price per item is required\").",[288,417,418,421],{},[265,419,420],{},"Unit label and Compare at price:"," shown with the fee, for example \"per piece\" and a higher crossed-out price.",[288,423,424,427],{},[265,425,426],{},"Value label:"," the name the text is saved under in the cart and the order, Value by default. It cannot start with an underscore or contain brackets.",[288,429,430,433],{},[265,431,432],{},"Title:"," required, Add personalisation by default, with a Subtitle, Image and image size.",[288,435,436,439],{},[265,437,438],{},"Require personalisation:"," the shopper must personalise every item before adding to cart.",[288,441,442,445],{},[265,443,444],{},"Customize \"Add personalisation\" modal:"," the pop-up's Heading (Personalisation), Placeholder text (Type here), Character limit (on, 30 characters), Letters allowed and Numbers allowed, with its sizes and colors.",[262,447,448,449,451],{},"The fee is a product the app creates in your store, with the product type Bundles app item, one for each bar with personalisation. Its price is the Price per item. If you remove the personalisation, the app deletes that product about a day later. If you uninstall the app, it stays in your product list; ",[361,450,233],{"href":234}," explains what to do with it.",[307,453,455],{"id":454},"how-add-ons-are-priced-in-the-cart","How add-ons are priced in the cart",[262,457,458],{},"A bar upsell is discounted while the cart reaches the bar that owns it, like a gift: for quantity breaks and Buy X, get Y also at a bigger quantity bar, for a bundle only when the bundle is complete. Its Quantity is per set, and further items pay full price. If the shopper lowers the quantity below the bar, the upsell stays in the cart at full price.",[262,460,461],{},"A checkbox upsell is discounted while the cart reaches any bar of the deal. Without either option, one item is discounted for each set of the bar the cart reaches. With Match quantity with deal bar, the bar's quantity is discounted for each set, and a Fixed price is for that many. With Show quantity selector, every item up to 99 is discounted.",[262,463,464],{},"The personalisation fee is added as its own cart line for each item that has a text, linked to the item it belongs to, with the text saved on it under the Value label. An item left blank, when personalisation is not required, adds no fee. The fee is never discounted and never counts towards a bar's quantity. It is priced in your store currency, as the product's price, and Shopify converts it for shoppers in other currencies the way it converts your other products.",[262,466,467],{},"Upsells and personalisation make the offer more than one cart line, so the theme's Buy it now button is hidden while they are in the offer.",[307,469,471],{"id":470},"adding-an-upsell-in-four-steps","Adding an upsell, in four steps.",[473,474,476,481,484,488,491,495,498,502],"steps",{"level":475},"3",[477,478,480],"h3",{"id":479},"choose-where-it-goes","Choose where it goes",[262,482,483],{},"Add upsell inside a bar for an offer tied to that bar, or Checkbox upsells for add-ons under every bar.",[477,485,487],{"id":486},"pick-the-product","Pick the product",[262,489,490],{},"Select a product, limit its Variants and set the Pre-selected variant.",[477,492,494],{"id":493},"price-it","Price it",[262,496,497],{},"Pick the Price type and value, and for checkbox upsells decide on Match quantity with deal bar or Show quantity selector.",[477,499,501],{"id":500},"check-the-cart","Check the cart",[262,503,504],{},"Publish, tick the upsell on the product page, then change the cart quantity to see when its discount applies.",[307,506,508],{"id":507},"settings-reference","Settings reference",[510,511,512,517,521,525,529,533,537,541,545],"field-group",{},[513,514,516],"field",{"name":515},"Price","Full price, Percentage off, Amount off or Fixed price. New upsells start at 20% off.",[513,518,520],{"name":519},"Visible only when bar is selected","Bar upsells only. Shows the upsell inside the selected bar alone.",[513,522,524],{"name":523},"Enable subscription","On by default. Follow deal subscription, or Always sell as subscription.",[513,526,528],{"name":527},"Show product options only when selected","Checkbox upsells. Hides the variant and quantity selectors until ticked. On by default.",[513,530,532],{"name":531},"Match quantity with deal bar","Checkbox upsells. Adds as many as the selected bar has items.",[513,534,536],{"name":535},"Show quantity selector","Checkbox upsells. Up to 99 at the upsell's price.",[513,538,540],{"name":539},"Price per item","Personalisation fee per item. Required, above 0, never discounted.",[513,542,544],{"name":543},"Require personalisation","Every item must be personalised before adding to cart.",[513,546,548],{"name":547},"Character limit","In the Add personalisation modal. On, at 30 characters, by default.",[307,550,552],{"id":551},"if-this-does-not-work","If this does not work",[262,554,555],{},"The failures most likely on this procedure, with the check that resolves each one.",[557,558,559,564,568,572],"accordion",{},[560,561,563],"accordion-item",{"label":562},"The add-on lost its discount","The cart no longer reaches the bar the upsell belongs to, or holds more of the add-on than the deal discounts. The extra items pay full price, and nothing removes them from the cart.",[560,565,567],{"label":566},"The personalisation fee shows as its own line","That is how the fee is charged: one line of the app's fee product per personalised item, with the shopper's text on it.",[560,569,571],{"label":570},"The fee looks different in another currency","The fee is a product price in your store currency. Shopify converts it for other currencies like any other product, so it follows Shopify's conversion, not the deal's own amounts.",[560,573,575],{"label":574},"The deal will not save: Price per item is required","Personalisation always has a fee above 0. Enter a price, or remove the personalisation from the bar.",{"title":577,"searchDepth":578,"depth":578,"links":579},"",2,[580,581,582,583,584,591,592],{"id":309,"depth":578,"text":310},{"id":366,"depth":578,"text":367},{"id":403,"depth":578,"text":404},{"id":454,"depth":578,"text":455},{"id":470,"depth":578,"text":471,"children":585},[586,588,589,590],{"id":479,"depth":587,"text":480},3,{"id":486,"depth":587,"text":487},{"id":493,"depth":587,"text":494},{"id":500,"depth":587,"text":501},{"id":507,"depth":578,"text":508},{"id":551,"depth":578,"text":552},"Extra products inside a deal bar, checkbox add-ons below the bars, and a personalisation text per item with its fee: the settings, and how each is priced in the cart.","md",null,{},true,{"title":149,"description":593},"NVQYIxRVZbLMrbl1rG8YrLd3lV5XS2_zinuV_QI8St0",[601,603],{"title":145,"path":146,"stem":147,"description":602,"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.",{"title":153,"path":154,"stem":155,"description":604,"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.",1791656487883]