Digital Marketing

What Are UTM Parameters? A Practical Campaign Tracking Guide

The campaign link that looked fine but lost its labels

A campaign URL can open the right landing page and still give you the wrong report. I found that out while checking a customer’s ad link: it redirected from HTTP to HTTPS and then to the www hostname, but the final redirect dropped utm_campaign. The ad platform counted clicks. GA4 saw far fewer tagged sessions.

That is the job UTM parameters do. They add labels to a URL so your analytics platform can identify the source, medium, campaign, and sometimes the specific creative or link that brought a visitor in.

They do not direct visitors to a page, improve rankings directly, or replace conversion tracking inside an advertising platform. They are measurement labels. Name them carelessly and your reports become harder to read.

What do UTM tags look like in a URL?

A campaign link might look like this:

https://www.example-site.com/campaign?utm_source=instagram&utm_medium=paid_social&utm_campaign=spring_2026&utm_content=video_01

The part after the question mark contains query parameters. Each parameter is separated by an & character. Here, the source is Instagram, the medium is paid social, the campaign is spring_2026, and the content variation is video_01.

Take uppercase and lowercase seriously from the beginning. Many reporting systems treat Instagram, instagram, and INSTAGRAM as different values. I use lowercase values and either underscores or hyphens, never spaces. Consistency matters more than which separator you choose.

The main UTM parameters

ParameterWhat it describesExample value
utm_sourceWhere the traffic came frominstagram, google, newsletter
utm_mediumThe type of channel or traffic methodcpc, email, paid_social
utm_campaignThe name of the marketing campaignspring_2026
utm_termUsually the keyword used in paid searchwordpress_hosting
utm_contentAn ad or link variation within the same campaignblue_banner, video_01

The first three fields, utm_source, utm_medium, and utm_campaign, are enough for many campaigns. I add utm_term or utm_content when I need to compare search terms, creatives, buttons, or several links in one message.

Source, medium, and campaign answer different questions

Mixing up these three fields is one of the analytics problems I see in support tickets. Let me put it this way: ask “where did it come from?”, “what kind of traffic was it?”, and “which marketing effort was it part of?” separately.

  • Source: The origin of the traffic, such as google, instagram, linkedin, or newsletter.
  • Medium: The traffic type, such as organic, cpc, email, paid_social, or referral.
  • Campaign: The name of the marketing effort, such as black_friday_2026 or hosting_discount_may.

A Google ad might use utm_source=google, utm_medium=cpc, and utm_campaign=wordpress_hosting. The LinkedIn version can use a different source while keeping the campaign name unchanged. You can then view the campaign as a whole and compare the channels inside it.

utm_medium=instagram works technically, but it puts the platform name in the traffic-type field. A clearer structure is utm_source=instagram&utm_medium=paid_social. When I open the report months later, I should not have to decode what each field meant.

Where can you use UTM parameters?

Paid advertising is the obvious starting point. You can tag links in Google Ads, Meta, LinkedIn, and similar platforms, then compare campaigns in your analytics reports. There are several other useful places.

Email newsletters

Without UTM parameters on newsletter links, clicks can appear as direct traffic or an unclear referral. For example:

https://www.example-site.com/product/wordpress-hosting?utm_source=mailchimp&utm_medium=email&utm_campaign=april_newsletter

I often use the email platform as the source. If one message contains several links, values such as utm_content=top_cta and utm_content=bottom_cta show which link received more visits.

Social media posts

For organic social posts, utm_medium=organic_social is clear. For paid social advertising, I use utm_medium=paid_social. Do not expect the platform’s report and your analytics report to match exactly. They may count clicks, sessions, cookies, and conversions under different rules.

QR codes and printed material

A QR code on a brochure or in-store poster can point to a tagged URL:

https://www.example-site.com/summer?utm_source=store&utm_medium=qr&utm_campaign=summer_campaign

That gives you a way to distinguish a scan from the poster from an untagged visit made later on the same phone.

Partners and referrals

If a partner links to your website, you can use utm_source=partner_name and utm_medium=referral. Do not treat UTM data as a replacement for the normal referral report. The tag comes from the link you created; the HTTP referrer is separate information supplied by the browser.

Finding UTM data in GA4

GA4 uses UTM values in user acquisition and session acquisition reports. Menu names and report layouts change, so I do not make people memorize one exact screen path. Start with the acquisition reports and select dimensions such as session source, session medium, and session campaign.

Before blaming the URL, verify that the measurement code is running on the correct property and web data stream. The GA4 Setup Guide: Track Your Website Data Step by Step covers those basic checks. A correctly tagged URL is not enough if the event is being sent somewhere else.

