Wholesale & B2B

Customer tags vs native B2B companies: which should gate your catalog

Prime Lock Team

4 March 2026 · 6 min read

WHOLESALE & B2B
Contents

There are two ways to answer "who is allowed to see this catalog" on Shopify. You either label the customer and check the label, or you model the buyer as a company and publish a catalog to it. Both are legitimate. Which one is right depends less on your ambitions and more on your plan and your buyer structure.

What native B2B actually gives you

Shopify's B2B feature set, available on Plus, introduces objects that do not exist elsewhere in the platform:

  • Companies, each with one or more locations.
  • Company contacts: customers attached to a company, with permissions per location.
  • Catalogs, which combine a product selection with a price list and are published to specific companies or locations.
  • Payment terms (net 30 and similar), purchase orders, and draft-order style checkout behaviour.
  • Per-location tax exemptions and payment methods.

This is proper B2B modelling and it is enforced server-side: a product outside a buyer's catalog is not purchasable by that buyer, full stop. If you are on Plus and you sell to organisations where three people from the same buying office order to two warehouses on different terms, use this. Nothing built on tags will represent that as cleanly.

What tags actually give you

A tag is a string on a customer record. Every plan has them, the API writes them instantly, and Shopify Flow, segments and most apps can read them. Gating on tags means: this collection is visible to customers carrying wholesale; this page is visible to customers carrying vip.

The underrated property is composability. One tag can drive several unrelated systems at once: a lock app hides the catalog, a volume-pricing app applies the tier, an email tool segments the newsletter, and Flow sends an internal alert on the first order. None of those systems needs to know about the others. Company membership is far less portable; most apps have no concept of it.

Side by side

Customer tagsNative B2B companies
Plan requiredAny plan, including BasicShopify Plus only
Hierarchy supportFlat. One customer, one set of labelsCompany → locations → contacts, with per-contact permissions
Per-location pricingNo. Price tiers are per tag, via a pricing appYes, price lists per catalog per location
App interoperabilityHigh. Almost every app reads tagsLow. Few apps understand companies
Setup timeMinutes. Tag a customer and write a ruleDays. Data modelling, catalogs, onboarding buyers
Payment terms and POsNot supportedBuilt in
Who it fitsTrade catalogs, VIP tiers, gated pages, mixed retail and wholesaleDistributors and manufacturers with real account structures
Both models are enforced server-side when paired with the right mechanism: catalogs natively, tags via a validation function.

The honest decision

Answer three questions.

  1. 1Are you on Plus? If no, use tags. There is no decision to make.
  2. 2Do multiple people from the same buyer place orders, to different locations, on different terms? If yes, use companies.
  3. 3Is your requirement mostly "these people see this, those people do not"? If yes, use tags even on Plus, because companies are a heavier tool than that problem needs.

The most common mistake is a Plus merchant with two hundred small independent retailers building out companies for all of them. Each retailer is one person ordering to one address. That is a tag with extra steps and a much slower onboarding process.

They can coexist

This is not exclusive. A company contact is still a Shopify customer record, so it can still carry tags. A useful hybrid, once you have both, looks like this:

  • Companies and catalogs handle pricing, terms and purchasing for your top accounts.
  • Tags handle visibility rules that cut across the company model: early access to a drop, an end-of-line clearance page, a locked press kit.
  • A single validation function enforces the tag rules; native catalogs enforce themselves.

Migrating from tags to companies later

Starting with tags does not paint you into a corner. When you upgrade to Plus and want the company model, the tag is the migration plan: it already identifies exactly which customers are trade accounts.

  1. 1Export customers carrying your access tag, with their company name metafield.
  2. 2Create companies and locations from that export, one per business.
  3. 3Attach each customer as a company contact with ordering permission.
  4. 4Build catalogs and price lists, and publish them to the companies.
  5. 5Keep the tag in place through the transition, so nothing loses access mid-migration.
  6. 6Retire the tag-based locks only once every buyer is inside a catalog.

The step people skip is the fifth one. Removing tag rules the moment catalogs go live guarantees a support week, because there will be buyers you missed. Run both for a month.

Where tags genuinely break down

Tags are the right default for most merchants, but arguing they are always sufficient would be dishonest. There are three situations where the model stops fitting, and recognising them early saves a rebuild.

The first is buyer hierarchy. A tag is a flat label on one customer record. If a distributor has six buyers across three depots, and each depot needs its own shipping address, its own price list and its own credit limit, you are modelling a structure that a flat label cannot express. You end up with tags like wholesale-northwest-depot2, and the moment you have encoded structure into a string you have built a worse version of what native B2B gives you for free.

The second is payment terms. Net 30, purchase-order checkout and credit limits are company-level concepts on Shopify. No tag arrangement produces them. If your trade buyers expect to be invoiced rather than to pay by card, that requirement alone decides the question.

The third is scale of price variation. Tags plus a pricing app handle a handful of tiers comfortably. Once every account has individually negotiated pricing across hundreds of SKUs, price lists attached to catalogs are the tool built for that, and maintaining the equivalent in tag-driven rules becomes a job someone has to do full time.

A rule of thumb

Count the businesses you sell to and ask whether any of them has more than one person placing orders. If the answer is no, tags will serve you for a long time and the Plus upgrade is not the thing standing between you and a wholesale channel. If the answer is yes for a meaningful share of your accounts, start planning for companies even if you are not on Plus yet, and keep your tags clean in the meantime, because they are the migration path.

The mistake worth avoiding is the reverse of the usual advice: not choosing tags when you should have chosen companies, but delaying a wholesale channel entirely because you assumed it required Plus. It does not. Tag-based access, a registration form and checkout enforcement will open a trade channel this week, and the accounts you build will carry over intact if you outgrow the model later.

One practical note if you go the tag route: decide your tag vocabulary before you have fifty customers, not after. Pick lower-case, hyphenated, singular tags such as wholesale, distributor and vip, then write them down somewhere your team can see. Matching is case-insensitive, so Wholesale and wholesale behave identically, but a store that has accumulated wholesale, Wholesale-Approved and WS_customer over two years is a store where nobody is confident which rule covers whom. Cleaning that up later means auditing every customer record by hand.

Prime Lock works on the tag side of this line, on any plan, and stays out of the way if you are on Plus and using catalogs for pricing.

Frequently asked

Prime Lock Team

Prime Lock is built by Aspedan, the team behind Discount Prime and Prime MOQ. We write about the parts of Shopify that are harder than they look.

Decide who gets to see your store.

Early access opens with the free plan. Unlimited locks, enforced at checkout.

No newsletter. One email when Prime Lock is live.