Most shops already sell bundles. The problem is they don't know they're selling them, so they aren't priced right. A mechanic says "while I'm in there I'll swap your chain and cables for a flat rate," and that's a bundle. It just isn't tracked, isn't repeatable, and half the time the "flat rate" leaks 15 points of margin because nobody did the parts math before quoting it.
This piece is about fixing that specific gap: turning ad-hoc "while I'm in there" discounts into productized bundle recipes with real margin math, so your bike shop service bundles attach rate climbs without the bundle becoming a slow bleed on your service P&L.
Staying narrow on purpose here. This isn't about memberships or recurring plans—that's a different animal. It's about the one-time bundle sitting at your service counter: how to build it, price it, place it in your POS, and test it over two weeks.
The bundle margin trap, and why it's so easy to fall into
Nobody tells you this about bundles: a bundle doesn't lower your margin percentage automatically. It lowers margin when you discount the whole thing against the sum of its parts—and then price off the retail total instead of the cost total.
-
Chain (cost $18, retail $42)
-
Cassette (cost $44, retail $85)
-
Cables & housing (cost $11, retail $28)
-
Labor
1.2 hours
They advertise it at "$199, save $40." Sounds great at the counter. But watch what happens to the dollars. The three parts cost $73. Retail standalone would've been $155 in parts plus labor. By pricing the bundle at $199 and anchoring the savings against the parts' retail total, they've eaten most of that discount out of parts margin—which is already the thinnest margin they have.
The mistake isn't bundling. The mistake is discounting off retail and absorbing the whole cut in the lowest-margin component. Labor is where your real margin lives. Parts are where it's thin. So when a bundle has to "give" something, it should give a little labor efficiency—not parts margin you can't afford.
Build the recipe before you build the price
Think of every bundle like a kitchen recipe card. Fixed ingredients, fixed cost, a target plate price, and a known margin. If you can't write the card, you can't sell the dish profitably.
Never miss a sale or service appointment again.
Bicyclly helps you manage every sale, repair, and booking with ease and accuracy.
- Unified inventory and sales tracking
- Automated customer notifications
- Service appointment scheduling
No credit card required
A bundle recipe card needs five lines:
-
Components — exact parts (SKUs), not categories
-
True parts cost — your landed cost, not last year's cost
-
Labor time — real bay minutes, not optimistic minutes
-
Target blended margin — the number the bundle must hold
-
Floor price — the price below which the counter can't go
The reason you set a floor and not just a target: counter staff will negotiate. You want them negotiating down to a line they can see, not down to zero. Bundles leak margin at the counter far more than on the price tag. The tag is fine. The verbal "I'll knock off twenty bucks" is what kills you.
The margin math, laid out
| Component | Cost | Standalone Retail | In Bundle |
|---|---|---|---|
| Chain | $18 | $42 | $42 |
| Cassette | $44 | $85 | $85 |
| Cables/housing | $11 | $28 | $28 |
| Labor (1.2 hr @ $95) | ~$36 loaded | $114 | $108 |
| Totals | ~$109 | $269 | $263 |
The "save $6" version feels too small to a customer, obviously. So here's the move: don't discount the price. Discount the time, add a perceived freebie, and keep the dollars. Bundle it at $249 with a "free safety inspection + chain wax" that costs you 10 minutes and a few cents of wax. Customer sees a $20 savings plus two free things. You're sitting at roughly 56% blended margin instead of the 45% the "$199 save $40" version delivered.
Same parts. Same labor. Different framing. About 11 margin points saved. That's the whole game.
POS placement heuristics: where the bundle has to live
A bundle that's technically available but buried three menu-taps deep doesn't exist. Attach rate is overwhelmingly a placement problem, not a demand problem.
-
The bundle must be a single POS button, not a build-your-own. Every added tap drops attach. If the mechanic has to ring up four line items to assemble the bundle, they'll skip it when they're slammed.
-
Place bundles at the point of the trigger job, not on a separate "packages" screen. When someone's checking in for a flat repair, the "flat + tire + tube + sealant" bundle should surface on that ticket, not in a promotions menu nobody opens.
-
Cap it at three bundles on the counter. More than three and staff can't remember them, so they recommend none. Three is about the ceiling for what someone at a busy counter will actually pitch from memory.
-
Anchor the bundle next to the standalone price. Show "$249 bundle / $269 separately" on the same line. The comparison does the selling.
This mirrors what we covered in the accessory attach experiments post—attach happens at the moment of a natural trigger, and it dies the second it requires extra effort from whoever's ringing it up. Bundles behave exactly the same way. Friction at the register beats demand every time.
Counter scripts that don't feel like upselling
The reason most attach scripts fail is they sound like a pitch. "Would you also like to add..." triggers the no-reflex immediately. Scripts that work frame the bundle as the obvious version of what the customer already asked for.
"Flat repair trigger: > \"I can just patch this, or—since your tire's showing some wear anyway—the flat bundle swaps the tire, tube, and adds sealant so you're not back in here in three weeks. It's $X and saves you a second trip.\""
"Tune-up trigger: > \"Your drivetrain's pretty stretched. The refresh bundle does the chain and cassette together while I've already got the wheel off—cheaper than doing them as separate visits later.\""
"New-bike pickup trigger: > \"Most people add the setup bundle on day one—bottle cages, a decent pump, and a 30-day check. Keeps everything dialed while the cables settle in.\""
None of them say "would you like to add." They say "here's the version that actually solves your problem." The bundle becomes the default. The single service becomes the stripped-down option.
One operational note worth mentioning: scripts only stick if they're attached to the ticket type. If your system surfaces the right script when a flat-repair ticket opens, the mechanic doesn't have to remember which pitch goes with which job. That's the difference between a script that lives on a laminated card nobody reads and one that actually gets said out loud.
When bundles make sense—and when they don't
Bundles aren't universally good. Pushing them in the wrong spots trains customers to wait for the "deal" and slowly erodes your standalone pricing.
When bundling actually makes sense:
-
The jobs share labor (wheel's already off, bar tape's already coming up)
-
The parts have natural adjacency (chain + cassette, tire + tube + sealant)
-
The trigger job is high-frequency (flats, tune-ups, new-bike setup)
When it's a bad idea:
-
Bundling your highest-margin standalone service with low-margin parts—you'll dilute your best earner
-
"Everything" bundles covering 8 components; customers can't evaluate them, so they don't buy
-
Discounting bundles during peak season when the bay's already full—you're giving margin away on work you'd have gotten regardless
Who should not run bundles yet: shops without clean parts cost data. If your landed costs are stale or your POS cost fields are wrong, your bundle margin math is fiction. Fix cost accuracy first, then bundle.
A two-week A/B test kit to prove it
Don't roll bundles out shop-wide on a guess. Run a tight two-week test. The point isn't a perfect experiment—it's enough signal to know whether the bundle holds margin and lifts attach.
Here's the process:
-
Pick one trigger job with enough volume (flats or tune-ups usually run 15–25 tickets a week—enough to read something meaningful).
-
Week 1 is your baseline. Ring jobs normally. Record attach rate and blended margin per ticket. No bundle pushed.
-
Week 2, turn on the bundle with the single-button POS setup and the counter script. Same staff, same hours.
-
Track three numbers only attach rate (% of trigger tickets that took the bundle), blended margin % on those tickets, and average ticket value.
-
Compare the two weeks. If attach lifts but margin % drops below your floor, the bundle's priced wrong—re-cut it. If attach barely moves, it's a placement or script problem, not a price problem.
The checklist to run it cleanly:
-
- [ ] One trigger job only (don't test three bundles at once)
-
- [ ] Bundle is a single POS button before you start
-
- [ ] Counter script printed and said out loud, not optional
-
- [ ] Baseline week logged before you change anything
-
- [ ] Floor price locked so staff can't discount past it
-
- [ ] Daily tally, not a week-end scramble to reconstruct numbers
The most common test mistake: changing the price and the script and the placement all at once, then having no idea which lever moved the needle. Change one thing. If you must change the bundle mid-test, restart the clock.
Below is a simple workflow diagram for running the two-week A/B test.
Change one thing. If you must change the bundle mid-test, restart the clock.
The dashboard that keeps bundles honest
Once a bundle survives the test and goes live, it needs two numbers watched weekly or it'll quietly drift. A simple dashboard—even a spreadsheet pulled from your POS exports—should show:
-
Attach rate per bundle (trend over weeks; a slow decline usually means staff stopped pitching it)
-
Blended margin per bundle vs. floor (the leak indicator—if realized margin keeps landing below the card's target, someone's discounting at the counter)
-
Bundle mix (which of your three bundles is actually selling; kill the dead one and test a replacement)
The leak you're hunting is the gap between card margin and realized margin. The card says 56%. The POS says the bundle's actually clearing 48% on average. That 8-point gap is the sound of your counter giving away money one "I'll round it down" at a time. Bundle margin erosion is almost always invisible until you put it on a dashboard next to the target—then it's obvious.
A real scenario
A two-mechanic shop doing roughly 70–80 service tickets a week had a "while I'm in there" habit—mechanics freelancing discounts on combined work. No tracked bundles, just verbal deals. Their service margin was fine on paper but soft in reality, somewhere in the high 40s when it should've been mid-50s.
They built three bundle cards (flat refresh, drivetrain refresh, new-bike setup), each with a floor price and a single POS button. Counter scripts tied to each trigger job. Then they ran the two-week test on flats first.
Attach on the flat bundle landed around 30% of flat tickets in week two, up from basically zero tracked before. Realized blended margin on those tickets held at roughly 54%—close enough to the 56% card target that the counter clearly wasn't leaking much. Average flat ticket moved from the mid-$20s to just over $60.
Nothing dramatic. No revenue doubling. Just a quiet shift from untracked giveaways to priced, repeatable bundles that held their margin. Over a full season, the drivetrain and setup bundles added more lift than the flat one, mostly because the parts adjacency was stronger.
Where to go from here
Bundles don't fail because customers don't want them. They fail because shops price them off retail, hide them in the POS, and let the counter discount them into the ground. Build the recipe card first. Set a floor. Make it one button. Write the script. Then test it for two weeks before you believe anything.
If you're also working on the add-on side of this—getting accessories to attach at pickup and checkout—the mechanics overlap heavily with what's in the click-and-collect pickup workflow and the monetized clinics playbook, since both lean on the same idea: the sale happens at the trigger moment, and margin survives only when the offer is structured before the customer's standing at the counter.
Get the margin math right once, and a good bundle pays you back every time it rings—quietly, and without you having to watch it.
Ready to revolutionize your bike shop operations?
Join hundreds of bike shops using Bicyclly to save time, increase revenue, and deliver exceptional customer service.