These are the fields I usually inspect:

  • Session source / medium: The source and medium for the current session.
  • Session campaign: The campaign value for the current session.
  • First user source / medium: The source and medium through which GA4 first acquired the user.
  • Conversions or key events: The conversion behavior associated with tagged sessions.

Do not confuse session source with first-user source. Someone may first arrive through a paid ad and return later through an email link. The first-user report can show the advertisement while the current session report shows the email. Both can be right.

That redirect chain changed my testing habit

When I found the missing campaign value, I first suspected Analytics. Then I inspected each response with curl. The old redirect rule had a hard-coded destination URL and did not carry the query string forward.

curl -sS -D - -o /dev/null -L -w '\nFinal URL: %{url_effective}\n' 'https://www.example-site.com/campaign?utm_source=instagram&utm_medium=paid_social&utm_campaign=spring_2026'

The headers showed the 301 and 302 responses, and %{url_effective} printed the final URL. Once the redirect rule was corrected, the parameters reached the destination page.

Since then, I do not test only whether a campaign page opens. I check the redirect status codes, the final URL, and the query parameters together. One minute of testing is cheaper than several days of guessing in a campaign report.

Set the naming rules before anyone publishes a link

UTM parameters need a standard even on a small website managed by one person. You may create the link today, but someone else may interpret the report three months from now. If ig, instagram, and Instagram Ads all mean the same source, your report will contain three rows.

My basic rules are short:

  • Use lowercase for every value.
  • Avoid spaces and non-ASCII characters.
  • Choose underscores or hyphens for word separation, then stay consistent.
  • Use utm_source for the platform and utm_medium for the traffic type.
  • Include a date or period in utm_campaign.
  • Use utm_content for an ad, button, or creative variation.

A small dictionary might look like this:

ChannelSourceMediumExample campaign
Google search adgooglecpcsummer_hosting_2026
Organic Instagram postinstagramorganic_socialsummer_hosting_2026
Emailnewsletteremailsummer_hosting_2026
QR codestoreqrsummer_hosting_2026

A shared spreadsheet is enough for most teams. When a new medium is needed, add it to the dictionary first. Otherwise, reports slowly turn into alphabet soup.

Mistakes that make campaign data noisy

Adding UTM tags to internal links

Putting UTM parameters on an internal link from your homepage to a blog post is usually a bad idea. As visitors move around the site, you can start a new campaign session or overwrite the original source. Use UTM tags mainly on campaign links coming from outside your website.

Putting personal data in the URL

Do not place a name, email address, phone number, customer number, or other directly identifying value in a UTM parameter. URLs can appear in browser history, server logs, analytics systems, and third-party services. From a GDPR or KVKK perspective, this creates avoidable risk.

Use utm_content=segment_a instead of utm_content=ali_yilmaz, and make sure the segment itself cannot identify one person.

Tagging the wrong version of the page

If a campaign link enters a redirect chain, check that the parameters survive. I have seen tags disappear when an old HTTP URL redirected to HTTPS and then to either the www or non-www hostname.

For a quick check:

curl -sS -D - -o /dev/null -L -w '\nFinal URL: %{url_effective}\n' 'https://www.example-site.com/campaign?utm_source=instagram&utm_medium=paid_social&utm_campaign=spring_2026'

-L follows redirects, -D - prints the response headers, and -o /dev/null discards the response body. I inspect every 301 or 302 and the final URL before publishing the ad.

Confusing UTM tags with automatic ad-platform tagging

Google Ads automatic tagging uses its own click identifier. It can work alongside manually added UTM fields, but check how both systems populate the dimensions you use. Meta also supports dynamic parameters that may replace or conflict with values entered manually.

If the campaign name is automatic in one system and manual in another, a difference is normal. Decide which report is authoritative for each metric before the campaign starts.

Trusting URL shorteners without checking them

Short URLs are useful on posters and in places with character limits. Before using one, check the destination hostname, certificate, and redirect behavior. If the shortening service closes or changes the link, the campaign is affected. A redirect under your own domain gives you more control when that is practical.

Do UTM parameters affect SEO?

A URL with UTM parameters usually does not create new page content. It is another URL for the same page with campaign information attached. Search engines may still discover and process those variations, so check your canonical tags and Search Console data if tagged URLs appear in indexing reports.

Do not blindly block UTM URLs in robots.txt as a substitute for understanding the problem. Review the canonical setup and your parameter-handling approach. Measuring an advertising link and solving an indexing issue are separate jobs.

