01TL;DR
Use BigCommerce's native Bulk Pricing Rules to drive volume discounts. Render a 3-tier table on the PDP between price and ATC that live-highlights the active tier as qty changes. Show a "Bulk save" pill on PLP cards. Show a nudge on cart rows when a buyer is one tier away from a break, plus a summary savings line.
Fully shippable in Stencil — no app, no replatform. Phase 3 (contract pricing + approval flows) starts to push toward Catalyst.
| Phase | Surface | Effort |
|---|---|---|
| Phase 1 Pilot | Uniform 3-tier table (1–5 / 6–11 / 12+) on PDP, badge on PLP, nudge + summary on cart. | Low — Stencil native; theme edits only |
| Phase 2 Iterate | Category-driven tier templates per SKU family. Per-SKU overrides. | Low — admin config only |
| Phase 3 Future | Contract pricing per National Account + approval-flow integration in the nudge. | Higher — B2B Edition Customer Groups + Approval Workflows |
02Current state
Consumable SKUs (vacuum bags, brushes, chemicals) are the highest-volume B2B reorder items. The current site shows base unit price only — there's no signal that buying in quantity costs less, even when the warehouse runs informal bulk pricing for known accounts.
Why it matters: B2B procurement buyers are trained to expect price breaks for volume. Hiding the tier is leaving margin on the table. Surfacing it converts the qty-1 buyer into a qty-12 buyer in one decision.
03References
Grainger volume pricing
Per-SKU tier table, admin-edited, rendered inline under the price. Tier is computed live as qty changes.
Amazon Business "Quantity Discounts"
3–5 tiers, live-highlight active tier, "you saved $X" at checkout.
McMaster-Carr
Minimalist inline price-per-quantity. Engineers know what they want — no fanfare.
HD Supply
Contract-driven per Company, surfaced inline on the PDP for logged-in customers with that contract.
04What BC Stencil gives us
Native Bulk Pricing Rules — directly addresses this feature without any apps or custom code.
- Admin: Settings → Products → [Product] → Pricing → Bulk Pricing Rules. Unlimited tier rules per product.
- Stencil rendering: stock templates iterate
{{#each product.bulk_discount_rates}}to render the tier table. - Cart engine: BC computes the applicable rate automatically at cart and checkout.
- API: /v3/catalog/products/{product_id}/bulk-pricing-rules
Plays well with Customer Group pricing (B2B Edition) and the Promotions API (coupons stack on top).
05Stencil limitations
- No native "you're N away from the next tier" nudge on the cart page. Custom theme JS required.
- No native cart-summary savings line. Bulk-pricing savings are baked into the line price, not surfaced separately. We compute and show it via theme template logic.
- PLP card "has bulk pricing" badge isn't a native field, but
product.bulk_discount_ratesis queryable in the PLP loop — render iff non-empty. - No native UI for category-driven tier defaults. Phase 2 needs admin-side automation, not a Stencil feature.
- Approval-workflow integration (Phase 3) requires custom integration with B2B Edition's Approval API.
06App marketplace shortlist
| App | What it does | Worth it now? |
|---|---|---|
| (Native) Bulk Pricing Rules | Built into BC core — qty tiers, %/$ off, per-SKU config. | ✓ Use this |
| Discounts by Customer Group | Tier discounts gated by customer group. | Maybe — B2B Edition covers most |
| Better Bulk Discounts | Slicker admin UI for native Bulk Pricing Rules. | Skip — no new capability |
| Generic urgency/countdown apps | "Add N more to save X%" overlays. | Skip — build in Caster |
07Caster impact
- New pattern
.volume-pricing— 3-tier inline table, active-tier highlight, pairs with.pdp-price. Inline inv2/pdp.htmlfor now; promote to Caster/patterns/on second consumer. - New pill variant
.pill--volume(PDP) and.product-card__badge-volume(PLP) — amber-tinted, indicates "has bulk pricing." - New cart pattern
.cart-row__nudge— dashed amber callout under row meta. "Add N more to save X%." - New summary line
.summary__savings— single success-tinted strip under grand total.
Downstream impact: teams adding new PDPs should include the volume pill iff the SKU has bulk pricing. Same for PLP cards — show iff product.bulk_discount_rates.length > 0.
08Phased recommendation
Single uniform rule across all consumable SKUs: 1–5 base, 6–11 saves 5%, 12+ saves 15%. Admin config; no code beyond the theme template edits.
What "winning" looks like: measurable shift in average order qty for consumables, repeat-order frequency drops (buyers order larger less often), no measurable impact on cart abandonment.
Different categories warrant different tier tables. Paper bags ≠ chemicals ≠ batteries. Trigger: 1–2 months of Phase 1 data showing which tiers convert per category. Group SKUs into 3–4 "tier templates."
Per-SKU overrides for outliers (4-pack SKU vs. single-unit SKU).
National Account customers see their contract tiers via B2B Edition Customer Groups. For accounts with Approval Workflows, the cart nudge gates differently: "Adding 5 more saves 5% — Tom needs to approve" vs. the retail "Add 5 →".
Trigger: top-10 accounts asking for negotiated breaks beyond public tiers, plus 3+ accounts with Approval Workflows configured.
09Implementation notes
Stencil theme edits required (Phase 1)
- PDP price block —
volume-pricingpartial undertemplates/components/products/, iteratesproduct.bulk_discount_rates. - PLP card — extend
card.htmlto render the volume badge iffbulk_discount_rates.length. - Cart row — extend
cart/content.htmlwith the dashed amber nudge, computing "qty until next tier." - Cart summary — sum
(line.list_price - line.sale_price)across all bulk-priced lines.
Analytics
Tier conversion (qty distribution across tiers), nudge engagement (click-through rate per SKU), AOV shift on bulk-priced PDPs vs. control, repeat-order cadence (should lengthen for volume-purchased SKUs).
Accessibility
Tier table should be a real <table> with <caption> and <th> for screen readers (the prototype uses CSS grid for the visual). Active-tier change announces via aria-live="polite". "Bulk save" pill has explicit text, not icon-only. Cart nudge "Add 5 →" is a real button with descriptive aria-label.
10Catalyst / replatform candidacy
Phase 1 ships well in Stencil. Bulk Pricing Rules is one of BC's strongest native features; the tier UI is a straightforward theme edit.
Phase 3 starts to feel headless. The interaction between volume pricing + contract pricing + approval workflows is a multi-system orchestration: catalog price, customer-group price, B2B Edition approval queue, cart engine. Stencil templates can do it but the logic becomes spaghetti at the partial level. Phase 3 is a forcing function for Catalyst — the React storefront can express the conditional UI cleanly and call BC APIs server-side.
Recommendation: ship Phase 1 + Phase 2 in Stencil. When Phase 3 work begins, treat it as the first piece of a Catalyst replatform rather than further Stencil-template surgery.