More items
per checkout.
Less ugliness
per pixel.
BNDL is the bundle widget Shopify should've shipped. Five minutes to install. Themeable down to the pixel. Open source. Bye.
$19/mo or $190/yr · 14 days free · cancel from your Shopify admin.
Tees / Classic Crew
Heavyweight Tee
$49.30
Why does BNDL exist?
Because every bundle app I tried either looked like a 2014 Geocities popup or charged $99/month for a feature that should be a checkbox. So I built one that looks like it belongs on your store and costs less than the cheapest competitor's "Starter" plan.
BNDL does one thing well: quantity-break bundles with optional free gifts, applied at checkout via a real Shopify discount function. That's it. No upsell engine. No "AI cross-sell." No 47 settings panels. You install it, you ship it.
Bundles, properly.
Quantity breaks
Buy 2 save 15%, buy 3 save 25%. Or whatever ladder you want. Up to 20 tiers per product.
Free gifts at threshold
Hit 3 units? Free hat. Hit 5? Free hat + free shipping. Configurable per tier.
Discounts via Shopify Functions
The discount runs on Shopify's edge, not your server. Survives checkout, drawer cart, /cart page, all of it.
Theme app extension
No code added to your theme. Toggle on/off from the theme editor. Survives theme switches and updates.
Custom CSS · HTML slots · JS hooks
Eight named slots for custom HTML. Free-form CSS for the look. Optional lifecycle scripts for the wild ideas.
Open source
Read the code. Fork it. File a real issue. We respond like a human, because we are one.
It looks like part of your store.
Because it's a theme app extension rendered inside a shadow root, the widget inherits your font stack and respects your spacing — but nothing on your page can leak into it and break the layout.
Pick a template. Tweak the colors. Or paste your own CSS and go wild. The preview in the admin updates as you type.
- 10+ ready-made templates
- Per-slot color controls
- Per-slot font controls
- Custom CSS escape hatch
/* style it however */
.bar { border-radius: 20px; }
.bar[aria-selected="true"] {
transform: scale(1.02);
box-shadow: 0 0 0 2px var(--brand);
}
.badge { text-transform: uppercase; }Pick a template.
10+ professionally designed templates. One click, you're done.
Tune the colors.
Per-slot color and font controls. Live preview as you tweak.
Paste your CSS.
Or your JS. Or your HTML. Or all three. Acknowledge the warning, then ship.
One price. No tricks.
Pro Monthly
14 days free
- Unlimited bundles
- All design templates
- Custom CSS, HTML, JS
- Free gifts at threshold
- Reply-from-a-human support
Pro Annual
14 days free · works out to ~$16/mo
- Everything in Monthly
- 2 months free
- Same human, same support
Is this worth it?
That's ~$12,500 in extra monthly revenue, assuming a $50 AOV and a 25% bundle uplift.
Numbers are educated round numbers, not a guarantee. (We're not lawyers.)
Quick questions, quick answers.
Will it slow my store down?
No. The widget is a theme app extension (~9KB gzipped) loaded once per page. The discount runs on Shopify's edge, not your server.
What if I want to leave?
Click cancel in your Shopify admin. Bundles disappear from your store the moment you uninstall. We don't hold your data hostage. No exit interview.
Why is it called BNDL?
Because the vowels were taken. Also it looks cool in a logo. Mostly the second one.
Are you open source?
Yes. MIT. Read the code, fork it, file a real issue, run it yourself if you want. We'd love a star.
Does it work with [my theme]?
If your theme uses a standard product form (it does), then yes. We've tested Dawn, Refresh, Sense, Craft, plus a half-dozen popular paid themes.
Multiple bundles per product?
One bundle config per product, up to 20 quantity tiers per bundle. If you need different bundles for different audiences, segment via metafields or duplicate the product.
Will you build [feature]?
Maybe. Email us. We ship things that more than one person asks for.
Where's the demo?
Install it. 14 days free. That's the demo.
Stop reading.
Ship the bundles.
Install BNDL — 14 days free→No credit card. No "book a demo." No sales call.