Referral Mechanic Design
Design the in-product moment where a user has both motivation and an audience to invite someone, and make the invite one click.
Why
A referral mechanic works only when it fires at the moment of peak motivation — right after the user experienced the value they want to share, not on a settings page they visit once. The mechanic must reduce friction to one click (pre-filled message, contact picker, deep link) because every additional step loses 30-50% of potential inviters. The audience matters as much as the moment: a B2B user invites colleagues at the moment of collaboration, a consumer user invites friends at the moment of a shareable result. A referral button in a settings menu fires at zero motivation and converts near zero; a 'share this with your team' button on the just-saved dashboard fires at peak motivation and converts 10x.
When
When users complete a shareable outcome (saved dashboard, finished document, won game). Build the trigger into the outcome, not a menu.
How
1. Map the user journey and mark every moment where the user produces a shareable artifact or experiences a peak-value moment 2. Pick the 1-2 moments with highest motivation × largest natural audience (team for B2B, friends for consumer) 3. Design the trigger UI at that exact moment: a contextual button, not a menu item — "Share with your team" on the saved dashboard 4. Pre-fill the invite message with the user's result and a one-line value prop; let them edit but don't start blank 5. Integrate the contact picker (Google Contacts, Slack workspace, phone contacts) so selecting recipients is one click 6. Generate a deep link with the inviter's ID and the artifact context so the recipient lands on the shared thing, not the homepage 7. Track the funnel: trigger impressions → invites sent → invites opened → signups → activated; fix the weakest step 8. Iterate the trigger placement and copy weekly; a 10% lift in trigger impressions compounds across the whole funnel
Example
# B2B: collaborative dashboard tool Peak moment: user saves a dashboard they want their team to see Trigger: "Share with your team" button on the saved-success toast Pre-filled message: "I built a deploy-frequency dashboard — edit with me" Contact picker: Slack workspace (#devops channel) — one click Deep link: ez4code.com/d/deploy-freq?from=alice&shared=true Recipient lands: on the dashboard (read-only), CTA "Edit with Alice" # Funnel (weekly) Trigger impressions: 2,000 (on saved-dashboard toasts) Invites sent: 600 (30% of impressions) Invites opened: 360 (60% of sent) Signups: 180 (50% of opened) Activated: 72 (40% of signups) → k = 72/2000 = 0.036 per sharing user (improve trigger placement)
Common Problems
- ⚠Putting the referral button in a settings menu where motivation is zero; it gets 0.1% CTR and the team concludes 'referrals don't work'.
- ⚠Starting the invite message blank — 60% of users won't type anything and the invite never sends.
- ⚠Dropping the recipient on the homepage with no context; they bounce because they don't know why they're there.
- ⚠Measuring only signups, not the full trigger→activated funnel, so the weakest step stays invisible.
Best Practices
- ✓Fire the trigger at the peak-motivation moment (just-saved, just-won, just-shared), not in a settings menu; placement is 80% of the result.
- ✓Pre-fill the invite message with the user's result and a value prop; a blank message kills 60% of invites.
- ✓Use a deep link that lands the recipient on the shared artifact, not the homepage; context is what converts the open to a signup.
- ✓Measure the full trigger→activated funnel and optimize the weakest step; a 10% lift anywhere compounds through the whole chain.