Every store has a group of customers worth more than the rest, and almost every store rewards them badly — with a points balance they never check, or a “VIP” discount code that is on a coupon aggregator within the hour.
The offer is rarely the problem. The plumbing is. This playbook is about the plumbing: how to identify the customers who qualify, how to deliver an offer only they can reach, and how to keep it from leaking.
Why most VIP programs quietly fail
Three failure modes, in the order they usually happen.
The tier nobody can reproduce. “VIP” starts as a real threshold and becomes a list someone maintains by hand. Six months in, nobody can say why a given customer is on it. The program still runs, but it no longer selects for anything, and the discount is going to people who were going to buy anyway.
The offer that escapes. A VIP discount code is a string. Strings get forwarded, screenshotted and submitted to coupon sites. The moment that happens, the reward you built for your best customers is a public promotion — and worse, one you cannot withdraw without disabling the code for the people who earned it.
The points economy nobody uses. Loyalty platforms are excellent when customers actively manage a balance. Most stores do not have that relationship. What they have is a hundred customers who buy repeatedly and deserve something better than the public price — a problem that does not require an economy.
Deciding who qualifies
Pick one threshold, from data you already hold, that you could recompute from scratch tomorrow:
- Lifetime spend above a number. Simplest and usually the best proxy.
- Order count above a number. Better for lower-price catalogues where spend is noisy.
- Recency plus frequency. Bought at least three times in the last twelve months. Catches active customers rather than one big historical order.
Then tag it, and write the definition down somewhere the next person will find it. The rule matters less than being able to state it — a tier you can audit stays a tier; a tier you cannot becomes a list.
A useful sanity check: your VIP segment should be small enough that the offer feels like a privilege. If a third of your customer base qualifies, you have not built a VIP tier — you have built a discount with extra steps.
Choosing the gate
Three mechanisms, with genuinely different properties.
Passcode
The link asks for a code before it opens. Right for one-to-many sends: an early-access window for everyone tagged VIP, a members-only drop, a segment-wide private sale.
It is deliberately not identity. Anyone with the passcode can use it, which is fine when you are broadcasting to a segment and the limit that matters is the total. Pair it with a usage cap so a forwarded passcode costs you a bounded number of orders rather than an unbounded one.
Customer-account gating
The offer resolves against a logged-in customer. Right when it must belong to one person and must not transfer: a personal reward, an individually negotiated price, a make-good after something went wrong.
Stricter, and slightly more friction — the customer has to be logged in. Worth it when the offer is valuable enough that transferability is a real cost.
The one to avoid: hidden collections
The common instinct is to build a hidden collection or an unlisted page and send the URL. Unlisted is not private. The page is reachable by anyone with the URL, exposed through the storefront’s own JSON endpoints, and indexable the moment anything links to it. It survives exactly as long as no customer shares it, which is not a security model.
If nothing on your storefront changes, there is nothing to find. That is the actual advantage of putting the offer on the link instead of the store.
Building the offer
The offer should live on the link, not on the catalogue. That means:
- No storefront change. No sale price to revert, no collection to hide again afterwards, no window where public shoppers see VIP pricing because a schedule fired early.
- The cart is already built. For a drop, the link opens with the product and the VIP price in place. The customer’s decision is whether to buy, not how to configure it.
- Limits are part of the offer. A usage cap, one-per-customer, and an expiry. All three are what make the offer bounded rather than an open promise.
For early access specifically, the expiry is the product. Early access has value because it ends — when general access opens, the link should stop working. An “early access” offer still live a week after everyone else can buy is just a discount, and customers notice.
Distributing it
Match the channel to the gate:
- Klaviyo flow filtered to the tag. The default for a segment-wide send. The link is the whole message — no code to copy, no instructions to follow, nothing to get wrong on a phone.
- SMS for timed drops. Where early access is measured in hours, SMS beats email on open latency. Keep the message to the offer and the deadline.
- Account-area placement. For durable offers, a permanent link in the customer’s account is better than a campaign — it is there when they come looking rather than buried in an inbox.
- Direct, one to one. For the highest tier, a personal message from a real person outperforms any automation, and at that segment size it is affordable.
What to avoid: posting the offer anywhere public with an instruction to “use code VIP at checkout.” That is not a VIP offer, it is a public promotion with a private-sounding name.
Early access as a mechanic
Early access is the cheapest VIP reward available, because it costs nothing but sequence. You are not discounting; you are ordering the queue.
It works best when:
- Supply is genuinely constrained. A limited drop where selling out is plausible. Early access has real value because late access might get nothing.
- The window is short and stated. Twenty-four to forty-eight hours. Long enough to act, short enough to matter.
- General access follows visibly. The whole point is that VIPs got there first, which only lands if there is a visible “first.”
It works badly on evergreen catalogue. Early access to something permanently in stock is not a reward, and customers correctly read it as a discount dressed up.
Private pricing
The other half of the pattern: not a window, but a price.
Private pricing suits customers whose relationship justifies a standing rate — high-volume repeat buyers, long-term subscribers, accounts you would call wholesale in another context. Here the link should be durable rather than expiring, because the customer will come back to it on their own cycle.
Two rules:
- The price lives on the link. Retail shoppers never see it, because nothing on the storefront carries it.
- It is per-account, not per-campaign. One link per customer or per tier, so you can revoke or reprice one relationship without touching the others.
This is the same mechanism the B2B playbook uses for wholesale accounts. The difference is the audience, not the plumbing.
What to measure
The mistake is measuring the campaign. VIP offers convert well by construction — you selected for people who already buy. A high conversion rate tells you nothing.
Measure the tier instead:
- Incremental revenue against a holdout. Hold back a comparable slice of the VIP segment. If they spend the same over the following quarter, the offer moved revenue rather than adding it.
- Retention of the tagged segment. The real return on a VIP program is that those customers keep buying. Track their repeat rate against the store average, over quarters rather than weeks.
- Tier migration. How many customers crossed into the VIP threshold this quarter? A program that rewards existing VIPs but never recruits new ones is a cost centre with good conversion metrics.
- Leak rate. Redemptions that came from outside the tagged segment. Should be near zero; if it is not, the gate is not working.
If incremental revenue is flat but retention is up, the program is working — it is just working on a slower clock than a campaign report shows.
The offer menu
Early access and private pricing are the two big ones, but the pattern supports more, and variety matters — a tier that always receives the same 15% stops feeling like a tier.
Restock priority. For anything that sells out, the right to buy before the restock goes public is worth more than a discount and costs nothing. It also solves a real customer problem rather than manufacturing one.
Free shipping, permanently. Unglamorous and disproportionately effective. Shipping cost is the most common cited reason for abandonment, and removing it for your best customers is a benefit they notice on every order rather than once a quarter.
A gift at a spend threshold. Same economics as the subscription gift: a one-time cost that reads as generous. Works especially well as a surprise rather than an advertised mechanic.
Bundle pricing not offered publicly. A curated set at a price that only exists on the link. Raises average order value rather than cutting margin on what they were already buying.
Anniversary or milestone offers. Triggered on the date of their first order rather than on a campaign calendar. These convert well because they arrive when nothing else is competing for attention, and they cost nothing to schedule.
Input on what you make next. No discount at all. A link to a private survey or a first look at prototypes. Cheap, and the customers who take it up are the ones worth listening to.
The pattern across all of these: the good ones cost you something once, or cost you nothing at all. The bad ones cut margin on purchases that were already happening.
Tiering without building an economy
Two tiers is usually enough, and three is the practical maximum before it needs software.
- Tier one — repeat customers. Wide, low-effort benefits: free shipping, early access windows, occasional gifts.
- Tier two — top spenders. Narrow, high-touch: private pricing, personal contact, first access to constrained inventory.
Resist adding a third until the first two are running well. Every tier multiplies the segmentation work, the number of links to maintain, and the number of ways a customer can end up in the wrong bucket. The failure mode of loyalty programs is complexity nobody maintains, and it starts with a fourth tier that seemed reasonable at the time.
Re-evaluate tiers on a schedule — quarterly is fine. Customers move in both directions, and a tier list that only ever grows stops selecting for anything within a year.
Handling the awkward cases
A customer just missed the threshold. Let them in. The cost of one extra VIP is trivial; the cost of a customer who spent $980 against a $1,000 threshold and got told no is a story they tell other people. Set the rule for automation, not for adjudication.
A VIP shares their link publicly. The usage cap already bounds it. Treat the first instance as a mistake, not a betrayal — most people do not realise the offer was meant to be private unless you said so. Say so in the email.
Someone asks why they are not a VIP. This is why the threshold needs to be stateable. “Customers who have ordered five times or spent over X” is an answer. “Our VIP list” is not, and invites the follow-up you cannot answer.
A VIP wants to buy for someone else. Fine, and usually a good sign. This is an argument for passcode gating over account gating on gift-adjacent offers — strict non-transferability can block a legitimate purchase.
Identifying the segment in practice
Shopify gives you enough to build the tier without extra tooling, but the mechanics differ by how you want it maintained.
Manual tagging from an export. Export orders, aggregate by customer, apply the threshold in a spreadsheet, and bulk-tag the result. Crude, takes an hour, and is the right starting point — it forces you to look at the actual distribution before committing to a number. Most merchants discover their threshold instinct was wrong by a factor of two.
Shopify Flow, on order creation. Flow can evaluate a customer’s order history and apply a tag automatically as orders land. This is where you want to end up, because it keeps the tier live without anyone remembering to refresh it. The trade-off is that it only evaluates going forward, so you still need one backfill pass.
Your ESP’s segment. Klaviyo already computes lifetime value and order counts, and can sync a segment back. Convenient if the offer is always going out by email anyway, though it leaves the definition living in a system separate from Shopify — worth being deliberate about which one is authoritative.
Whichever you pick, decide where the tier is defined and treat everything else as a copy. Two systems both claiming to own the VIP list is how customers end up receiving an offer they cannot use.
Look at the distribution first
Before setting a threshold, plot it. Most stores have a much steeper curve than they expect — a small fraction of customers accounting for a large share of revenue. That shape tells you where the natural break is, and it is usually more selective than the round number you would otherwise have picked.
If the curve is flat, you may not have a VIP tier worth building yet. A store where the top decile spends only slightly more than the median is telling you the differentiation is not there, and effort is better spent on retention generally.
Why exclusivity works, and where it stops working
The mechanism is straightforward: a benefit only available to some people is worth more than the same benefit available to everyone, independent of its cash value. Restock priority costs nothing and lands better than a 10% discount, because the value is in the ordering rather than the money.
This holds as long as three things stay true.
The boundary is real. If the offer leaks, the value evaporates immediately — not gradually. A VIP who sees their exclusive price on a coupon site does not experience a slightly-less-valuable benefit; they experience having been told something untrue.
The criteria are attainable. Exclusivity motivates the people outside it only if they can see a way in. A tier that appears arbitrary produces resentment in the excluded rather than aspiration.
It stays scarce. The most common decay path is generosity: the tier widens because a campaign underperformed and someone extended it to more customers. Do that twice and the benefit is a standard discount with a legacy name.
The practical implication is that the gate is not an implementation detail. It is the offer. Everything in the mechanics section above exists to keep that boundary intact, because the moment it fails, the benefit stops being worth what you paid for it.
A 60-day rollout
Days 1-10 — define and tag. Pick the threshold, tag the segment, count it. If it is more than 10-15% of your customer base, tighten the threshold. Write the rule down.
Days 11-20 — build one offer. Just one. Early access on the next drop is the easiest starting point because it costs nothing and needs no margin approval. Build the gated link, set the expiry, test it yourself while logged out.
Days 21-30 — send it and hold back a slice. Send to 80% of the segment and hold 20% as a control. This is the only way you will ever know whether the program adds revenue or moves it, and it is much harder to retrofit later.
Days 31-45 — measure and adjust. Compare the two groups on revenue, units per order, and conversion. Look at leak rate. Decide whether the offer was too generous, not generous enough, or fine.
Days 46-60 — add the second offer and formalise. A standing benefit — free shipping or restock priority — alongside the episodic one. Document the tier rules somewhere permanent, and set a quarterly reminder to re-evaluate the segment.
By day 60 you should have a defined tier, one episodic and one standing benefit, and a measured read on whether either is incremental.
What not to do
Do not announce the program publicly. A VIP tier advertised on your homepage with the qualifying criteria is a discount ladder, and customers will optimise against it — splitting orders, timing purchases, waiting for the threshold. The tier works better discovered than advertised.
Do not make the reward a permanent site-wide discount. That is not loyalty, it is a repricing of your best customers, and it is very hard to withdraw once given.
Do not use a hidden collection. Covered above, but it is the single most common implementation and it is not private.
Do not let the tier ossify. A VIP list that is the same people two years running means the program rewards history rather than behaviour, and the customers you most want to encourage — the ones approaching the threshold — are getting nothing.
Do not run it without a holdout. Every VIP campaign posts good conversion numbers, because you selected for people who buy. Without a control, you will never know whether any of it was incremental, and you will keep funding it on the strength of a metric that cannot fail.
Further reading
- How to create VIP reward links on Shopify — the implementation walkthrough, without a loyalty app.
- Shopify B2B and wholesale playbook — the account-level version of private pricing.
- Subscription gifting playbook — a one-time gift that converts repeat buyers onto a plan.
- Shopify discount codes playbook — why codes leak and links do not.
- Checkout Links for wholesale — the link layer for negotiated pricing.
- Checkout Links for Klaviyo — sending gated offers to a tagged segment.
- Checkout Links vs draft orders — for one-off individually-priced offers.















