UTM Parameters Explained (and How to Match Landing Messages to Your Ads)

UTM parameters are the small tags you add to the end of a link so your analytics can tell which campaign sent a visitor. They cost nothing, take a minute to add, and are easy to get wrong in ways that quietly split one campaign into five rows of a report. This guide explains what each parameter means according to Google’s own documentation, gives you a naming convention you can copy, lists the mistakes we see most often, and then shows how to use the same information on your site: greeting visitors from a specific campaign with a message that matches the ad they clicked.

Updated

What UTM parameters are

A UTM parameter is a name-value pair added to the query string of a URL. When someone clicks a tagged link, the parameters arrive with the page request, and an analytics tool reads them to label the visit. The page itself usually ignores them, so the visitor sees exactly the same page they would see without the tags.

Here is a tagged link for a spring sale promoted in an email newsletter:

https://www.example.com/sale/?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale_2026

Everything after the question mark is the tagging. Each parameter is written as name=value, and parameters are joined with an ampersand. If the URL already has a question mark (for example, a filtered collection page), add the UTM parameters after an ampersand instead of a second question mark.

Why bother? Without tags, analytics tools rely on the referrer the browser sends, which is often missing. Email apps, messaging apps, PDFs and QR codes frequently send none, so those visits look like direct traffic. Tagging tells your reports what actually happened, in words you chose.

The UTM parameters and what each one means

Google Analytics’ help page on campaign URLs lists the parameters below. The first five are the ones most people mean by “UTM parameters”; the others are newer additions that matter mostly to larger advertisers.

ParameterWhat it describesExample valuesUse it?
utm_sourceThe referrer: the site, publication or list that sent the visitgoogle, newsletter, instagram, partner_blogAlways
utm_mediumThe marketing medium: the type of channelemail, cpc, social, banner, referralAlways
utm_campaignThe product, promotion, slogan or promo codespring_sale_2026, new_arrivals_octAlways
utm_contentWhich creative or link was clicked, when one campaign has severalheader_button, footer_link, video_ad_aWhen you have more than one link or creative
utm_termThe paid keywordrunning_shoesMainly for paid search
utm_idA campaign ID, matching the IDs you use if you import campaign datac0412If you import cost or campaign data
utm_source_platformThe platform that directed the traffic, such as a buying platformPlatform names (Google’s examples are Search Ads 360 and Display & Video 360)Rarely needed by small teams
utm_creative_formatThe type of creative, such as display, native, video or searchvideoGoogle notes it isn’t currently reported in Analytics
utm_marketing_tacticThe targeting approach, such as remarketing or prospectingremarketingGoogle notes it isn’t currently reported in Analytics

Google’s guidance is to always use utm_source, utm_medium and utm_campaign. If one is missing, the corresponding field shows up as “(not set)” in Analytics reports, which is exactly the kind of row nobody can act on later.

A simple way to remember the big three: source is who sent the visitor, medium is how, and campaign is why. utm_content answers “which link?” when the same email or ad has more than one.

Source vs. medium: the distinction people mix up

Most tagging mistakes come from putting the right word in the wrong field. Source is a specific sender, so it should be a name: the newsletter, the partner site, the social network. Medium is a category of channel, so it should come from a short, fixed list: email, cpc, social, referral, affiliate and so on.

The medium matters more than it looks, because Google Analytics uses it to sort traffic into default channel groups. According to Google’s channel group definitions, a visit is put in the Email channel when the source or medium is email (or e-mail, e_mail, e mail); Display when the medium is display, banner, expandable, interstitial or cpm; Affiliates when the medium is affiliate; and Referral when the medium is referral, app or link. Paid Search and Paid Social require both a recognized search or social source and a paid-looking medium (a medium matching patterns such as cpc, ppc, retargeting or anything starting with “paid”). Organic Social is assigned when the source is a recognized social site or the medium is social, social-network, social-media, sm, social network or social media.

So if you tag your newsletter as utm_medium=newsletter, Analytics has no rule that turns that into Email, and the visits fall into a catch-all bucket. Tag it utm_source=newsletter&utm_medium=email and it lands where you expect.

