Notes · Tracking
UTM links: know which post brought the lead
A simple UTM naming system for Instagram, Meta ads, WhatsApp and email links, so GA4 shows which post or ad brought each lead.
You posted on Instagram, ran a Meta ad, put a link in your bio and sent a WhatsApp broadcast. Three enquiries came in. Which one worked?
Without tagged links, analytics will lump most of that traffic together, or worse, call it “direct”. UTM parameters fix this. They’re a few extra words added to the end of a link that tell Google Analytics where the visit came from.
01 · The five parameters
A tagged link looks like this:
https://example.com/free-review?utm_source=instagram&utm_medium=social&utm_campaign=oct-review-offer&utm_content=reel-tracking
- utm_source: the platform.
instagram,facebook,whatsapp,newsletter. - utm_medium: the type of traffic.
social,paid_social,email,cpc. - utm_campaign: the campaign or offer.
oct-review-offer. - utm_content: which post or ad.
reel-tracking,story-1. - utm_term: for search keywords; rarely needed outside search ads.
Source, medium and campaign are the ones to always fill in.
02 · Get the medium right, or GA4 files it in the wrong place
GA4 sorts traffic into channels using rules. For Paid Social, the source must be a social site and the medium must match a pattern that includes cpc, ppc, retargeting or anything starting with paid. Use utm_medium=social for organic posts and you’ll land in Organic Social instead (GA4 default channel group).
So: organic posts get social, paid ads get paid_social. That one rule keeps your paid and organic results apart.
03 · Lowercase, always
GA4 treats Instagram and instagram as two different sources. Pick lowercase with hyphens, never spaces, and never change it. Mixed capitals are the most common reason a UTM report looks messy.
04 · A naming system you can copy
| Where the link goes | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| Instagram bio | social | bio | |
| Instagram post or reel | social | the offer, e.g. oct-review-offer |
|
| Meta ad | facebook or instagram | paid_social | the campaign name |
| WhatsApp broadcast | social | the message, e.g. diwali-offer |
|
| newsletter | the email’s subject, shortened |
Put the table in a shared sheet and build every link from it. That’s the whole system.
05 · Meta ads can fill the tags in for you
Under the ad’s destination, the URL parameters field has a “Build a URL parameter” helper that accepts dynamic values like {{campaign.name}} and {{ad.name}}, so every ad tags itself with its own campaign and ad name. One catch: the names are captured when the ad is published, so renaming a campaign later doesn’t update links already running. Name campaigns well before launch, and the reports read themselves.
06 · Google Ads: let auto-tagging do it
For Google Ads, turn on auto-tagging and link the account to GA4. Google passes the campaign details itself, so you don’t need manual UTMs on Google Ads links.
What you get
A GA4 report, Traffic acquisition by session source / medium, that shows which post, ad and broadcast brought visits, and with a conversion set up, which ones brought enquiries. That’s the number that decides where next month’s budget goes.
Tracking is part of every website and ad account I set up. If yours shows mostly “direct” traffic, the free review will tell you why.
Lowercase, consistent, written down. A UTM system only works if every link follows the same rules.
Related: Website development · Meta Ads management · Google Ads management
Want me to check yours?
Book a free review