Per-surface URLs, in full. One template, six rules, two worked examples.
Stage 03 of the four-part Routemint framework, in depth. A copy-paste UTM tag template (source / medium / campaign) with a filled-in example already wired, a six-point naming-rules checklist every tracked link has to clear, and two worked examples — a Reddit post and a Substack newsletter CTA — tied together by one campaign so attribution lands clean in Whop's dashboard.
One Whop URL per surface — that is the whole game.
Every Whop link without a per-surface UTM lands in the dashboard looking the same as every other. Attribution collapses, the router stops knowing which creative converted, and the 30% recurring share still pays — just without telling you why.
Tracking hygiene is the discipline of putting a distinct, per-channel UTM on every Whop link. One URL per surface — Substack gets one, X gets one, Discord gets one, TikTok gets one — so the conversion lands in Whop's dashboard under a row the router already knows, and the first, second, third and fourth month of a referred buyer all pay identically. Without it, every Whop link is invisible to your own reporting and you're trading hours for signups you can't audit.
The playbook keeps one tracking heuristic on the index page (one URL per surface — distinct, tag-bearing, audit-ready). The chapter you are reading extends it with the three things that turn a per-surface URL from an idea into a working discipline: a copy-paste template (the three fields, their grammar, a filled example), a six-point naming-rules checklist (the rules every tag has to clear or the dashboard fragments), and two worked examples of real, fully-tagged Whop affiliate links — a Reddit post and a Substack CTA — tied by one campaign.
Apply them in order. Start with the template — the three fields, the lowercase hyphenated grammar, the way source and medium each name one thing. Run every surfaced link through the six-point naming-rules screen. Tag the campaign last — the same campaign name across every link in the routing ledger is what makes per- surface attribution collapse into one Whop dashboard row instead of three or four. Pre-sell without per-channel tracking is a router that can't audit its own routing; tracking without staging is just a one-off URL. The two together close stage 03 and hand off into stage 04 — tier-stacking, the seller-referral layer that pays 30% of Whop's gross profit on top.
The tag template
Source, medium, campaign — one per surface.
Every tracked link is three fields. Source is *where the click lives*. Medium is *what kind of touch it is*. Campaign is *the cross-cutting objective that ties every surface into one dashboard row*. Lowercase, hyphenated, no spaces, no dates — and one filled example below so the operator has a copy-paste starting point.
utm_source
Source
The platform the click lives on. One per surface: substack, reddit, x, discord, tiktok.
utm_medium
Medium
What kind of touch the click is. Matches the surface: post, newsletter, bio-link, dm.
utm_campaign
Campaign
The objective that ties every surface into one dashboard row: alpha-flow, saas-bundle-q3, trading-mentor-launch.
The Whop pick below is one of the rows from the index — Discord alpha, monthly recurring, 90-day refund window. The three tags are filled with the canonical Substack newsletter pair so the operator has a known-good URL to fork.
A Whop URL with a malformed tag is worse than an untagged URL — Whop's dashboard reads the malformed tag, lands it in the wrong column, and the router stops knowing which surface converted at all. Six rules. Every tag has to clear them.
01
Always lowercase
Whop's analytics are case-sensitive — 'Reddit' and 'reddit' land as two separate sources. Lowercase everything, every tag, every campaign.
02
Hyphens, not underscores or camelCase
Some analytics tools strip underscores on read; camelCase splits inside dashboards. 'crypto-flow' reads as one token and survives every parser.
03
No dates inside tracking IDs
Campaigns recur. A dated ID ('alpha-flow-2026-08') fragments the dashboard every time you re-run the campaign. Use 'alpha-flow' and let the date be a column the dashboard already tracks.
04
One source / medium pair per surface
Don't reuse 'substack / newsletter' for a Reddit post. UTM source is *where* the click lives, UTM medium is *what kind of touch* it was. One surface = one source + one medium.
05
Campaign is the cross-cutting objective
Same 'utm_campaign' ties the Reddit post and the newsletter CTA into one Whop dashboard row — not surface-specific. The campaign is the objective, both surfaces pay into it.
06
Match source / medium across every link in a campaign
A campaign with mixed 'medium' values — 'post' on Reddit but 'email' on Substack — breaks the per-source column. Use 'post' everywhere a link is a post body, and 'newsletter' everywhere it is a newsletter CTA.
Worked examples
Two tracked links, one campaign.
A Reddit post and a Substack newsletter CTA — same Whop pick, same campaign, two different surfaces. Per-surface URL stacks let Whop's dashboard tell you which surface drove the signup, which is the only way to write a routing ledger you trust.
Worked example · Reddit post
utm_source + utm_medium
Reddit · post body
Self-post in r/cryptocurrency — 'I rebuilt my discord alpha flow around one thread'.
Source 'reddit' + medium 'post' captures the surface pair: a Reddit visitor clicking through from a post body, not a comment or sidebar widget. The campaign is the same 'alpha-flow' so the click lands in the same Whop dashboard row as the newsletter example below.
Worked example · Substack newsletter
utm_source + utm_medium
Substack · newsletter CTA
Sunday Substack alpha digest — CTA button copy 'Open Crypto Calls Lounge →' at the bottom of the post.
Source 'substack' + medium 'newsletter' is the canonical pair for a Substack-delivered CTA: 'substack' locates the platform, 'newsletter' identifies the touch is an email-delivered link, not a post-page link. The same 'alpha-flow' campaign keeps both surfaces in one Whop dashboard row.
Pick the next step
From the per-surface URL stack into the math.
Per-surface URLs let Whop's dashboard tell you which creative converted. The commission calculator takes the same numbers and turns them into the math — what 51% recurring pays on a tracked pick, what month-four cohort math looks like on the same row, and what the seller-referral tier layers on top of the product share. Run the numbers before you scale the routing ledger.