Where the link livesutm_sourceutm_mediumNotes
Your email newsletternewsletteremailUse utm_content to tell the links inside one email apart
Automated welcome or follow-up emailwelcome_seriesemailSeparate source keeps automated and one-off emails apart
Organic Instagram post or bio linkinstagramsocialMatches the Organic Social rules
Paid Facebook or Instagram adfacebookpaid_socialA medium starting with “paid” fits the paid patterns; check the ad platform’s own URL options too
Google Ads(auto-tagging)(auto-tagging)See the auto-tagging section below before adding manual tags
Partner or guest blog postpartner_blog_namereferralAsk the partner to use your exact tagged link
Affiliate linkaffiliate_nameaffiliateMatches the Affiliates channel
QR code on packaging or a flyerpackaging or flyerqrOffline visits otherwise look like direct traffic; this lands in a catch-all channel, which is fine as long as you’re consistent

These are suggestions, not Google rules. What matters is using the same values every time.

A naming convention you can copy

Values are case sensitive. Google’s help page says utm_source=google and utm_source=Google are different values, and recommends lowercase as a standard. A few simple rules prevent most of the mess:

  1. Lowercase everything. No exceptions, including brand names. “Instagram”, “instagram” and “IG” would otherwise become three sources.
  2. Pick one word separator. Underscores are a common choice (spring_sale). Avoid spaces, which turn into %20 or + in URLs and are easy to mistype.
  3. Keep a fixed list of media. Write down the five to eight medium values you use (for example email, cpc, paid_social, social, referral, affiliate, qr) and never invent new ones on the fly.
  4. Make campaign names self-explanatory. Include the offer and a date: spring_sale_2026 is still understandable next year; promo2 is not.
  5. Use utm_content for the “which one” question. Two buttons in one email, two images in one ad set, or version A and B of a post all belong in utm_content, not in a new campaign name.
  6. Keep a shared log. A spreadsheet with the date, the full tagged URL, where it was used and who created it is enough. It doubles as your list of approved values.

Google’s Campaign URL Builder is a free form that assembles the tagged URL for you, so nobody has to type ampersands by hand. Many ad platforms and email tools can also add UTM parameters automatically; if yours does, set the values there to match your convention.

Google Ads: auto-tagging and dynamic values

Google Ads has its own tagging system. Auto-tagging adds a click identifier (the gclid parameter) to the URLs people click in your ads, and Google’s help page says it is on by default for new accounts. It is what lets Google Ads and Google Analytics share campaign, cost and conversion data.

You can still add UTM parameters to Google Ads URLs, for example so that other tools on your site can see which campaign a visitor came from. Just know how Analytics treats the overlap: Google’s auto-tagging help page states that for Google Analytics 4, auto-tagging is prioritized over manual tagging when both are present. In other words, adding UTMs to Google Ads won’t override what Analytics reports for those clicks, but other tools that read the URL will see your UTM values.

Google Ads also supports ValueTrack parameters: placeholders that Google fills in at click time. For example, {campaignid} becomes the campaign ID, {keyword} becomes the keyword that matched the search (Google notes it is blank for some campaign types, such as Performance Max), and {device} becomes m, t or c for mobile, tablet or computer. You can put them in a tracking template, the final URL or custom parameters, which means one template can produce a correctly tagged URL for every keyword:

{lpurl}?utm_source=google&utm_medium=cpc&utm_campaign=spring_sale_2026&utm_term={keyword}

Google’s help page notes that account, campaign or ad group tracking templates must include a URL insertion parameter such as {lpurl}; otherwise the landing page URL will break. Test the template with Google Ads’ own preview before you rely on it.

Common UTM mistakes (and how to avoid them)

