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 · 2 min read
Branch vs AppsFlyer vs a link platform: which do you actually need
Branch and AppsFlyer are mobile measurement partners built for multi-network paid acquisition. Most teams comparing them do not need either yet. Here is where the line falls and what the cheaper answer looks like.
Attribution · 3 min read
Mobile attribution basics: why install numbers never match
Your ad platform, your store console, and your analytics will all report different install counts. Here's why that is expected, what each source actually measures, and how to reason about the gaps instead of chasing them.
Fundamentals · 1 min read
Bitly vs Dub vs Bridgly: picking by job
Bitly shortens. Dub pays digital partners. Bridgly routes app installs and ties physical QR scans to attributed sales and commissions.

