UTM tags take seconds to add, which is exactly why they end up a mess. Nobody agrees on capitalisation, everybody invents their own campaign names, and six months later the report has four rows for one campaign.
What each one is for
utm_source — the platform. instagram, newsletter, podcast.
utm_medium — the type of traffic. paid_social, email, qr, referral.
utm_campaign — the specific push. spring_launch, black_friday.
utm_content — which creative. video_a, static_b. Only when testing.
utm_term — keyword or audience. Only for keyword campaigns.
The convention
Lowercase everything. Analytics treats Instagram and instagram as two sources. One stray capital splits a campaign in half.
One separator, forever. Underscores or hyphens, pick one. Mixing them creates the same split.
Date-stamp recurring campaigns. newsletter_2026_09 beats newsletter when you want month-over-month.
Write the source down. A shared list of approved values, however informal, prevents ig / insta / instagram appearing as three sources.
Where it breaks for apps
UTMs are a web convention. They are read by web analytics on your site. The App Store and Google Play are not your site.
So a UTM-tagged link to a store page tells you the click happened. It cannot tell you the install happened, and it certainly cannot carry the campaign into the app afterwards.
That gap is what a routing link fills: it reads the UTM on the way through, records it against the click, and can hold the destination across the install.
The mistake that costs most
Tagging some links and not others. A half-tagged account is worse than an untagged one, because the untagged traffic piles into direct and quietly makes your best channel look like your worst.
If you tag anything, tag everything.
Frequently asked questions
- Do UTM parameters work for app installs?
- They work up to the store. UTMs are read by web analytics, and the App Store and Google Play are not your website. The tags describe the click; carrying that context into the app after install requires a link layer that holds it.
- What are the five UTM parameters?
- utm_source is the platform, utm_medium is the type of traffic, utm_campaign is the campaign name, utm_content distinguishes creative variants, and utm_term carries a keyword or audience.
- Should UTM values be uppercase or lowercase?
- Lowercase, always, and pick one separator. Analytics tools treat Newsletter and newsletter as different values, so a single capital letter silently splits one campaign into two rows.
- How many UTM parameters should I use?
- Source, medium and campaign on everything. Content when you are testing more than one creative. Term only for keyword-driven campaigns. Filling in all five out of habit adds noise.
Read more
Attribution · 3 min read
How to track sales from ChatGPT and AI assistants
AI assistants like ChatGPT, Perplexity, Gemini, and Claude now recommend products and send buyers to stores. Here is how to see that traffic, attribute AI-driven sales, pay AI agents and their operators commission, and get recommended more often.
Attribution · 3 min read
How to track affiliate sales in Stripe (without custom code)
Stripe has no built-in affiliate tracking. Here is how to attribute Stripe Checkout and subscription payments to affiliates and referral partners using webhooks, how recurring commission and refunds work, and the mistakes that cause missing commissions.
Attribution · 4 min read
How affiliate tracking works: cookies, click IDs, and server-side tracking
How affiliate tracking actually works in 2026: tracked links, first-party cookies, click IDs, server-side conversion tracking with Stripe and Shopify webhooks, attribution windows, and why browser privacy changes broke pixel-based affiliate tracking.
