Blog · Guide

VIP, staff, and membership pricing without discount codes

VIP, staff, and member pricing all share one problem: a discount code is a shareable secret, and standing perks are exactly the kind of secret that gets shared. Tag-based pricing is closed-loop instead. Here's the distinction, and where loyalty apps still fit.

7 min read · Updated June 2026

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.

VIP pricing vs loyalty points — they're different jobs. Loyalty apps (Smile, BON, Otter, and similar) award points and rewards to drive repeat purchases. They are good at that. They do not generally set a standing per-customer price tier. The clean pattern: let the loyalty app own points and rank, and let a tag-based pricing layer own the price the VIP tier pays. They coexist — the loyalty app can tag the customer when they hit VIP rank, and the pricing layer reads the tag.

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 →


Related on TagTier