MistakeWhat happensFix
Tagging internal links (a banner on your homepage linking to your sale page)The visit is re-labeled mid-session as if it came from a new campaign, and the real source is lost from that pointNever put UTM parameters on links within your own site. Measure internal promotions with your on-site tools instead
Mixed capitalizationOne campaign is split into several rowsLowercase everything and keep a value list
Missing source, medium or campaign“(not set)” rows nobody can explainAlways fill in all three
Medium values your analytics tool doesn’t recognizeTraffic falls outside the channel you expect, such as EmailUse standard media (email, cpc, social, referral, affiliate, display)
A second question mark in the URLParameters may not be read correctlyIf the URL already has ?, add UTMs after &
Personal data in parameters (an email address in utm_content)Personal data can end up stored in analytics and logsNever put names, emails or other personal information in URLs
Redirects that drop the query stringTags vanish before the page loads, and the visit looks directClick your tagged link and check the final address bar
Shortened links nobody can decode laterYou lose track of which tagged URL a short link points toRecord the full tagged URL next to every short link in your log
Internal links deserve a second mention because the mistake is so common. If you want to know how many people clicked a homepage banner, use your banner or analytics tool’s click reporting, not UTM tags. UTMs describe how someone arrived at your site, not where they went once they were there.

Checking that your tags work

  1. Click the real link. Use the actual email test send, the live ad preview or the printed QR code, not a URL you pasted into your browser.
  2. Look at the address bar. The parameters should still be there after the page loads. If they’re gone, a redirect (http to https, adding or removing www, or a trailing slash rule) may be dropping them.
  3. Check your analytics. Confirm the test visit shows up with the exact source, medium and campaign values you set. Reports can take a while to update, so check again the next day if it isn’t there yet.
  4. Compare with what you expected. If the visit landed in the wrong channel, check the medium value against the channel rules above.

From reporting to action: match the landing message to the ad

Most people stop at reporting. But the same information that tells you where a visitor came from can also tell you what they were promised. Someone who clicked a “free shipping this weekend” ad arrives expecting to see free shipping, and the faster the page confirms that, the less likely they are to wonder whether they’re in the right place.

This is often called message match: the headline, offer and imagery on the landing page echo the ad or email that brought the visitor. You can do it in a few ways:

  1. A dedicated landing page per campaign. The most precise option. Each ad points to a page written for that offer. It works well for a few big campaigns but becomes a lot of pages to maintain.
  2. One page, a campaign-specific banner. Keep your normal page, and show a bar or small banner only to visitors who arrived through a particular campaign: “Welcome, Instagram friends: your 10% code is SPRING10.” The page stays the same for everyone else.
  3. A campaign-specific follow-up. If the visitor signs up, the first email references the campaign they came from. This depends on your email tool being able to see the source.

The banner approach is the lightest to run. Here’s how to set it up in marketingLABO; the idea works in any tool that can target by traffic source.

Setting it up in marketingLABO

marketingLABO handles campaign links in two places: the access report, which can show your UTM data, and parameter settings, which let you register your own tracking parameters, group them into categories and use those categories to target banners.

Seeing UTM data in your reports. In the parameter settings, there is a checkbox to track UTM parameters. When it’s on, the access report gains a Source (UTM) tab where you choose a row dimension (utm_source, utm_medium, utm_campaign, utm_term or utm_content) and optionally a second one as columns for a cross-tab. The metrics include page views, sessions, contacts, average time on page, bounce rate, pages per session and conversions, and the table can be exported as CSV.

Registering your own parameters. The same settings screen lets you add parameters by name and value. The default key is param (admins can change it to another key), so a parameter called “Instagram spring post” with the value ig_spring appears as param=ig_spring, and you add that to the link you share. Each parameter can be assigned to a category, such as “Instagram” or “Partner blogs”, and the table shows page views for each over the last 30 days.

Targeting a banner by parameter. In a banner’s display rules, add a traffic source condition and choose Parameter, then pick one of your parameter categories. The banner is shown to visitors who arrived through a parameter in that category. The same condition can instead be set to organic search, referral, direct access or direct entry. Here is a simple setup for an Instagram campaign:

  1. Create a category called “Instagram” in parameter settings, then add a parameter such as param=ig_spring and assign it to that category.
  2. Build the link you’ll share, combining both tagging systems if you also use Google Analytics: https://www.example.com/?param=ig_spring&utm_source=instagram&utm_medium=social&utm_campaign=spring_sale_2026.
  3. Create a banner (a bar works well for this) with the exact wording of the offer from the post: same discount, same code, same deadline.
  4. Add the traffic source condition (Parameter, category “Instagram”). If you like, combine it with other display rules, such as a URL condition so it only appears on product pages, or a visit-frequency condition so it shows on the first visit only.
  5. Click your own link to check that the banner appears, then open the site without the parameter to make sure it doesn’t.
  6. Compare results using the banner’s impressions and clicks, and the access report’s conversion figures for that traffic.
