1
Create the bundle
In Knit, click Create bundle → Build with AI, then choose Make it manually here.In the Form tab:
- Name:
Walkthrough. Discount label:Buy more, save more. - Under Products used in logic, Add product and pick a test product with a few variants. Set Matching items must be to The same variant.
- Set up an offer for this bundle. In Tier #1 add a condition At least 2 from that product, and a reward Percentage discount 10% on it.
- Add tier. In Tier #2: At least 4, Percentage discount 20%.
2
Add the widget code
Open Display options → Product detail page → Code.Save. The Preview on the right draws the widget for the product.
- Paste the minimal example into JS code.
- Paste this into CSS code:
3
Add tier cards
The minimal example shows the row and the total but not the tiers. Add the tier cards helpers inside the renderer function, and put Save and check the Preview: two cards, “2+” and “4+”, each with its price after the tap. Tap one — the quantity jumps to meet it and the card shows as applied.
tierCards into the markup above the list:4
Preview on your store
Open the product page with You see the view each time you change a pick. Check that
?nameless_preview=true at the end of the URL. The widget appears below the theme’s add-to-cart button (the default Widget position).Open the browser console and run:tiers[].state follows your quantity and that summary.saved appears at 2 or more.A preview adds to the cart at full price — the discount covers Active bundles only.5
Activate and test the discount
Set Status: Active and save. Wait for Synced.On the product page (no preview parameter), set quantity 4 and click the widget’s add-to-cart button. In the cart, the line should show 20% off.
6
Verify the order
Complete a test order. In Shopify admin → Orders, open it: the line shows the
__FB_ATC_UID property and the bundle discount under the discount label you set.If the discount is missing, work through Troubleshooting.Before you ship
Run through the pre-ship checklist: onedefineRenderer with { viewVersion: 2 }, no event listeners or money arithmetic in the renderer, every view string escaped, and every word through ctx.t.