Running B2B pricing and D2C on one Medusa backend
Tiered accounts and a public storefront, same source of truth.
Most commerce teams eventually face the same fork: run wholesale and retail on separate platforms, or force both through one backend and accept the compromises. We have done both. One Medusa backend with tiered B2B accounts and a public D2C storefront is the pattern we keep coming back to - not because it is elegant on a whiteboard, but because it survives contact with real pricing teams.
The mistake is treating B2B and D2C as two products. They are two views of one catalog. Same SKUs, same inventory, different price lists and checkout rules. Medusa's customer groups and price lists map cleanly to that reality when you resist the urge to fork the data model per channel.
One source of truth, two storefronts
Wholesale buyers log into a gated experience with contract pricing pulled from their account tier. Retail shoppers hit the public storefront with standard pricing and a checkout built for conversion, not purchase orders. Both read from the same product service. When a SKU goes out of stock, both channels know immediately - no sync job, no reconciliation spreadsheet.
The goal is not one checkout. It is one catalog that two different buyers can trust.
Region-scoped tax and fulfillment plug in once. Adding a new wholesale tier is a configuration change, not a rebuild. That is the operational win clients actually feel after launch.
Where it gets hard
Payment terms, minimum order quantities, and approval workflows do not ship out of the box. We build thin custom modules for the B2B edge cases and keep the core on Medusa primitives. The D2C checkout stays lean - three steps, experiment-ready - while wholesale gets the fields their sales team actually needs. Same backend, different surfaces. That is the whole point.
When should you break a CMS collection into multiple?
When two kinds of content genuinely have different fields and different places they get used — not just because one has slightly more variety.
How do you handle nested references in Webflow?
Keep references to one hop wherever possible. If you find yourself needing two hops to render a single field, flatten the second collection into the first.
Do CMS items count toward site plan limits?
Yes — every collection item counts toward your CMS item limit regardless of whether it renders a page.
Enjoyed this? We build the systems we write about.
Fixed monthly retainers on Webflow and Medusa JS — by the same people who wrote this.