The post Hosting and SEO: Myths vs Reality About IPs, Location, CDNs and HTTP/2/3 explains how hosting-related performance can affect SEO and conversion reporting. UTM data tells you which visitors a campaign brought in; it does not show by itself whether the page served those visitors well.

My campaign-tracking workflow

For a new campaign, I use this order:

  1. Confirm the destination page and make sure its URL will not change.
  2. Choose one short, consistent campaign name.
  3. Select the source and medium from the team standard.
  4. Add utm_content if there are multiple creatives or buttons.
  5. Open the generated URL in a private browser window.
  6. Check that every parameter remains in the address bar after redirects.
  7. Verify the visit in the GA4 Realtime report.
  8. After the ad or email is live, validate a conversion with a test flow.

Use a test payment method or another low-risk flow instead of placing a real order. With WooCommerce, I check the payment, thank-you page, and conversion events separately. A page opening successfully proves very little.

Choosing a tool to build UTM links

Writing a URL by hand is fine for a small campaign, but forgetting one & character in a long query string is surprisingly easy. A URL builder can reduce that risk. You still remain responsible for the values and for where you save the finished links.

For larger teams, a central template is safer. Restrict permitted values with dropdowns and keep the campaign dictionary in the same file. That prevents one person from entering social media as a medium while another enters social and creates two reporting groups.

Do not make the tagging system larger than the decision it supports. Ten extra parameters on every URL do not automatically produce better measurement. Data that will not change a decision only makes the report noisier.

Small security and privacy checks

Users can change UTM values themselves. Never use a parameter for security, authorization, or pricing decisions. Someone who writes utm_campaign=vip in the address bar is not a VIP customer. It is only text attached to the link.

If your access logs store complete URLs, UTM values may also be written to those logs. The data-minimization principles in Logging and Audit Trail Architecture for GDPR/KVKK-Compliant Admin Actions apply here as well. Avoiding personal data during campaign tracking is cleaner than trying to remove it later.

Use HTTPS and review redirect destinations regularly. UTM values are not secret. A campaign name, product name, or discount code can be read by anyone who sees the URL, so putting an unreleased campaign name in a public link may reveal more than you intended.

Reading the reports without blaming the wrong system

Clicks are not always the first metric I inspect. One campaign can bring many visitors and no orders, while another brings fewer sessions and more revenue. I read source, medium, and campaign alongside conversion rate, revenue, engagement time, and landing-page performance.

Data delays are normal. A click in an advertising platform and a session in GA4 may not appear at the same time. Consent choices, ad blockers, in-app browsers, redirects, and people switching devices all create differences between reports.

When you see (not set), direct, or an unexpected increase in a medium, do not immediately blame the hosting provider. Check the final link, redirects, the property receiving the event, and the campaign naming first. In one ticket described as “the ad traffic disappeared,” the ad reached the correct page; the cookie-consent layer had simply prevented the Analytics tag from running.

The same thinking applies to organic traffic analysis in How to Increase Google Discover Traffic: A Practical Guide. Sources such as Discover do not always carry UTM tags, so keep tagged campaign data separate from organic reports.

A UTM URL template you can use

This structure is enough for many small and medium-sized campaigns:

https://your-domain.com/target-page?utm_source=SOURCE&utm_medium=MEDIUM&utm_campaign=CAMPAIGN&utm_content=VARIATION

Replace the placeholders with real values. After pasting the URL into an email editor or ad platform, copy it out again and inspect it. Some tools encode special characters. That is not automatically an error, but the parameter names and values must remain intact.

Do not delete campaign URLs immediately when a campaign ends. Old ads and newsletters may still receive visits. If the destination page must be removed, plan a relevant permanent redirect instead of leaving visitors with a 404.

Frequently asked questions

Are UTM parameters required?

No. Your website works without them, and analytics platforms can classify organic search, referral, and direct traffic using their own methods. Tags become useful when you want to compare campaigns and the sources or variations you control.

Do UTM parameters lower SEO rankings?

Adding parameters does not lower rankings by itself. If many URL variations of the same content are being indexed, handle that separate technical SEO issue with canonical tags and suitable parameter management.

Can UTM parameters contain non-English characters?

They can be used with URL encoding, but I recommend ASCII values without spaces or accented characters for campaign names. Lowercase values with hyphens or underscores create fewer surprises across teams and reporting systems.

Why are UTM values missing in GA4?

First check that the parameters are present in the URL, survive every redirect, and are being sent to the correct GA4 web data stream. Then inspect the Realtime report, consent status, and ad-blocking effects. Standard reports may need more processing time.