What it looks like
https://www.example.com/offer/?utm_source=newsletter&utm_medium=email&utm_campaign=autumn_sale
The UTM parameters
- utm_source: where the traffic comes from, such as newsletter, facebook or partner-site.
- utm_medium: the type of channel, such as email, cpc, social or referral.
- utm_campaign: the campaign name, such as autumn_sale.
- utm_content: which link or ad version was clicked, useful for A/B tests.
- utm_term: the paid keyword, mostly for ads that aren’t tracked automatically.
Best practice
- Use one naming scheme, in lowercase, and keep a shared list of the values you use.
- Tag links in emails, social posts, QR codes, partner sites and ads on platforms other than Google Ads.
- Don’t add UTM codes to internal links on your own site: they overwrite the visitor’s real source in your reports.
- Google Ads tracks clicks automatically with auto-tagging, so you usually don’t need UTM codes there.
UTM example: three links, three sources
| Where the link is | source | medium | campaign |
|---|---|---|---|
| October newsletter | newsletter | october_offer | |
| Instagram bio link | social | profile_link | |
| Google Ads (manual tag) | cpc | brand_search |
UTM rules that keep your data clean
- Use lowercase, and the same spelling every time (“facebook”, not “Facebook” and “fb”).
- Use consistent medium names such as email, cpc, social, referral and affiliate.
- Keep a spreadsheet of the campaign names.
- Never use UTM tags on links inside your own site, since this resets the source.
- Do not put personal data in UTM parameters.
- Use a builder tool or a template so that nobody has to type them by hand.
UTM mistakes
- Tagging internal links, which breaks attribution.
- Mixed capitalisation that splits one source into several rows.
- Forgetting to tag email and QR code links, so they show up as direct traffic.
UTM FAQs
Do UTM tags affect SEO?
Not directly, but tagged URLs can create duplicates, so use canonical tags. See direct traffic and canonical URLs.
Does Google Ads need UTM tags?
Auto-tagging usually handles it. See tracking codes and Google Analytics.