Why discount codes fail for standing tiers
A one-off promo code is fine. A standing perk — your VIP price, your staff discount, your member rate — is a different animal, and codes fail it three ways:
- They leak. A staff or VIP code ends up on a coupon aggregator or browser extension within days. Once it is out, anyone checks out at the staff price. See how to stop a staff discount from leaking.
- They stack and conflict. Codes interact with other promos in ways you didn't intend, and Shopify limits how codes combine.
- They are open by default. A code has no idea who the person is. Restricting it to specific customers is bolt-on, not built-in.
For a perk that should belong to a known person every time they log in, you want pricing tied to identity, not to a string they can paste.
Tag-based pricing: closed-loop by design
The alternative is to attach the price to a customer tag instead of a code. Tag the customer vip, staff, or member; define the tier price for that tag; and the price resolves only when that customer is logged in. There is nothing to paste, nothing to leak, and nothing for an anonymous shopper to see. When someone leaves the VIP tier or the team, you remove the tag and the price is gone — no code to rotate, no list to scrub.
Because it runs in Shopify's pricing pipeline (via Functions and App Proxy), the tier price holds through cart, Shop Pay, draft orders, and the order record, so refunds use what the person actually paid. The mechanic is the same one described in customer tag pricing; VIP/staff/member are just three tags pointed at it.
Setting up the three common tiers
VIP / loyalty pricing
Tag the customer vip when they cross a spend threshold or reach a loyalty rank — manually, by automation, or pushed from your loyalty app. Point a price tier at the vip tag: a flat percentage off, a fixed price on hero SKUs, or member-only quantity breaks. The VIP sees their price the moment they log in; everyone else sees retail.
Staff / employee pricing
Tag employees staff and attach the staff price. Because it's closed-loop, the discount can't walk out the door as a code. Add an email-domain check at signup if you want eligibility enforced automatically. This is the airtight version of the employee discount, covered in depth in the staff discount case study.
Membership / paid-tier pricing
If you run a paid membership (or a Recharge subscription that confers a member rate), tag the active member and price the tier accordingly. When the membership lapses, the tag comes off and pricing reverts — no manual cleanup. For the subscription-specific version, see Recharge subscriber pricing.
What customers see
A logged-in VIP, staff member, or paid member sees their price on the product page, and the same price in the cart, in Shop Pay, and on the receipt. A logged-out or untagged visitor sees standard retail and never sees that a tier exists. That invisibility is the point: the perk is real for the people who earned it and absent for everyone else.
Honest scope
If you want points, badges, referral mechanics, and tiered rewards, you want a loyalty app, and tag pricing doesn't replace it. If you want a one-time sitewide sale, use a native discount. Tag-based pricing is for the standing price a known customer group should pay every time — the case where a code is a liability rather than a tool.
Set up VIP or staff pricing on a dev store →