UTM convention

Tracking you will still understand in two years.

Our best-practice guideline for clean, logical and traceable marketing tracking – with fixed rules for every UTM parameter and examples for email, social media, video and Meta Ads.

Why we deliberately set up tracking differently

Don’t just count clicks – understand contacts.

When people talk about tracking, they usually mean anonymous numbers: clicks, page views, conversion rates. These numbers matter – they show trends and give hints about performance. For RedFoX Business Solutions, though, they are only the surface.

We aim deeper: we want to understand how a specific person came into contact with a marketing activity – through which channel, which platform, in which campaign context and through which specific element.

That is why we rely on contact-based internet campaign contact tracking that connects marketing data directly with the CRM. It follows proven best practices as recommended by Google, HubSpot and other leading marketing and CRM systems.

Level 01

UTM parameters

Describe the context of a click: channel, source, campaign, content.

Level 02

Fields in the CRM

Always show a contact’s most recent known touchpoint – they are overwritten with every new entry.

Level 03

Notes & timeline

Record the chronological history: a note with date and tracking context for every entry.

From click to contact

One link – two goals: analytics and CRM.

Most people only use UTM parameters for their analytics tool. We go one step further: the same values travel through hidden form fields straight into the contact record in the CRM. So you don’t just see how many visits a campaign brought – you see who came through it.
1

The link

Every link in an email, post, video or ad carries UTM parameters according to this convention.
2

The analytics

Google Analytics, Matomo or RedFoX Analytics show channel, source, campaign and content – anonymous and aggregated.
3

The form

When someone signs up, hidden fields read the parameters from the address and send them along.
4

The contact in the CRM

Fields show the most recent touchpoint, a dated note keeps the full history.
Few people do this
For every sign-up and every purchase you know which channel, which campaign and which button triggered it. Not estimated, not extrapolated – per contact.

The central idea

Three logics – cleanly separated.

The most important rule: marketing, platform and click are never mixed. That prevents confusion of meaning and keeps data readable even years later.

Marketing logic

What kind of activity?

utm_medium – the channel, never a platform.

Platform logic

Where was it shown?

utm_source – the specific origin.

Click logic

What exactly was clicked?

utm_content – the specific click object.

The fixed hierarchy

Channel → Source → Campaign → Content.

Channel

utm_medium
→

Source

utm_source
→

Campaign

utm_campaign
→

Content

utm_content
→

Audience

utm_term optional
+

Placement

placement optional

The parameters in detail

Which value goes where?

utm_medium

The channel

Through which marketing channel did the contact come?
The overarching marketing category. Deliberately not a platform – otherwise campaigns can no longer be compared.
emailorganic_socialpaid_socialorganic_videopaid_search
These values match the default channel groups of Google Analytics 4.

utm_source

The source

Where exactly did the click come from?
Always specific – never generic. For emails that means never utm_source=email and no doubled “email / email” in channel and source.
ChannelTypical sources
Emailnewsletter one-off send · automation email in an automation · drip email series · customer_mailing email to customers
Organic social mediainstagram · facebook · linkedin · tiktok · pinterest · youtube
Meta Adsfb · ig · msg · an – set by Meta itself via {{site_source_name}}
Videoyoutube · vimeo · tiktok
Search adsgoogle · bing
Facebook & Instagram – which spelling? For organic links we write them out: facebook, instagram. In Meta ads we keep the short codes Meta inserts itself: fb, ig. Never hard-code facebook into an ad – with automatic placements the same ad runs on both platforms, and only the placeholder knows where the click really happened. Paid and organic are separated by utm_medium anyway.

utm_campaign

The campaign

Why does this activity exist?
The strategic frame. All emails, posts and links of one initiative get the same campaign name – that is the only way to analyse them together later.
advent_calendarfreebie_onboardingcourse_launch_q1community_invite
Proven for time-limited initiatives: phase_offer_year_month, e.g. invite_webinar_2026_10.

utm_content

The content

What exactly was clicked?
Always the specific click object – with descriptive names, never technical IDs. That keeps CRM entries and reports readable for humans.
ChannelStructureExample
Emailemail + click purposeemail_welcome_cta_view_course
Social mediathe postreel_morning_routine
Videothe videoonboarding_tips_01
Adname of the ad{{ad.name}} in Meta
Bio linkmay stay emptyor e.g. profile
A link that sits permanently in a bio or profile does not belong to a single post. There, utm_content may stay empty – placement=bio already says it all.

