UTM convention
Why we deliberately set up tracking differently
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
Level 02
Level 03
From click to contact
The central idea
Marketing logic
utm_medium – the channel, never a platform. Platform logic
utm_source – the specific origin. Click logic
utm_content – the specific click object. The fixed hierarchy
utm_medium utm_source utm_campaign utm_content utm_term optional placement optional The parameters in detail
utm_medium
emailorganic_socialpaid_socialorganic_videopaid_searchutm_source
utm_source=email and no doubled “email / email” in channel and source. | Channel | Typical sources |
|---|---|
newsletter one-off send · automation email in an automation · drip email series · customer_mailing email to customers | |
| Organic social media | instagram · facebook · linkedin · tiktok · pinterest · youtube |
| Meta Ads | fb · ig · msg · an – set by Meta itself via {{site_source_name}} |
| Video | youtube · vimeo · tiktok |
| Search ads | google · bing |
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
advent_calendarfreebie_onboardingcourse_launch_q1community_invitephase_offer_year_month, e.g. invite_webinar_2026_10. utm_content
| Channel | Structure | Example |
|---|---|---|
| email + click purpose | email_welcome_cta_view_course | |
| Social media | the post | reel_morning_routine |
| Video | the video | onboarding_tips_01 |
| Ad | name of the ad | {{ad.name}} in Meta |
| Bio link | may stay empty | or e.g. profile |
utm_content may stay empty – placement=bio already says it all. utm_term
placement
| Channel | Values |
|---|---|
email_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 media | bio · feed · reels · story · comment |
| Video | description · endcard · pinned_comment · channel_description |
| Meta Ads | {{placement}}, e.g. Facebook_Mobile_Feed |
Spelling
Newsletter and newsletter differently – or lowercase everything anyway and mix up data in the process. course_launch_q1, not “Course Launch Q1”. ae, oe, ue, ss instead of umlauts – and never + % & # ? in names that end up in links. email_welcome_cta_view_course instead of m_1503_a. Examples
emailautomationfreebie_onboardingemail_welcome_cta_view_courseemail_button{{site_source_name}} → fb / igpaid_social{{campaign.name}}{{adset.name}}{{ad.name}}{{placement}}?, 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. organic_sociallinkedinadvent_calendarday_01 … day_24organic_videoyoutubetips_basicsonboarding_tips_01description or endcardorganic_socialinstagramprofile or the current initiativebioIn forms and in the CRM
utm_mediumChannelutm_sourceSourceutm_campaignCampaignutm_contentContentutm_termAudienceplacementPlacementFields = latest touchpoint
{get.utm_source} in Fluent Forms. Note = history
The tool for it
Guiding principles