What "customer tag pricing" means
Every Shopify customer record can carry tags: short labels like wholesale, vip, staff, or distributor-a. Customer-tag pricing is the practice of attaching a price rule to a tag, so that when a tagged customer is logged in, they see and pay a different price than an anonymous shopper. Tag in, price out.
It is the standard pattern for wholesale, VIP, subscriber, and staff pricing on a single storefront, because tags are native to Shopify, easy to assign in bulk, and already drive segmentation in email and flows. The hard part is not the tag. It is making the tag price hold everywhere Shopify charges money: product page, cart, Shop Pay, draft orders, and the refund record.
The three ways to build it
There are only three mechanisms on Shopify that can change a price based on who is logged in. They are not equivalent, and the gap between them is the whole story.
1. Shopify Scripts (deprecated)
Scripts ran Ruby in the checkout to rewrite line prices by customer tag. It worked, it was Plus-only, and it is being retired. Editing and publishing locked on April 15, 2026; all Scripts stop executing on June 30, 2026. If your tag pricing still lives in a Script, you are on borrowed time measured in days, not months. See our Scripts deprecation checklist.
2. Liquid theme code
You can read customer.tags in Liquid and show a different number on the product page. This is the route most "free" tutorials describe. The failure mode: Liquid changes what is displayed, not what Shopify charges. The discounted number shows on the PDP, then the cart and checkout charge full retail, because the cart total is computed server-side and your theme never touched it. Shop Pay, which skips your theme entirely, charges full price every time. It also means a theme edit on every update, forever.
3. Functions-based apps (the current answer)
Shopify Functions run compiled logic inside Shopify's own checkout pipeline. A Functions-based pricing app resolves the tier price on the product page (usually via App Proxy) and rewrites the cart line price via the Cart Transform API, so the same number flows through cart, Shop Pay, the Shop app, draft orders, and Checkout. The order record stores the resolved price, so refunds and partial fulfillments use what the customer actually paid. This is the route that survives June 30 and does not touch your theme.
What a tag-pricing rule should be able to express
A serious setup needs more than "10% off for this tag." Before you commit to an app, check that it can express:
- Fixed price, percent off, or quantity breaks per tier, layered. Example:
distributor-agets a fixed unit price and a 6+/12+/24+ quantity ladder on top. - Per-variant pricing, so a SKU with five sizes can carry five different tier prices, not one blanket discount.
- More than three groups. Shopify's native B2B caps you at 3 catalogs on non-Plus plans. If you have distributor, retailer, dealer, VIP, and staff, you are already past native. (More on that in the 3-catalog limit.)
- Closed-loop access. Anonymous and untagged customers must never see tier prices. A price the public can read is a discount code waiting to leak.
- Audit and rollback. When a rule misfires and wholesale customers see retail, you want to find out from a log, not a screenshot. See pricing tier governance.
How to set it up (the short version)
The mechanics are the same across most Functions-based apps:
- Tag the customer. Manually, in bulk via CSV, or automatically with a tagging app based on spend, signup form, or order behavior.
- Write a rule: "if customer carries tag
X, charge priceYfor product or collectionZ." - Test on a real customer account on a development store. Add to cart, open Shop Pay, place a draft order, issue a test refund.
- Publish. The tier price is now live everywhere Shopify charges, with no theme commit.
On a development store this is roughly a 20-minute loop for the first rule, because there is no theme deploy and no redeploy between rule edits.
Where this fits in the stack
Tag-based pricing is the foundation under most "different price for different people" problems: DTC and wholesale on one store, Recharge subscriber pricing, VIP and loyalty tiers, and staff pricing that doesn't leak. They are all the same mechanic pointed at a different tag.
Honest scope
Tag pricing is not the answer to everything. If you only need a single promo, use Shopify's native discounts. If you need a quote-and-approve workflow with a sales rep, that is a CPQ or native-B2B job. If net-terms invoicing is your primary requirement, native B2B payment terms may cover it. Tag pricing earns its keep when you have multiple standing customer groups, each owed a different price, on one storefront, every day.
Try tag-based pricing on a dev store →