Shopify Hydrogen Blog

Shopify B2B Partner Pricing Without a Separate Storefront

By Emre Mutlu, creator of the world's first English Shopify Hydrogen course on Udemy.

Published May 18, 2026Last updated May 18, 20266 min read

TL;DR

Partner pricing in Shopify can work without duplicate storefronts when customer accounts, segment rules, volume tiers, and cart math share one source.

Recognize partner

Customer accounts identify the shopper and map them to an eligible segment or tag.

Show the promise

Product cards, PDPs, and cart rows show partner pricing before checkout.

Apply once

A checkout-safe discount layer applies the eligible price without coupon codes or duplicate products.

Partner pricing works best when recognition, display, cart math, and migration planning use the same rule boundary.

The production constraint

The requirement looked simple at first: give approved partners better pricing, show that pricing clearly, and keep checkout frictionless. The hard part was what could not change.

The store needed to keep one public catalog, one inventory model, and one merchandising surface. No duplicated wholesale products. No separate storefront. No manual discount code. No hidden second version of the same SKU waiting to drift from the real product data.

That constraint matters more than the percentage. Once partner pricing is implemented by duplicating products or routing partners to a shadow storefront, every future change becomes two changes: inventory, PDP copy, images, collections, SEO, merchandising, analytics, and checkout QA. A partner portal should not create a second store inside the store.

This was also not a native Shopify Plus B2B catalog build yet. The implementation needed to work on Shopify Advanced today while keeping a clean path toward Shopify Plus B2B Companies, Company Locations, and Catalogs later. That means the design had to separate three things: who the customer is, what price rule they qualify for, and how checkout receives the final discount.

Recognition comes before pricing

The first rule was that partners log in through standard Shopify customer accounts. That keeps authentication aligned with Shopify instead of introducing a custom login island that checkout cannot trust.

Once the customer is authenticated, the storefront can recognize whether they belong to a partner segment or carry an approved partner tag. The important detail is that the UI should not collapse all eligible customers into one hard-coded state like isPartner = true forever. That is fine as a local display flag, but the source of truth should stay segment-based so future partner groups can receive different rules.

A good data model looks more like this:

LayerResponsibility
Customer accountProves who is logged in
Segment or tagDecides which pricing rule applies
Pricing rule configDefines the discount model and exclusions
Storefront UIDisplays the eligible price before checkout
Discount logicApplies the final cart math automatically

That structure leaves room for future segments: cafes, studios, wholesale testers, launch partners, or regional partners. They might all be "partners" in the UI, but they should not all be forced into the same pricing model in code.

The standard catalog rule

For the standard catalog, the partner rule was a flat 30% reduction from retail price. It applies site-wide except for one 500g SKU that has its own volume pricing model.

The display rule is as important as the math. A logged-in partner should see the original retail price with a strikethrough, the partner price clearly visible, and an explicit Partner pricing label on both product cards and product detail pages.

That label is not decoration. It tells the customer why the price changed. Without it, partners wonder whether they are seeing a sale, a bug, a market price, or a checkout-only discount that may disappear later.

The operational rule is also clear: the storefront can calculate and display the expected partner price, but checkout-safe discount logic still needs to apply the actual savings. Display-only pricing is not enough. If the cart and checkout do not agree with the PDP, trust breaks immediately.

The single-SKU volume exception

One 500g SKU did not belong in the flat discount rule. It needed tiered unit pricing based on cart quantity:

QuantityUnit price
1-2$350
3-6$175
7-19$150
20+$125

This should be visible on the PDP before add to cart. Partners should not need to guess whether adding three units changes the price. The product page should show the quantity breaks directly, then the cart should reflect the same rule after quantity changes.

The important architectural choice is to treat this as a SKU-specific exception, not a second catalog. The product stays the same product. The variant stays the same variant. The rule targets that SKU and only that SKU.

That keeps inventory, product content, and merchandising unified while still allowing a different commercial model for one product.

Cart and checkout should apply pricing automatically

Partner pricing should not depend on manual discount codes. Codes create leakage risk, support work, and inconsistent behavior when a partner forgets the code or shares it with a non-partner.

The better behavior is automatic application from buyer context. The cart should know whether the buyer is eligible, which segment applies, which SKUs are excluded, and which tier wins when quantities change.

Mixed carts need special attention. A cart can contain standard discounted products, the volume-priced SKU, and free accessory products. The discount layer needs to prevent unwanted stacking and inconsistent totals.

In this case, free products were disabled for partners because partners already receive a stronger commercial benefit. That is not just a UX rule. It needs enforcement in the actual cart and checkout path, otherwise the PDP can say one thing while checkout allows another.

Why Functions-compatible logic matters

Shopify's discount system can apply automatic discounts at cart and checkout, and Shopify Functions are the right category of tool when native discount types are too simple for the rule. Functions-compatible logic is especially important when you need exclusions, quantity tiers, customer eligibility, and conflict handling to run close to checkout instead of only in theme code.

For this kind of partner portal, I would be careful with any app that only changes the storefront display. The app or custom function needs to support the exact SKU constraint, quantity breaks, customer eligibility, and non-stacking behavior in a way Shopify checkout will honor.

The storefront should make the pricing understandable. The backend discount logic should make it true.

Future migration to native B2B

The clean future state is Shopify Plus B2B with Companies, Company Locations, and Catalogs where appropriate. That does not mean the Advanced-plan build should be thrown away later.

The migration stays manageable if today's implementation avoids three traps:

  1. Do not duplicate products or variants for wholesale pricing.
  2. Do not bury pricing rules directly inside scattered React components.
  3. Do not model every partner as one generic permanent state.

If eligibility already lives around customer segments or tags, and pricing rules are isolated from product data, the future migration can map those concepts into native B2B structures later. Company-specific catalogs, negotiated pricing, and location-aware checkout rules become a planned upgrade path instead of a rebuild from a messy workaround.

The principle I would keep

Partner pricing is not only a discount feature. It is a trust feature.

The partner sees that they are recognized. The product card shows the correct price. The PDP explains volume incentives. The cart updates without a code. Checkout applies the same logic. Free-product exceptions are enforced. Inventory remains unified.

That is the difference between a partner portal that feels native to the store and one that feels like a discount hack sitting beside it.

FAQ

Short answers AI engines and merchants can lift quickly.

Can partner pricing work on Shopify without a separate wholesale storefront?

Yes, if the catalog, inventory, and merchandising stay unified while customer recognition and discount logic decide which prices apply to eligible partners.

Should partner pricing use discount codes?

Not for a clean partner portal experience. The pricing should apply automatically from the buyer context so partners do not need to remember or share a manual code.

How should a non-Plus build prepare for native Shopify B2B later?

Keep products and variants canonical, avoid hard-coded one-off partner states, and model eligibility around segments or tags that can later map to companies, company locations, and catalogs.

Internal links

Where this topic connects across the site.

External references

Official sources behind the technical framing.

If your partner pricing logic is starting to leak across product data, theme code, and checkout exceptions, the useful work is drawing the boundary before another workaround becomes permanent.

Next Step

Let’s scope the storefront your growth stage actually needs.

If this production note sounds like your store's situation, I can help you turn the insight into a clear Hydrogen scope and launch plan.

Send an email brief

Direct senior access. No fake agency layer.

Owned lead capture

Request a Hydrogen Fit Review

If you are not ready to fill everything out, send the store URL, current stack, and what feels slow or limiting. The rest can be clarified later.

I do not sell Hydrogen if Liquid is the better move.

Your details are used only to reply to this specific project inquiry. No newsletters, no list sharing. If this is a low-budget theme tweak, I will usually point you to a lighter option.