Guide
Native Shopify B2B companies vs tag-based workarounds: an honest comparison
Native Shopify B2B represents a wholesale buyer as a company — with locations, contacts, catalogs, price lists and payment terms built into the platform — while tag-based workarounds approximate wholesale by putting a tag on a retail customer record and wiring discounts and price-hiding around it in theme code. Both approaches are widespread, and the honest answer to "which one?" is: it depends on what your wholesale business actually needs. This guide compares them dimension by dimension, says when tags are genuinely fine, and maps the migration path for when they stop being fine.
How each approach models a buyer
Under native B2B, "Acme GmbH" exists in Shopify as a company: it has one or more locations (each with its own address, tax context and catalog), and contacts — real people linked to the company who log in and order on its behalf. Wholesale pricing lives in catalogs and price lists attached to the company, and B2B-specific checkout behaviour (payment terms, PO numbers) hangs off the same structure.
Under a tag workaround, "Acme GmbH" is a retail customer record — usually one person's email — carrying a tag like wholesale. The theme checks the tag to show or hide prices; discounts or scripts apply a percentage off; and everything the tag cannot express (multiple buyers per company, per-location pricing, net terms) either does not exist or is faked with more tags.
That difference in data model is the root of every difference that follows: one approach has an organisation as a first-class object; the other has a label on an individual.
The comparison
| Dimension | Native Shopify B2B | Tag-based workaround |
|---|---|---|
| Data model | Company → locations → contacts; the org structure is real | A tag on an individual customer record; no company object |
| Pricing control | Catalogs and price lists: per-company fixed prices or adjustments, per location | Blanket percentage discounts; per-customer nuance means tag sprawl and theme logic |
| Checkout experience | B2B checkout: payment terms, PO numbers, company context on the order | Retail checkout with a discount; terms handled off-platform (invoices by email) |
| Customer accounts | Contacts see their company, its orders and terms in the account | A personal retail account; colleagues share a login or get separate tagged accounts |
| Reporting | Orders carry the company; wholesale revenue is filterable natively | Reconstructed from tag filters; breaks silently when tags drift |
| Theme dependency | Platform-level; survives theme swaps | Price-hiding and gating logic re-implemented in every theme change |
| Migration effort | — | Grows with every tagged customer and every theme customisation added |
| Plan availability | Companies, locations, contacts and payment terms on every Shopify plan; direct location-catalog assignment is Plus-only — non-Plus stores use B2B market catalogs with price lists (max 3 active) | Any plan |
When tags are actually fine
An honest comparison admits the tag approach has a legitimate zone. Tags are a reasonable choice when all of these hold:
- Wholesale is a side channel — a handful of trusted buyers, not a funnel of applicants you need to verify.
- Pricing is a single blanket discount ("wholesale gets 30% off everything") rather than negotiated per-account prices.
- You do not need payment terms, PO numbers, or multiple buyers per company — one person per business, paying at checkout, is your reality.
- Your theme is stable and you accept re-wiring the price-gating when it changes.
In that zone, tags are simpler to set up and there is no shame in them. The trouble is that the zone has sharp edges, and growing wholesale businesses exit it quietly: the second buyer at the same company, the first request for net-30 terms, the first per-account price sheet — each is a feature the tag model structurally cannot express.
When native wins
Native B2B wins the moment wholesale is a real channel with real structure:
- Verified onboarding. A wholesale application funnel — form, register verification, approval — needs somewhere real to land. Approving an applicant into a native company with a location and a contact is provisioning; approving into a tag is bookkeeping. (See the wholesale application workflow guide for the full funnel, and the VAT ID verification guide for the verification stage.)
- Negotiated pricing. Fixed per-account prices, currency-specific price lists, per-location catalogs — this is what catalogs and price lists are for.
- Organisational buying. Several people ordering for one company, each with their own login, all visible on the company's order history.
- B2B checkout mechanics. Payment terms and PO numbers at checkout instead of "we'll invoice you by email".
- Clean reporting and clean exits. Wholesale revenue is a filter, not an archaeology project — and no tag/theme spaghetti to unwind later.
The Plus question, precisely
A persistent myth says native B2B requires Shopify Plus. The accurate version: creating companies, locations, contacts and payment terms works on every Shopify plan. What is Plus-only is assigning a catalog directly to a company location. Non-Plus stores achieve wholesale pricing through B2B market catalogs with price lists instead, which Shopify caps at three active catalogs — enough for tiered wholesale pricing (say, standard / silver / gold), not for hundreds of individually negotiated catalogs. A capable app detects the store's plan at runtime and picks the right catalog strategy automatically; Anmelda does exactly this, so the same approval flow provisions correctly on Plus and non-Plus stores alike.
Five questions that decide it
If the table still leaves you undecided, these questions usually settle it:
- Will two people from the same company ever need to order? If yes, you need a company object with contacts — a tag on one person's account cannot express it.
- Will any buyer ever pay on terms instead of at checkout? Payment terms are native B2B functionality; with tags they live in a spreadsheet and an email thread.
- Is any price negotiated per account rather than a blanket percentage? That is a price list, not a discount code.
- Do you need to verify applicants before they see wholesale prices? A verification-and-approval funnel needs a real provisioning target to land on.
- Might you change your theme in the next two years? Every theme change re-opens tag-based gating; native B2B does not notice a theme swap.
One "yes" is a lean toward native. Two or more are a decision.
The migration path
Moving from tags to native B2B is mostly an exercise in making implicit structure explicit:
- Inventory the tagged customers. Which tags mean "wholesale"? Which customers belong to the same real-world company? This grouping is the actual work.
- Verify while you migrate. Migration is the natural moment to check each business against the registers (VIES, Zefix, Companies House) — you are re-founding the relationship on clean data.
- Create companies, locations and contacts — one company per real business, locations from their billing/shipping addresses, existing customer records linked as contacts (order history stays with them).
- Rebuild pricing as catalogs and price lists, replacing blanket discount logic.
- Retire the theme workarounds. Remove tag-based price hiding once companies carry the pricing; keep gating only for not-yet-approved visitors.
- Run both briefly, then cut over. Tags can coexist with companies during the transition; set an end date so they actually get removed.
New wholesale applicants should land on the native side from day one — there is no reason to add to the pile you are migrating away from. That is the role of an application-and-verification layer in front of provisioning: from the first day of the migration, every newly approved buyer is already a native company. It is precisely the funnel Anmelda automates — verified applications in, native Shopify B2B companies out, no tags anywhere in between.
Verify your next wholesale application automatically
Anmelda checks every B2B application against VIES, Zefix and Companies House, then creates the native Shopify company for you.
Add to Shopify