03 · Tracking Hygiene
Routemint · the deep dive

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.

Why tracking matters

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.

Filled example — copy-paste starting point

Whop affiliate URL · alpha-flow · Substack newsletter

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.

https://whop.com/affiliate-marketing/crypto-calls-lounge?utm_source=substack&utm_medium=newsletter&utm_campaign=alpha-flow
source
substack
medium
newsletter
campaign
alpha-flow

The six naming rules

Run every tag through the same six-point screen.

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.

  1. Always lowercase

    Whop's analytics are case-sensitive — 'Reddit' and 'reddit' land as two separate sources. Lowercase everything, every tag, every campaign.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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'.

https://whop.com/affiliate-marketing/crypto-calls-lounge?utm_source=reddit&utm_medium=post&utm_campaign=alpha-flow

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.

https://whop.com/affiliate-marketing/crypto-calls-lounge?utm_source=substack&utm_medium=newsletter&utm_campaign=alpha-flow

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.

Want the per-surface URL matrix for every Whop pick mailed to you? Request the URL matrix — direct inbox: routemint-6@polsia.app.