UTM parameters help you measure campaigns accurately, allocate budgets more effectively, and improve marketing ROI with reliable data.
Understanding and creating UTM parameters: the basics of campaign tracking
In a nutshell: UTM parameters
- UTM parameters show which marketing activities generate traffic, conversions, and revenue
- Consistent UTM structures matter more than maximum detail and prevent inaccurate or distorted reporting
- utm_source, utm_medium, and utm_campaign form the foundation of any meaningful campaign analysis
- The most common mistakes include inconsistent naming, ignoring case sensitivity, and the lack of central documentation and governance
The most important UTM parameters briefly explained
UTM parameters are short additions to a URL that allow you to track exactly where your website visitors come from. They are passed to analytics tools like Google Analytics or Piwik Pro and help you measure the success of your marketing efforts accurately.
| Dimension | Query string | Function |
|---|---|---|
|
Medium |
utm_medium |
Marketing channel such as cpc, paid_social, or email |
|
Source |
utm_source |
Traffic source such as google, newsletter, or facebook.com |
|
Campaign |
utm_campaign |
Specific campaign name |
|
Content |
utm_content |
Differentiates creatives or links |
|
Term |
utm_term |
Paid search keyword |
Why UTM parameters matter for revenue attribution
UTM parameters are small tracking additions to a URL that allow you to see in web analytics tools like Google Analytics (GA4) or alternatives like Piwik PRO exactly where users are really coming from and which marketing activities are driving revenue. This sounds technical, but in practice it's the simplest lever for measurably better budget allocation.
Marketing budgets are spread across channels like paid social, search, email, and display advertising. If you don't track your campaigns properly, it remains unclear which measures are actually contributing to revenue.
Without UTM parameters, traffic sources often get mixed together. Social traffic, for example, may appear as direct traffic. This is commonly referred to as dark social: visits from apps, messaging tools, or emails that cannot be attributed correctly and therefore incorrectly appear as 'direct' traffic.
With UTMs, you can clearly attribute sessions, leads, purchases, and revenue to a specific source, campaign, or medium. Instead of relying on assumptions or gut feeling, teams can make decisions based on measurable performance.
UTM parameters connect marketing activity to business outcomes. Optimize your marketing ROI by precisely identifying:
- which channels generate high-quality traffic,
- which campaigns drive conversions,
- where revenue is generated,
and which actions should be taken based on that data.
UTM parameters follow the same logic across all platforms. Most differentiation happens through utm_source (e.g. google, facebook.com) and utm_medium (e.g. cpc, social, email) – more on that later.
Moccu: your agency for digital analytics & performance tracking
Need support setting up or optimizing your tracking? We help you measure campaigns accurately, standardize UTM structures, and turn analytics data into actionable business insights.
Using UTM parameters correctly by channel
The logic behind UTM parameters stays the same across channels. However, the recommended setups and use cases vary depending on the platform. The following examples show proven UTM structures for the most important channels.
Google Ads: supplementing auto-tagging strategically
In Google Ads, auto-tagging (GCLID) should always remain enabled. However, additional UTM parameters for Google Ads make sense in certain scenarios, particularly when campaign data is used beyond Google Analytics.
Typical use cases include:
- using analytics tools other than Google Analytics
- integration with CRM or BI systems that cannot process GCLID data
- creating a consistent cross-channel naming convention
Important: manually added UTM parameters can create attribution conflicts with auto-tagging data. Therefore, auto-tagging and UTM logic should always be aligned to avoid inconsistent reporting or data loss. This becomes especially important when multiple teams work with the same campaign data. A shared naming convention ensures everyone works from the same reporting foundation and helps prevent data silos.
Facebook, TikTok & Co.: UTM parameters for social ads
If you run social ads on Facebook, TikTok, or LinkedIn, UTM parameters are essential. Platform dashboards show clicks and platform-side conversions, but UTM tracking shows what users actually do on your website independently of platform attribution models or tracking pixels.
Typical UTM parameter combinations are:
- utm_source=facebook.com & utm_medium=paid_social
- utm_source=tiktok & utm_medium=paid_social
- utm_source=linkedin.com & utm_medium=paid_sociall
Additional parameters like utm_campaign, utm_content and in some cases utm_term can help differentiate campaigns, ad groups, and creatives. You can find out more about this further down in the section on optional and 'required' parameters ↓.
YouTube: video ads between Google Ads and social media
YouTube occupies a unique position in the marketing mix: while ads run through Google Ads and benefit from auto-tagging (GCLID), YouTube simultaneously functions like a social media platform with its own user behavior and video-focused ad formats.
To separate YouTube campaigns from Google Search or display traffic, campaigns should be clearly labeled with dedicated UTM parameters:
- utm_source=youtube.com & utm_medium=video (or paid_video)
This makes it easier to analyze video campaign performance separately from other Google Ads channels.
As with Google Ads generally, auto-tagging should remain enabled. UTM parameters provide additional structure and cross-channel consistency.
Audio & streaming channels: Spotify & podcasts
Audio campaigns are often considered difficult to measure. This is exactly where UTM parameters provide transparency. With a tagged URL, links in Spotify ads, podcast descriptions, or show notes can be analyzed in Google Analytics or other analytics tools.
Examples:
- utm_source=spotify & utm_medium=audio
- utm_source=podcastname & utm_medium=podcast
For podcast campaigns, using the specific podcast name as the source can make it easier to compare performance across different shows. Alternatively, the show name can also be tracked through utm_campaign or utm_content.
Owned Channels
Often underestimated but actually highly relevant is the use of UTMs in owned channels. UTM parameters are often associated mainly with paid campaigns, but they are just as valuable for owned channels. They help measure touchpoint performance and attribute traffic more accurately.
A structured UTM setup helps track:
- which email campaigns generate the highest conversion rates
- which QR code placements (flyers, packaging, posters) are actually used
- which microsites or partner integrations generate traffic
Especially in owned channels, UTM parameters often deliver particularly valuable insights, as this traffic would otherwise frequently end up categorized as 'direct' traffic in Google Analytics.
-
Email is often one of the strongest traffic sources, but without UTM parameters it is frequently misattributed. Typical parameters here are:
- utm_source=newsletter & utm_medium=email
- utm_campaign=product-launch-2026-12 (to differentiate between campaigns)
utm_content an also be used to differentiate multiple links within the same email – for example, whether the hero CTA or a link in the body copy performs better.
-
QR code traffic from flyers, posters, or packaging is usually categorized as direct traffic without UTMs. With properly tagged URLs, you can identify which offline placements drive online engagement.
Examples:
- utm_source=flyer & utm_medium=qr-code
- utm_source=packaging & utm_medium=qr-code
Important: UTM parameters should only be used for external traffic sources. Internal links on your website should never contain UTMs because they overwrite the original attribution source and distort reporting.
Creating UTM parameters: tools & best practices
UTM parameters can be added to any URL manually. In practice, however, dedicated tools help standardize and simplify the process. The best option depends on campaign volume, team size, and governance requirements.
-
Campaign URL Builder: the standard solution
Google's Campaign URL Builder is the best-known tool for creating UTM URLs. It is free, browser-based, and does not require a login. Using a form, you simply fill in the destination URL and the desired parameters, such as utm_source, utm_medium, utm_campaign. The tool then automatically generates a correctly formatted tracking URL that can be copied directly into campaigns.
-
Alternative tools for other analytics platforms
Those who don't work with Google Analytics will sometimes find dedicated URL builders from other providers, such as Matomo or Piwik PRO. Technically, however, these tools work almost identically to Google’s Campaign URL Builder. Parameters are simply appended to the destination URL.
As a general rule: what matters for tracking is not which tool was used to create the URL, but whether parameters are named correctly and used consistently.
-
Google Sheets or Excel: scalable campaign management
For recurring campaigns and larger teams, a centralized UTM spreadsheet is usually the best solution. This allows fixed dropdowns, validations, and naming conventions to be defined, preventing typos and inconsistent parameters.
The benefits:
- define and enforce UTM conventions centrally
- create URLs for multiple campaigns simultaneously
- document tracking links and share them across the team
- ensure consistency across all channels
A well-structured sheet typically contains:
- base URL
- predefined values for source, medium, campaign
- automatic URL generation via formula
- version tracking
Download: our UTM template for consistent parameters
With our UTM template based on Google Sheets, you can hit the ground running: predefined parameters, validations, and automatic URL generation – for individual campaigns or team-wide use.
Which UTM parameters are required – and which are optional?
UTM parameters are fundamentally optional. Technically, any URL works without them. However, anyone who wants to attribute traffic accurately and analyze campaigns meaningfully will find three parameters practically unavoidable. They have established themselves as the minimum standard for structured tracking.
The three 'required' parameters
For clean and analyzable tracking, these three parameters are practically essential:
- utm_source: defines where the traffic comes from e.g. facebook, newsletter, google, partner-site
- utm_medium: defines the marketing medium or channel type, e.g. cpc, email, social, referral, paid_social
- utm_campaign: identifies the specific campaign, e.g. summer-sale-2027, product-launch-december-2027, blackfriday
Why these three matter: without them, the basic attribution in analytics tools is missing. Source and medium define the channel; campaign makes individual initiatives comparable. utm_source is technically the bare minimum – if this parameter is not set, everything ends up in 'direct' or '(not set)'. If the other two are missing, it works technically, but is so incomplete that UTM parameters fail to serve their actual purpose.
The two optional parameters
In addition to the required parameters, two optional UTM parameters are commonly used.
utm_content differentiates multiple links or creatives within the same campaign. Typical use cases include:
- A/B testing creatives: utm_content=video-hero vs. utm_content=carousel-product
- Different link positions in emails: utm_content=header-cta vs. utm_content=footer-link
- Multiple banners on a partner site: utm_content=banner-top vs. utm_content=sidebar
utm_term originally comes from paid search and was designed for keyword tracking. Typical use cases include:
- CRM integration (e.g. passing keyword data into HubSpot)
- Paid search without auto-tagging: utm_term=running-shoes-men
- Specific targeting parameters
In practice, utm_term is rarely used, as Google Ads with auto-tagging automatically transfers keyword data (where available).
New GA4 parameters
Google Analytics 4 has introduced three additional parameters in recent years to address the growing complexity in advertising:
- utm_source_platform: indicates which marketing platform is sending the traffic (e.g. Search Ads 360 or Display & Video 360).
- utm_creative_format: allows you to record which creative format was clicked (e.g. interstitial, video, sidebar).
- utm_marketing_tactic: enables tracking of the targeting strategy (e.g. remarketing, prospecting, retention).
In practice, however, these parameters are still rarely used and are primarily relevant in enterprise setups with multiple ad management platforms such as Google Marketing Platform or Search Ads 360. In addition, utm_creative_format and utm_marketing_tactic are not yet available as standard dimensions in many default GA4 reports. To analyze them properly, additional configuration via Google Tag Manager (GTM), custom dimensions, or BigQuery is typically required.
How much complexity makes sense?
The ideal level of detail depends on your campaign structure and reporting requirements. As a general rule: The more parameters you use, the more granular your analysis becomes – but the more governance and consistency you need. Without clear standards, large teams quickly create fragmented naming structures that become difficult to cleanly analyze later on.
-
For small teams, straightforward campaigns, or a clear channel structure, the three core parameters are usually enough.
Example: utm_source=newsletter&utm_medium=email&utm_campaign=may-2026
This structure delivers all the essential information: where is the traffic coming from, through which medium, and from which campaign? For many scenarios, this level of detail is entirely sufficient.
-
As soon as multiple variants are being tested within a campaign, such as different creatives, link positions, or ad visuals, utm_content becomes relevant. Typical use cases are social ads with different ad creatives or newsletters with multiple CTAs, where it should be clear which link performs best.
-
Large campaigns with many variables benefit from full parameterization. Display campaigns across multiple partners with different placements, audiences, and keywords can be tracked in detail. The additional effort is only worthwhile, however, if the extra data is actively analyzed and used for optimization.
Common mistakes in parameter selection
-
Too little detail
using only source and medium while leaving out campaign makes it impossible to distinguish between different initiatives. Campaign comparisons become impossible and valuable insights are lost.
-
Too much detail
the opposite extreme is equally problematic. Mapping every minor detail via utm_content creates cluttered reports with hundreds of rows in analytics, making analysis harder rather than easier.
-
Inconsistent usage
one of the most common mistakes is using optional parameters inconsistently. If utm_content is only set sporadically, comparisons across multiple campaigns are no longer possible. Consistency matters more than completeness.
-
No naming schema
without a consistent convention, chaos quickly ensues, especially with similar names like 'new-product'. A good schema carries the most important information directly in the name: e.g. [year]-[quarter]-[product]-[goal]. This allows campaigns to be instantly categorized in analytics.
The rule of thumb: as detailed as necessary for analysis, as simple as possible for clarity. If it is unclear whether an additional parameter truly adds analytical value, it is usually better to leave it out initially. UTM structures can always be expanded later once requirements become more sophisticated.
UTM parameters in practice: A concrete example
Before diving into a campaign scenario, it helps to understand the basic structure of a UTM-tagged URL. UTM parameters are appended to a standard destination URL and pass additional information to analytics tools about where a click originated and how it should be categorized.
Technically, a UTM URL always consists of two parts:
- the destination URL (i.e. the actual page)
- a series of UTM parameters, starting with a question mark (?) and separated by ampersands (&)
Each individual parameter serves a clearly defined purpose and contributes to making campaigns analyzable in a structured and reliable way later on.
How to read this URL:
- utm_source=linkedin.com: the traffic is clearly coming from the LinkedIn platform.
- utm_medium=paid_social: identifies the click as a paid social media campaign and distinguishes it from organic LinkedIn posts.
- utm_campaign=digital-analytics-consulting: assigns the click to a higher-level campaign, in this case promoting analytics services.
- utm_content=ad-carousel: differentiates the specific ad format or creative, in this case a carousel ad compared to a single image ad.
Important: In the example above, you should always use paid_social as the utm_medium parameter. Using utm_medium=social instead, or leaving the parameter out entirely, will result in the traffic being categorized as 'organic social' in GA4. Paid campaigns would therefore be counted as organic traffic. Even more critically, if the same UTM URL is also used for organic posts, that data will flow into the campaign as well and distort the results.
To make the logic behind UTM parameters more tangible, here is a concrete scenario that explains the reasoning behind each parameter choice. The following example intentionally uses a more advanced UTM structure, similar to what is commonly used in professional multi-channel campaigns. Don't worry, not every setup requires this level of detail. The goal here is simply to illustrate the possibilities.
The scenario
An online sportswear shop is launching a product campaign for a new running shoe collection. The campaign runs simultaneously across multiple channels:
- Facebook ads with various creatives
- Instagram ads using the same visuals
- A newsletter sent to existing customers
- A collaboration with a running blog
The goal is to accurately determine afterward: which channel performed best? Which creative worked best on which platform? And was the blog collaboration worth it?
The UTM structure in detail
UTM logic is easiest to understand through concrete examples. Below are several variations for different use cases.
Facebook ads – video creative
https://shop.example.com/laufschuhe-neuheit?utm_source=facebook.com&utm_medium=paid_social&utm_campaign=
laufschuh-launch-q1-2027&utm_content=video-running-city
Why these parameters
- utm_source=facebook.com: clearly attributes traffic to Facebook.
- utm_medium=paid_social: distinguishes paid campaigns from organic social posts that may also generate traffic.
- utm_campaign=running-shoe-launch-q1-2027: provides a clear campaign name including product reference and timeframe.
- utm_content=video-running-city: identifies the specific creative (a video featuring urban running scenes).
Facebook ads – carousel creative
https://shop.example.com/running-shoes-new?utm_source=facebook.com&utm_medium=paid_social&utm_campaign=running-shoe-launch-q1-2027&utm_content=carousel-product-details
Only utm_content changes here in order to identify the second creative format. This makes it possible to compare ad format performance directly later on.
Instagram ads – video creative
https://shop.example.com/running-shoes-new?utm_source=instagram&utm_medium=paid_social&utm_campaign=running-shoe-launch-q1-2027&utm_content=video-running-city
Why a different source but the same content?
- utm_source=instagram: although both campaigns run through Meta Business Manager, separating the source allows for direct platform comparison.
- utm_content=video-running-city: the creative itself is identical to Facebook. Using the same content value allows you to compare how the same visual performs across platforms.
Newsletter
https://shop.example.com/running-shoes-new?utm_source=newsletter&utm_medium=email&utm_campaign=running-shoe-launch-q1-2027&utm_content=header-cta
Why these parameters?
- utm_source=newsletter: clearly identifies the traffic source.
- utm_medium=email: uses the standard categorization for email traffic.
- utm_campaign: matches the social campaign naming for cross-channel comparison.
- utm_content=header-cta: if multiple links appear in the newsletter (for example in the body copy or footer), this makes it possible to compare which placement performs best.
Blog collaboration
https://shop.example.com/running-shoes-new?utm_source=running-sports-blog&utm_medium=referral&utm_campaign=running-shoe-launch-q1-2027&utm_content=sponsored-post
Why these parameters?
- utm_source=running-sports-blog: specifies the individual blog name, especially useful if multiple collaborations run simultaneously later on.
- utm_medium=referral: standard designation for traffic coming from another website.
- utm_content=sponsored-post: distinguishes paid placements from potential organic mentions.
What this structure enables
With consistent UTM parameter usage like this, the following questions can be answered in Google Analytics (or similar analytics tools):
-
Channel performance
Which channel (Facebook, Instagram, newsletter, blog) generated the most revenue? → comparison via utm_source
-
Medium comparison
Do paid social ads perform better than email or referral traffic? → comparison via utm_medium
-
Creative performance
Does the video creative outperform the carousel format? → comparison via utm_content
-
Cross-platform creative analysis
Does the video perform better on Facebook than on Instagram? → combination of utm_source and utm_content
-
Campaign ROI
What was the overall performance of the launch campaign across all channels? → filter by utm_campaign=running-shoe-launch-q1-2027
The key takeaways from this example
-
01
Consistent naming conventions
all campaign parameters follow the same logic (product-action-timeframe), which simplifies comparison and analysis.
-
02
Strategic use of utm_content
only used where it adds real analytical value – for creative variations and link positions, not for every minor detail.
-
03
Descriptive parameter values
using the same campaign name across all channels enables aggregated campaign analysis.
-
04
Human-readable parameter values
video-running-city is much easier to interpret in reports than something like creative-001.
Analyzing UTM parameters
Once the UTM links are in use, the collected data needs to be analyzed. The central place for this is the acquisition report. Here's where to find the data in the most common analytics tools.
Google Analytics 4 (GA4): Analyzing UTM parameters
In GA4, UTM parameters are automatically mapped to predefined dimensions. To view your campaigns, navigate to:
Reports → Acquisition → User acquisition report (or 'first user source') or Traffic acquisition (for a session-based analysis).
- GA4 typically displays the 'default channel group' dimension first (e.g. 'paid social'). Click the dropdown arrow next to the dimension to switch to 'session source/medium' or 'session campaign.'
- Use the plus symbol (+) to add a secondary dimension. For example, you can combine source/medium with campaign data to break performance down in more detail.
Piwik PRO: analyzing UTM parameters
Piwik PRO reads UTM data reliably. You can find the analysis under: Analytics → Reports → Acquisition → Channels or Campaigns.
- In both reports, you can change the primary dimension to 'source / medium' directly above the table.
- Piwik PRO natively recognizes the standard utm_ parameters. Because the platform is historically related to Matomo, it also supports pk_ (Piwik) and mtm_ (Matomo) parameters (e.g. pk_source).
- If you work across platforms, it’s still best to consistently use the standard utm_ format. If you migrate from GA4 to Piwik PRO, you don't need to update your links. Piwik recognizes both standards without any issues.
Moccu: your agency for Piwik PRO
We help you use Piwik PRO strategically: with clean tracking, clear UTM structures, and campaign reports that show which measures are truly driving results – privacy-compliant and transparent.
Common mistakes when using UTM parameters
UTM parameters are technically simple to implement, yet many companies struggle with using them consistently and meaningfully. The most common problems are not technical; they stem from missing structure and unclear processes.
-
One of the biggest mistakes in practice is that everyone on the team names parameters however they want. The result is analytics reports filled with duplicates and inconsistent data.
Typical problems:
- the same campaign gets named differently: newsletter-2026, Newsletter_2026, nl-26
- source names vary: facebook.com, facebook, Facebook, fb, FB
- Medium values are not standardized: social, paid-social, paid_social, paidsocial
The consequence: in Google Analytics, these variations appear as separate entries. Instead of a clear overview with aggregated data, reports end up with dozens of rows that need to be merged manually. This makes analysis tedious and error-prone.
The solution: create a centrally documented naming convention that everyone follows. It should define:
- which source and medium names are used
- how campaign names are structured (e.g. product-action-timeframe)
- whether hyphens, underscores, or other separators are allowed
- which abbreviations may be used
-
A detail that is often overlooked: UTM parameters are case-sensitive. This means utm_source=Facebook and utm_source=facebook are treated as two different sources.
A real-world example: A team uses LinkedIn sometimes, linkedin, and occasionally Linkedin occasionally. In Google Analytics, three separate entries appear even though they all refer to the same platform. Campaign performance can no longer be aggregated correctly.
The solution: consistently use lowercase. This is the standard convention and prevents accidental duplicates. The naming convention should explicitly state: 'UTM parameters in lowercase only.'
-
Another surprisingly common mistake is using UTM parameters on internal links within your own website.
Why is this problematic?
UTM parameters override the original traffic source. If a user lands on your homepage through Google Ads and then clicks an internal link that also contains UTM parameters, the original source (Google Ads) is replaced by the new source. As a result, analytics tools incorrectly attribute the session to the internal source instead of the original campaign.
Example:
- A user arrives on the homepage via utm_source=facebook&utm_medium=paid_social
- The user clicks on an internal banner with utm_source=homepage-banner&utm_medium=internal
- Analytics now attributes the entire session to 'homepage-banner'
- The original paid campaign attribution is lost
The solution: use UTM parameters exclusively for external links. For internal tracking purposes, there are better alternatives such as event tracking in Google Analytics or custom internal parameters that do not conflict with UTMs.
-
In many companies, UTM parameters are created independently across departments: the social media team builds its own URLs, email marketing uses a separate structure, and performance marketing follows yet another approach. The result is data chaos.
Typical consequences:
- no consistent naming logic across departments
- no overview of which campaigns are currently running
- duplicate or conflicting parameter combinations
- no reliable basis for cross-channel analysis
The solution: eestablish a centralized tracking system where all UTM links are documented and ideally generated as well. This can be a shared Google Sheet, an internal tool, or a dedicated marketing operations platform.
A central documentation system should:
- list all active campaigns and their UTM parameters
- define and enforce clear naming conventions
- support versioning (which parameters were used when?)
- provide access to all relevant teams while maintaining clear ownership
This creates not only cleaner data, but also greater transparency around which marketing activities are actually in use.
FAQs
-
UTM parameters attribute traffic and conversions to specific channels and campaigns. This makes it possible to see which marketing activities generate revenue. Combined with campaign costs, you can calculate ROI by channel and compare marketing performance accurately.
-
The easiest option is Google's free Campaign URL Builder. For recurring campaigns or larger teams, a shared Google Sheet with automated URL generation and naming conventions is usually the better long-term solution.
-
Generate a QR code using the full destination URL including UTM parameters, for example: example.com/landing?utm_source=flyer&utm_medium=qr-code).
The QR code itself is not tracked. The analytics tool tracks the tagged destination URL.
-
Yes. Piwik PRO and Matomo support standard UTM parameters in the same way as Google Analytics. The standard parameters work across all common analytics tools.
-
No. UTM parameters are added directly to the destination URL and read by the analytics tool. No redirect is required, the URL with parameters works like any normal URL. Redirects are only useful if you want to shorten long URLs.
-
No. Google Ads uses auto-tagging (GCLID), which works automatically. Additional UTM parameters only make sense when data needs to be shared with external tools (CRM, BI systems) or a cross-channel naming convention is desired.
-
UTM stands for 'Urchin Tracking Module.' The name comes from Urchin, the analytics software Google acquired in 2005 as the foundation for Google Analytics.
-
UTM parameters are worthwhile for anyone who:
- uses more than one marketing channel,
- wants to compare campaigns,
- or needs to make data-driven decisions.
They are especially relevant for marketing teams, agencies, e-commerce, SaaS, and B2B companies.
-
In Google Analytics 4 (GA4), open the report under Reports → Acquisition → Traffic acquisition and filter by the 'Medium' dimension. If values like cpc, email, or social appear, UTM parameters are already in use. If only 'organic,' 'referral,' and 'direct' show up, structured UTM tracking is missing.
-
Yes, UTM parameters are case-sensitive. utm_source=Facebook and utm_source=facebook are treated as two different sources. Therefore, lowercase should be used consistently to avoid accidental duplicates.
Let's talk about your tracking.
Thank you!
We’ll get back to you as soon as possible.