On launch day you will post in a dozen places. If none of the links are tagged, every visit lands in "direct" or "referral" and you will never know which post was worth the effort. Tagging takes two minutes per link and is the difference between a launch you can learn from and one you cannot.
The five parameters
| Parameter | Required | Answers | Example |
|---|---|---|---|
utm_source | Yes | Where exactly | producthunt, newsletter, hn |
utm_medium | Yes | What kind of channel | referral, email, social, cpc |
utm_campaign | Yes | Which effort | launch-week-35 |
utm_term | No | Paid keyword | time+tracking |
utm_content | No | Which link on the page | hero-button |
The first three are not optional in practice. GA4 will record a session with only some set, but channel grouping breaks and the row ends up in "unassigned".
Source vs medium trips everyone up. Source is the specific property - producthunt, linkedin, mailchimp. Medium is the category - referral, social, email. Source answers who sent them, medium answers how.
Conventions that keep reports readable
Lowercase everything. UTM values are case-sensitive. Twitter, twitter and TWITTER are three separate rows in your report, and once they are in there you cannot merge them retroactively. Pick lowercase and never deviate.
Hyphens, not spaces or underscores. A space becomes %20 and looks broken everywhere. Underscores work but read badly in URLs.
Use the standard mediums. Analytics tools have built-in channel groupings keyed to specific medium values: organic, cpc, email, social, referral, affiliate, display. Invent medium=twitter-post and your traffic falls out of the standard channel report into "other".
One campaign per effort, not per link. All your launch-day links share utm_campaign=launch-week-35. What differs between them is source and content. That way the campaign report shows the launch as one number, and you can drill into which source drove it.
Write the convention down. A three-line note in your repo saying which values you use beats remembering in four months.
What never to tag
Internal links. Tagging a link between two pages on your own site starts a new session and overwrites the original attribution. The visitor who came from Product Hunt and then clicked a tagged internal link is now attributed to that internal link. This is the single most damaging UTM mistake, and it is common, because it looks like it should work.
For internal link testing, use event tracking, not UTMs.
Anything you paste in an email signature that lives forever. A campaign name from 2024 still showing up in reports is noise.
The SEO side effect
A tagged URL is a different URL as far as a crawler is concerned. If someone links to yoursite.com/?utm_source=newsletter and that page is indexable, you now have two indexed URLs for one page, splitting their link signals.
The fix is one line: a self-referencing canonical pointing at the clean URL. Every page should have one anyway, and with it in place tagged URLs never compete.
<link rel="canonical" href="https://yoursite.com/" />
Do not block UTM parameters in robots.txt to solve this. Blocking prevents crawling, which prevents Google from ever seeing the canonical, which leaves the tagged URL indexed with no content.
A launch-day tagging plan
For a typical launch, tag these before you post anything:
?utm_source=producthunt&utm_medium=referral&utm_campaign=launch-week-35
?utm_source=hn&utm_medium=referral&utm_campaign=launch-week-35
?utm_source=x&utm_medium=social&utm_campaign=launch-week-35
?utm_source=linkedin&utm_medium=social&utm_campaign=launch-week-35
?utm_source=newsletter&utm_medium=email&utm_campaign=launch-week-35
?utm_source=reddit&utm_medium=social&utm_campaign=launch-week-35
Build them all at once, put them in a note, and copy from there. Building them ad hoc while posting is how inconsistent casing gets in.
Tag the destination people actually convert on, not just the homepage. If your Product Hunt link goes to a dedicated landing page, tag that URL - otherwise you cannot tell whether the landing page or the homepage converted better.
Reading the results
A week after launch, three numbers tell you most of it:
- Sessions by source. Which post actually sent people.
- Conversion rate by source. Almost always inverted from volume. The biggest source is rarely the best one.
- Sessions still labelled direct. If this is large, you missed tags somewhere, or a source stripped them. Some apps strip query strings on outbound links - mobile clients are the usual culprit.
The uncomfortable finding for most launches is that the channel with the most traffic converts worst, and a small newsletter mention converts ten times better. You only learn that if the links were tagged.
Launch it where the numbers are checked
RankCert ranks products on domain control we verify ourselves. Listing is free and the link stays dofollow whether or not you display the badge.
