Shopify B2B Shipping Profiles / Markets — Need Help Separating B2B and D2C Shipping Options

I’m trying to solve a shipping configuration issue with my Shopify store and would appreciate some guidance from anyone experienced with Shopify B2B, Markets, shipping profiles, and delivery zones.

I currently have approximately 428 products, and the same products are available to both my Direct-to-Consumer (D2C) customers and my Business-to-Business (B2B) wholesale customers.

Current B2B Setup

I have already:

  • Created company profiles for businesses enrolled in our wholesale program.
  • Assigned those companies to the appropriate B2B Markets.
  • Established designated delivery zones based on the geographic areas we service.
  • Created flat-rate delivery pricing for those zones because B2B orders are delivered using our own company fleet.

The B2B side is intended to work like this:

B2B Company → Assigned Market → Designated Delivery Zone → Flat-Rate Company Fleet Delivery

The Problem

At checkout, my B2B customers are being offered the designated flat-rate delivery option AND UPS/general shipping options from my general shipping profile.

I do not want B2B customers to see or select UPS/general carrier shipping.

If a wholesale company is assigned to one of our B2B markets and falls within one of our designated delivery zones, I want only the applicable flat-rate company delivery option presented at checkout.

D2C Requirement

At the same time, I need the same 428 products to remain available to my regular D2C customers.

For the immediate future, I would actually prefer the D2C side to be:

D2C Customer → Product Purchase → Scheduled/Local Pickup

while B2B operates as:

B2B Customer → Assigned Market/Company → Designated Zone → Flat-Rate Fleet Delivery

I temporarily disabled portions of my general shipping setup to prevent the unwanted UPS options, but I don’t want that to interfere with product availability or create problems with checkout.

What I’m Trying to Accomplish

Essentially, I need one shared product catalog with two different fulfillment rules based on customer type:

B2B: Same products + designated delivery zones + flat-rate company fleet delivery ONLY.

D2C: Same products + scheduled/local pickup ONLY.

Has anyone successfully configured Shopify B2B this way?

Specifically, is there a native way to restrict shipping methods based on the customer’s Company, B2B Market, catalog, or customer status, or do I need to use shipping profiles, delivery customizations, Shopify Functions, or a third-party app to prevent B2B customers from seeing the general UPS rates?

I’m trying to avoid duplicating 428 products simply to create separate B2B and D2C fulfillment rules.

Any insight into the cleanest way to structure this would be greatly appreciated.

The important distinction here is that Markets and shipping profiles don’t necessarily work as “if B2B, ignore every other shipping rate.” If UPS is attached to a profile containing those products, Shopify can still return it when the address qualifies. I’d look at the shipping profile assignments for the 428 products before changing the Markets setup.

I’ve been working on this for a little bit and I am having a heck of a time, lol

Hi @sywoodworking.com,

You shouldn’t need to duplicate all 428 products for this. The main issue is that Markets identify the B2B context, but they don’t automatically mean “ignore every shipping rate attached to these products.” If the same products are sitting in a profile that has UPS rates, Shopify can still present those rates when the checkout qualifies for them.

For your setup, I’d approach it from the shipping-profile/fulfillment-rule side, not by creating a second product catalog.

Your ideal structure is basically:

B2B company → B2B shipping profile → designated delivery zones → flat-rate fleet delivery

D2C → pickup-only setup

The part I would check first is which shipping profile those 428 products are currently assigned to and whether the UPS rates are coming from the same profile. If they are, that’s likely why you’re seeing both options.

I also wouldn’t keep disabling your general shipping setup as a workaround until we know exactly which profile/rates are being combined, because that can create a different checkout issue for D2C.

If you can share a screenshot of Settings → Shipping and delivery, specifically the profiles containing these products and the rates/zones inside them, I can help you map out exactly where the UPS option is coming from and what I’d change.

Thank you for the useful information. I am very new to the ecommerce world and still have alot to learn

If you would be available for a zoom or google meet we can arrange that

Absolutely, happy to help.

Since you’re still getting familiar with Shopify, I think a quick call would actually be much easier than trying to explain the whole setup through Community replies.

We can go through your B2B Markets, shipping profiles, delivery zones and the UPS rates together and identify exactly where the conflict is, while keeping your 428 products on one catalog.

Google Meet works fine for me. Send me a couple of times that work for you and we can arrange it. :+1:

I would be open to a Google meet if that fits your schedule. I am sure with your level of experience on this platform we could solve it very simply, I have added a link if you think you can help https://calendar.app.google/DubWVFHQ5RBkoD4r9

here are the zones I had created prior to this post

Thank you for the info,sincerely, however, that doesn’t really solve my issue

Adding to what others said: shipping profiles alone won’t filter by B2B vs D2C on shared products - a profile’s rates show whenever the address/zone qualifies, regardless of buyer type. The clean fix is a Delivery Customization Shopify Function that checks buyerIdentity.purchasingCompany (present only for B2B checkouts) and hides/removes the general carrier rates when it’s set, leaving only your flat-rate fleet option. No product duplication needed, and it layers on top of your existing profiles/zones.

Hello @sywoodworking.com
I sent you a mail on the research report as we discussed on the call.
Kindly go through it and give feedback on what you suggest that works better for us.

Thank You