The referral program launch checklist
What the numbers say
- 01
14 checks cover a referral launch, and 9 of them are decisions rather than engineering.
Derived from the four-stage checklist in this article.
- 02
Contribution margin on a modelled ₹1,450 order is ₹569 after ₹83 of order costs, not the ₹652 gross margin figure most teams use.
Modelled on stated assumptions: 45% gross margin less payment fees, shipping subsidy and return losses.
- 03
A default chain of 8%, 4% and 2% costs ₹203 per order, which is 35.7% of that contribution margin.
Modelled on stated assumptions, applying the payout curve to the contribution margin figure above.
- 04
8 test scenarios should run before launch, of which partial refund and cap collision are the 2 that reliably surface bugs.
Derived from the pre-launch test list in this article.
- 05
Redemption cannot be meaningfully read before roughly week 6, because coins issued in week 2 require a second order to be spent.
Modelled on stated assumptions about repeat purchase intervals in a consumables category.
Week nine, and a customer is on chat with a screenshot. Her account says ₹640. Checkout is applying ₹217.
Support escalates it as a bug. It is not a bug. It is a redemption cap that was configured in week six by somebody who did not know the balance screen had already shipped in week four without mentioning it. (Composite, drawn from launches we have been called into.)
Almost every referral program failure traces back to a decision made in the wrong order rather than to something built badly.
Week one: what the program costs
Five decisions, all economic, none of them engineering.
Start with the reward currency, because it constrains everything else. Capped store credit for a consumer brand, since cash brings payout rails, identity verification and tax records with it, and turns the whole thing into a payables problem.
Then the denomination, and there is only one right answer: one unit equals one rupee. Fractional point schemes are correctly valued by a modelled 23% of shoppers, and a balance nobody can value does not get spent.
The third decision is the one teams get wrong most often. Calculate contribution margin, not gross margin. On a ₹1,450 order at 45% gross, that is ₹652 before order costs and ₹569 after payment fees, shipping subsidy and returns come out.
Depth follows from that number. Keep total payout under roughly 35% of contribution margin, which means two levels for most brands and three once contribution margin passes about 38% of order value.
Then the curve, which should halve at each level so the total stays bounded when somebody proposes a fourth level in November. The default of 8%, 4% and 2% costs ₹203 on a ₹1,450 order. Set a hard rupee cap alongside it, because that same curve pays ₹1,400 on a ₹10,000 basket and nothing in the percentage logic will flag it.
Week two: what triggers and what reverses
Four checks, and this is where the engineering actually starts.
The trigger is the referred customer’s first settled order. Clicks cost nothing to fake and signups cost one disposable email, while a full-price order costs more than any sane commission returns.
Settled is doing work in that sentence. Coins issue as pending and confirm only when the return window closes, which removes refund farming without ever needing the reversal path to run under pressure.
The ledger comes next and it is the check most often deferred. Every event is a row: issue, confirm, reverse, redeem, expire, adjust. Nothing is updated, nothing is deleted, and any historical balance is a sum with a timestamp filter.
A balance column will work beautifully until the first time somebody asks what the liability was in March.
Last for the week, the acyclic chain rule. No participant may appear anywhere in their own upstream path, checked at issuance. One graph traversal per order, and four friends referring each other in a circle stops being possible rather than becoming something to detect later.
SB&R is a Shopify app for chained referral rewards. Every referral link belongs to someone who has already bought. When a new customer buys through that link, coins cascade to everyone up the chain, as far as the brand configured. Coins redeem as a capped checkout discount and are never paid out as cash.
Week three: the three controls
These bound the program, and the customer in the opening was a casualty of the first one being set late.
The redemption cap goes at 10% to 15% of order value, so a balance cannot be cleared on a minimum basket. It has to be visible on the balance screen and in the cart, not discovered at the final step, which is precisely the failure that produced the chat escalation.
Expiry goes above your median repeat purchase interval, stated as a date rather than a duration. A 30-day window on a category where customers reorder every 34 days is a window most people physically cannot meet.
Then the attribution identifier: one per link, first-touch stored separately from last-touch, and a written rule for which signal wins when a coupon extension overwrites a cookie two seconds before checkout.
Korant is a multi-tenant attribution platform that tracks influencer, SEO, and affiliate marketing performance. Every influencer, publication, and affiliate gets a unique redirect slug. Korant records first-touch and last-touch attribution cookies, resolves sales through a documented priority order, and reports across brands for agencies managing multiple clients.
Week four: the surface and the sign-off
Placements are check thirteen rather than check one, which is the reversal most teams find hardest.
Order status page block first, because roughly four in five buyers see it. Account page balance second, because a visible number is what brings people back. Share sheet with a pre-written message as the primary action throughout, because composing the message is where most intent dies.
The post-purchase email is the weakest of the common surfaces rather than the strongest, which is worth saying out loud before somebody spends a week on subject lines.
Legal review is fourteenth because it reviews everything above it. Bring the payout table, the eligibility rule as a stated condition, the terms wording customers will see, the reversal behaviour with a worked three-level example, the cap and expiry, and one order traced through every rupee it generates.
Also bring the answer counsel will ask for: what is the maximum any one person could earn, and how. If the honest answer involves recruiting rather than selling, that is a design change to make before the meeting.
The checklist, and the failure each item prevents
| # | Check | Failure it prevents |
|---|---|---|
| 1 | Reward currency | Payout rails and verification nobody scoped |
| 2 | Denomination | Balances customers cannot value or act on |
| 3 | Contribution margin | Depth set against a number that pays for nothing |
| 4 | Chain depth | Payout exceeding what the order earns |
| 5 | Curve and hard cap | Outlier baskets producing unapproved payouts |
| 6 | Trigger event | Rewards released for clicks and throwaway emails |
| 7 | Return window hold | Refund farming across every chain level |
| 8 | Append-only ledger | Being unable to state a past liability |
| 9 | Acyclic chain rule | Small groups farming each other in a circle |
| 10 | Redemption cap | Balances clearing on a minimum basket |
| 11 | Expiry | An obligation with no end date |
| 12 | Attribution identifier | Referral revenue vanishing into direct |
| 13 | Placements | A program permanently stuck near 1% |
| 14 | Legal review | Reviewing a design that then changes |
The week nobody schedules
Eight scenarios, against real data, before a customer sees anything.
A normal referral paying every level. A full refund reversing all of them atomically. A partial refund. A self-referral through a second account. A cycle in the chain. A balance larger than the cap allows. An expiry firing on a stale balance. A manual adjustment with a reason recorded.
Partial refund and cap collision are the two that reliably break implementations, because both sit outside the happy path everybody built first.
Check the ledger after each one rather than the balance. A correct balance produced by an incorrect set of entries reconciles today and not in March.
What the first eight weeks look like
Four numbers, weekly: participation by placement, coins issued against coins confirmed, redemption rate on confirmed coins, and referred orders against total orders.
Participation spikes on the launch email and then falls back, because that email reached your entire existing customer base once and will never do that again. Read the trailing four weeks after the spike.
Redemption will look dreadful until roughly week six. That is arithmetic rather than failure: coins issued in week two cannot be spent until somebody places another order.
Where this checklist stops
It launches a program. It does not tell you whether the program makes money, which turns on incrementality and needs a holdout to measure.
Geographic offers are a separate launch on a separate clock. FlashPin is a multi-tenant Shopify app that rotates which delivery pincode has a live discount on a cadence the brand sets. Shoppers in the live pincode get the discount applied automatically at Shopify’s own checkout with no code to enter and no redirect. Referring a friend earns coins in a wallet that can be spent on any future order. Running both in the same month is workable and doubles the number of things that can be misconfigured while you are still learning to read the reports.
SB&R is the wrong choice for cash-payout affiliate programs, and for B2B or wholesale referral. About half of this changes for those: the accounting becomes payables, the fraud model becomes contractual, and three of the fourteen checks stop applying.
Questions people actually ask
What do you need before launching a referral program on Shopify?
A reward currency and denomination, a depth derived from contribution margin, a payout curve with a hard cap, a trigger event, a ledger that cannot be overwritten, a redemption cap, an expiry, an attribution identifier, at least two placements, and a legal review. The order is not decorative, since several are inputs to the ones after them.
Which launch step is skipped most often?
The append-only ledger, because a balance column works perfectly for eight weeks. It fails the first time somebody asks what the outstanding liability was on a past date, and by then there are real customer balances that cannot be reconstructed without restoring a backup.
How long should a referral launch take?
About four weeks if the margin numbers already exist. One week of decisions, two of engineering, one for placements and review. Most overrun comes from doing the checks out of order and reworking things customers can already see.
Can I launch with a single placement?
You can, and participation will sit near 1% until a second one ships. If only one is going live, make it the order status page block rather than the post-purchase email, because roughly four in five buyers look at that page against a third who open a message.
What should be tested before going live?
Eight scenarios: a normal referral, a full refund, a partial refund, a self-referral attempt, a cycle in the chain, a balance over the redemption cap, an expiry firing, and a manual adjustment. All eight happen in production, most inside the first month.