Generates conformant tracking URLs for paid campaigns, personal outreach, and organic distribution. Everything is local — nothing leaves your browser.
Defaults to homepage. Change for landing pages.
Format: {quarter}_{audience}_{angle}
Auto-converts to jane-d for utm_content.
Just for you — never goes in the URL.
Creative ID. {format}{n}_{description}
Leave blank for paid social / personal.
—
History — last 50, stored in this browser
Tips, tricks & gotchas
Personal outreach pattern. Use utm_source=personal, utm_medium=referral, a stable quarterly utm_campaign like 2026q2_founders_outreach, and the recipient slug in utm_content. Lets you see in PostHog "which friend converted" without polluting your campaign axis.
Recipient slug guidance. First-name + last-initial (jane-d) is short, recognizable to you, and not super-googleable. Avoid full last names if the link might be forwarded.
Sensitive contacts. Use a short hash (?utm_content=ab12cd) and keep the mapping in a private Google Sheet — out of the URL entirely.
Never tag internal links. Internal navigation on marginpricing.com should never carry UTMs — they reset attribution on every click and corrupt the funnel data.
Link shorteners are fine. PostHog reads UTMs after the redirect. bit.ly, short.io, or a Cloudflare Pages function at /r/{slug} all work.
Email-client previewers may strip UTMs from preview URLs but keep them on click — verify by clicking the link from your inbox, not by hovering.
Test before sending. Paste the URL in an incognito window (so you don't trigger your own ph_optout), then check the PostHog Activity feed for the event with the right utm_* properties.
First-touch vs last-touch. PostHog captures both. First touch lives in $initial_utm_* person properties. Last touch is on the event itself. Both views are available on every dashboard.
One stable campaign per quarter for outreach is better than many tiny ones. Slice the data by utm_content instead.
tools.marginpricing.com · gated by Cloudflare Access