utm_term

Audience / keyword

Is there real targeting?
Only use it when there really is targeting: keywords in Google Ads or ad sets in social ads. For organic activities the field stays empty.

placement

The placement

Where exactly was the link?
Our additional parameter – not an official UTM standard, but a useful addition. Analytics tools ignore it or keep it in the address, so it never does any harm.
ChannelValues
Emailemail_button default · email_link text link · email_button_top / email_button_bottom only if the same button appears twice in the email · email_link_ps text link in the P.S.
Social mediabio · feed · reels · story · comment
Videodescription · endcard · pinned_comment · channel_description
Meta Ads{{placement}}, e.g. Facebook_Mobile_Feed

Spelling

Five rules for stable reports.

Everything lowercase. Analytics tools treat Newsletter and newsletter differently – or lowercase everything anyway and mix up data in the process.
Underscore instead of spaces. course_launch_q1, not “Course Launch Q1”.
No accents or special characters. Write ae, oe, ue, ss instead of umlauts – and never + % & # ? in names that end up in links.
Descriptive, not technical. email_welcome_cta_view_course instead of m_1503_a.
Consistent across all channels. Values you have defined are reused, not reinvented.

Examples

What it looks like in practice.

Email marketing

Channel
email
Source
automation
Campaign
freebie_onboarding
Content
email_welcome_cta_view_course
Placement
email_button
https://example.com/course/?utm_medium=email&utm_source=automation&utm_campaign=freebie_onboarding&utm_content=email_welcome_cta_view_course&placement=email_button

Meta Ads dynamic

Source
{{site_source_name}} → fb / ig
Channel
paid_social
Campaign
{{campaign.name}}
Audience
{{adset.name}}
Content
{{ad.name}}
Placement
{{placement}}
Two traps: the “URL parameters” field must not start with ?, otherwise the first parameter silently gets lost. And campaign, ad set and ad names without + % & # ? – Meta puts them into the link raw and freezes them on publishing.

LinkedIn advent calendar

Channel
organic_social
Source
linkedin
Campaign
advent_calendar
Content
day_01 … day_24
Every single day can be analysed cleanly.

YouTube video

Channel
organic_video
Source
youtube
Campaign
tips_basics
Content
the specific video, e.g. onboarding_tips_01
Placement
description or endcard

Link in the Instagram bio

Channel
organic_social
Source
instagram
Campaign
profile or the current initiative
Content
empty
Placement
bio

What gets no UTMs

Internal links from one of your pages to another – UTMs would overwrite the original source. Measure those clicks as events instead.
Short links in emails – email links go straight to the target page; redirects don’t always pass parameters on.

In forms and in the CRM

How the values reach the contact.

A few hidden fields in the sign-up form are enough. They read the parameters from the address and pass them to your CRM on submit.
utm_mediumChannel
utm_sourceSource
utm_campaignCampaign
utm_contentContent
utm_termAudience
placementPlacement

Fields = latest touchpoint

Overwrite with every entry

The CRM fields always show what the contact came through last. In most form tools a placeholder reads the value from the address, e.g. {get.utm_source} in Fluent Forms.

Note = history

Append with every entry

In addition, a note with the date and the same values. Without it, a contact who comes back loses their original source.
Optional: contact ID in emails. Email systems can insert an ID of the recipient into links when sending – for one-click sign-ups or a live chat that recognises visitors, for example. It belongs in emails only, never in public channels, and never in analytics services that don’t allow personal data.

The tool for it

RedFoX UTM Link Builder for WordPress

Our plugin applies this convention automatically – no typos, no looking things up.
  • Pick the target from your pages, channel and source from fixed lists
  • Create and manage campaigns, every link is saved to the history
  • Lowercase, underscores, no special characters – automatically
  • Link checker finds mistakes in existing links
  • Channels and values can be adapted to your own convention

Guiding principles

Measuring is good. Understanding is better.

We consistently separate marketing, platform and click logic.
We use specific, descriptive values.
We write everything lowercase and consistently.
We track at contact level, not just anonymously.
We build systems that stay understandable in the long run.