Banners in marketingLABO are available on every plan (the free plan includes one), and the free plan also includes analytics and heatmaps for one site. Plan limits are listed on the pricing section of the homepage.

What to measure once tags are in place

Tagging pays off when you compare channels and campaigns on the same yardstick. A short monthly review is enough for most small stores:

  1. Sessions by source and medium. Where is traffic actually coming from, and has anything dropped sharply? A sudden drop in tagged email traffic is often a broken link rather than lost interest.
  2. Engagement by campaign. Time on page, pages per session and bounce rate show whether a campaign brings people who look around or people who leave immediately. A campaign that sends lots of quick exits may be promising something the page doesn’t deliver, which is a message-match problem.
  3. Conversions by campaign. The number that matters. Compare conversion rate, not just count, since a large campaign will naturally have more conversions.
  4. utm_content for creative tests. If you tagged two buttons or two images differently, compare them here before you design the next email or ad.

Low conversion from a campaign with good engagement often points to a problem further down the funnel, such as the sign-up or checkout form. Our guide to form abandonment explains how to find the field where people give up, and website heatmaps show what campaign visitors actually see and click on the landing page.

Frequently asked questions

Do UTM parameters affect SEO?

UTM parameters are for links you share in campaigns, not for links within your site. If a tagged URL does get crawled, a rel="canonical" link pointing to the clean URL is, in Google’s words, a strong signal of which version should be treated as the main one. Google’s own example of a non-preferred URL is a product page with a tracking parameter attached. Many site platforms add a canonical link automatically; check your page source if you’re unsure.

Can visitors see UTM parameters?

Yes. They appear in the address bar and are copied when someone shares the link. So keep values plain and never include personal information.

Should I tag my Google Ads links manually?

For Google Analytics, auto-tagging is usually enough, and Google states that it takes priority over manual tags in GA4. Add manual UTMs only if another tool on your site needs to read the campaign from the URL, and test that they don’t break your landing page.

How many campaigns should I create?

As few as you can while still answering your questions. One campaign per promotion, with utm_content for variations, keeps reports readable. If you can’t name a decision a new campaign value would help you make, you probably don’t need it.

A quick checklist

  1. Every external campaign link has utm_source, utm_medium and utm_campaign.
  2. All values are lowercase, with one consistent separator.
  3. Medium values come from your fixed list and match your analytics tool’s channel rules.
  4. No UTM tags on internal links.
  5. No personal data in any parameter.
  6. Every tagged link was clicked and checked after any redirects.
  7. Campaign visitors see a message that matches the ad or email they clicked.
  8. You review sessions, engagement and conversions by campaign once a month.

Campaign traffic is often the first step in a longer sequence. If you’re planning what happens after someone signs up, see how to build a welcome email series and our plain-English overview of marketing automation. To decide which visitors are worth a follow-up before they buy, read about micro-conversions.

Want to see your campaign traffic next to heatmaps and visitor history? marketingLABO’s free plan covers one site with analytics, heatmaps, visitor history, one form and one banner. Sign up free or compare plans and pricing.

Sources

  1. Google Analytics Help: URL builders: Collect campaign data with custom URLs (parameter definitions, required parameters, case sensitivity)
  2. Google Analytics Help: Default channel group (rules for Email, Display, Referral, Affiliates, Paid and Organic Social)
  3. Google Ads Help: About auto-tagging (gclid; auto-tagging prioritized over manual tagging in GA4)
  4. Google Ads Help: Set up tracking with ValueTrack parameters
  5. Google Search Central: How to specify a canonical with rel="canonical" and other methods
  6. Google Analytics Demos & Tools: Campaign URL Builder

Start free — no credit card needed

Sign up free