Laptop displaying analytics charts beside an open checklist notebook on a wooden desk.

UTM Parameters in GA4: Examples, Naming Rules and Tracking Fixes

SEO Analytics & Reporting · Campaign tracking

Build a campaign link your team can reuse, check what GA4 actually receives and find out why the visit appears in the wrong reporting row.

By Rahul Saini, Founder / SEO Strategist at SearchCounselCo. Evidence reviewed October 5, 2026.

Quick answer: what are UTM parameters?

UTM parameters are labels added to a campaign link to describe its source, medium and campaign. In GA4, use consistent tags on external links you control, then check the collected URL and the processed acquisition values. A tag identifies a marketing input; it does not guarantee a particular channel, complete attribution or a confirmed sale.

Prevent a false reporting alarm. Google omits UTMs from Landing page + query string and Page path + query string. Inspect Page location when checking whether the tagged URL was collected. An empty UTM filter on the other dimensions does not prove collection failed.

Source

Where it came from

Keep one spelling for each newsletter, platform or partner.

Medium

How it arrived

Choose a traffic type that matches the channel you intend to measure.

Campaign

Which effort it belongs to

Give the promotion one stable name across its placements.

Validation

What GA4 received

Check the collected URL, processed values and channel separately.

Which UTM parameters should you use?

Start with the three fields your team needs to identify a campaign: source, medium and campaign name. Add optional fields when they answer a real reporting question. Google recommends supplying all relevant values, rather than relying on a source-only tag.

UTM tags and their manual session reporting fields
Parameter What it records Manual session field
utm_source Named source or publisher Session manual source
utm_medium Traffic type Session manual medium
utm_campaign Campaign name Session manual campaign name
utm_content Creative, placement or link variation Session manual ad content
utm_term Paid keyword or term Session manual term
utm_id Campaign identifier Session manual campaign ID
utm_source_platform Platform associated with the source Session manual source platform

These manual fields isolate the values supplied by the tags. Google’s Data API schema documents the mappings. General fields such as Session campaign can also reflect integrated advertising data. Choose the scope and reporting surface that answer your question.

Google’s manual-tagging help currently says utm_creative_format and utm_marketing_tactic are not reported in GA4 properties, although the Data API schema lists related dimensions. Verify availability in your reporting method before relying on them. The keyword field is utm_term; utm_keyword is not its standard replacement.

If GA4 itself is not collecting the expected events, begin with our GA4 setup and reporting guide. Campaign labels cannot repair a missing measurement implementation.

A naming convention your team can keep using

Treat campaign names as shared reporting values. Decide the approved values before people start sending links. A short dictionary is easier to maintain than a spreadsheet filled with slightly different labels.

  • Source: choose one name per source. Our example uses customer_newsletter; keep that spelling across sends from the same newsletter.
  • Medium: describe the traffic type. Use email for the newsletter rather than a department name such as marketing. Check unusual values against Google’s channel rules.
  • Campaign: use a stable format such as initiative_period. Our illustrative promotion is autumn_measurement_2026. Put placement differences in content, rather than renaming the whole campaign.
  • Content: distinguish the link being compared, such as hero_link and footer_link. Keep the destination and offer comparable when evaluating placements.
  • Ownership: nominate one person to approve new values, record the campaign purpose and check links before distribution.

Use lowercase and a single separator as a team convention. UTM values are case-sensitive, so changing capitalization can split report rows. Avoid trailing spaces and duplicate parameter keys. Keep the naming dictionary alongside the campaign plan.

Capitalization and channel matching are separate. Google’s default-channel definitions are case-insensitive. A change from social to Social can produce a separate medium value, but that difference alone is not the documented explanation for Unassigned. Check the complete source, medium and applicable rule.

Customer email

Source / medium: customer_newsletter / email
Campaign: autumn_measurement_2026
Content: hero_link
Expected channel: Email.

Unpaid LinkedIn post

Source / medium: linkedin / social
Campaign: autumn_measurement_2026
Content: organic_post
Expected channel: Organic Social.

Partner editorial link

Source / medium: partner_site / referral
Campaign: autumn_measurement_2026
Content: resource_link
Expected channel: Referral.

These recipes teach the naming method; they are not records of campaigns we ran. For paid media, start with the platform’s tagging and integration requirements instead of applying the unpaid recipe to an advertisement.

Keep personal information out of every value. A campaign name should describe the promotion, not the recipient. Google’s PII guidance explicitly covers campaign parameters, page URLs and titles.

Build the link without losing the destination

Use Google’s Campaign URL Builder for a website campaign. Start with the exact destination, enter the approved names and copy the generated URL into your campaign record.

Illustrative email campaign link

https://example.com/measurement-guide/?utm_source=customer_newsletter&utm_medium=email&utm_campaign=autumn_measurement_2026&utm_content=hero_link

Source + medium

customer_newsletter identifies the newsletter. email identifies the traffic type.

Campaign + content

autumn_measurement_2026 groups the promotion. hero_link distinguishes this placement.

The ? starts the query string and & separates its fields. If the destination already has a query string, append new fields with an ampersand rather than adding another question mark. Keep any fragment, such as #checklist, at the end.

Illustrative destination with an existing query and section anchor

https://example.com/measurement-guide/?view=compact&utm_source=customer_newsletter&utm_medium=email&utm_campaign=autumn_measurement_2026#checklist

The naming convention uses simple characters, but a builder should encode values that need URL encoding. Do not manually encode the whole address: that can turn the destination into an unusable value. Check the link after pasting it into the actual email or publishing platform.

When Google Ads auto-tagging is involved

Keep click IDs intact. Google’s documentation says usable auto-tagged values take precedence for cross-channel traffic classification when manual and automatic tagging are combined. Manual term and content values can still populate their manual dimensions. If the click ID cannot be used as intended, present UTMs can become the exclusive input for those cross-channel values. A source-only fallback can therefore leave gaps.

Review the linked Ads and GA4 configuration before changing campaign templates. A manually tagged link that looks tidy is not proof that paid attribution or cost reporting is correct.

Verify the link at four separate checkpoints

The useful question is where the expected information stops matching the actual information. Check the link as distributed, the destination after redirects, the event received by GA4 and the processed report. Save one dated record covering all four.

1. Open the distributed link

Test the link from the real placement, including any email tracking wrapper or shortener. Begin a new test session rather than navigating within an already active visit. Record the original campaign URL and the final browser address. If parameters vanish during a redirect, locate that step before changing channel definitions. A clean address alone is not proof of loss if a measurement request already captured the tagged URL.

2. Check the event GA4 receives

Use Tag Assistant to enable debug mode for your test device, then inspect the page_view in DebugView. Check page_location for the expected URL and parameters. Record the browser, consent state, time and property timezone. Privacy controls and denied Analytics consent can prevent events appearing in DebugView; do not interpret every missing event as a naming error.

DebugView is a collection check. Its attribution analysis is limited, so use Acquisition reports for the processed attribution check. If developer traffic is excluded, document that exclusion and verify a normally collected campaign visit separately.

3. Inspect processed campaign values

Once the relevant data has processed, open Traffic acquisition and compare Session source / medium, Session campaign and Session default channel group for the campaign dates. Add Session manual source, Session manual medium and Session manual campaign name in a compatible report or exploration when you need to isolate manually supplied values. Keep the same property, date range and session scope.

4. Compare the channel with the intended rule

A collected source value and a recognized channel are different checks. If the source and campaign look right but the channel does not, inspect the medium and the applicable default-channel rule. If your business needs a different grouping, define that reporting requirement separately from the collection test.

Put the actual values in the record, including unexpected ones. “Link tested” is too vague to help the next person diagnose a problem. A pass at collection does not substitute for a pass in acquisition or outcome measurement.

Run a controlled UTM test with explicit success criteria

Use a destination and measurement setup approved by the analytics owner. Give the test a unique campaign name, record the actual time and property timezone, and keep it separate from business campaign comparisons. The steps below are a reproducible test protocol; they are not a claim that we ran a new campaign.

  1. Write the expected values first. Record the real destination, approved source, medium, campaign, optional content and intended channel. Use the same campaign name in your report filter.
  2. Test the actual placement. Open the link from its email, social post or partner placement, including its redirect wrapper. Use a fresh test session and document the browser and applicable consent state.
  3. Check collection. Inspect the page_view and page_location in DebugView. Save the values that actually arrived, including absent tags. Record whether the test visit is excluded by a developer-traffic filter.
  4. Check processed reporting. Once the visit is available in the appropriate report, compare the session manual fields and default channel with the expected values. Keep event counts and session counts separate.
  5. Retest a demonstrated mismatch. For a link you control, record the exact template or redirect correction and repeat the same checks. For a reporting-only issue, record the changed dimension, filter or grouping and retain the original comparison.

Link check

The destination works and the intended values reach collection. Save the distributed URL and redirect evidence; a cleaned address after collection is not automatically a failure.

Collection check

The expected page_view contains the relevant tagged page_location. A browser address alone does not establish that GA4 received it.

Reporting check

The intended manual values appear at the selected scope and dates. The observed channel matches the applicable rule or the reporting requirement is documented.

Correction check

The record identifies the actual change and subsequent observation. An unperformed checkpoint stays Not tested; optional fields can be Not applicable.

Capture the evidence a colleague can reproduce

For collection, capture the DebugView event and relevant page_location detail. For processed reporting, capture the dimensions, campaign filter, date range and resulting values. Show the final distributed link or redirect log when a wrapper is involved. Redact customer data, identifiers and unrelated URLs, while preserving the parameter names and values needed to understand the result.

Include a short record: affected placement, observed error, exact correction, subsequent collected values and processed report result. Report screenshots demonstrate the interface configuration; exported rows preserve the reported values. A timestamped comparison is more useful than a generic “tracking fixed” note.

Where to find utm_content, utm_term and campaign values in GA4

For utm_content, look for Session manual ad content. For utm_term, use Session manual term. Use session fields to inspect a campaign visit, and first-user fields when the question concerns initial acquisition. The parameter key itself is not the report dimension name.

Report A: compare campaign placements

  1. Open Explore and create a blank free-form exploration. Select the campaign dates in the property you are testing.
  2. Import dimensions: Session manual campaign name and Session manual ad content. Import Session manual term for a separate keyword view when relevant.
  3. Import metrics: Sessions and Engaged sessions. Put Session manual ad content in Rows and the two metrics in Values.
  4. Filter the campaign: set Session manual campaign name to exactly match autumn_measurement_2026, or the actual approved name you distributed.
  5. Read the placement rows. Our illustrative links use hero_link and footer_link. Those are expected labels when those tags are collected; this guide supplies no invented session counts for them.
  6. Compare terms separately. Replace the content row dimension with Session manual term when checking tagged paid keywords. An email link without a term does not need a made-up keyword.

Google documents Rows, Values and filters in its free-form exploration guidance. Reporting surfaces differ: if a manual field is not available in your interface, verify its corresponding Data API field and compatible metrics. Do not assume an unavailable picker proves a tag was not collected.

Report B: check the collected URL

  1. Use a separate view. Add Page location and Event name as dimensions, and Event count as the metric.
  2. Set the filters: Event name exactly matches page_view; Page location contains utm_. Narrow further to the intended destination or campaign when needed.
  3. Inspect the URL values. Record whether source, medium, campaign and content actually appear in the collected address.
  4. Label the count correctly. Event count in this filtered view measures page-view events. Repeated views can occur in one session, so this is not a click total.

Keep the collection view and session acquisition view separate. Landing page + query string omits UTMs, so it is the wrong dimension for the tagged-URL filter. A report with no rows can also require a date, property, collection or filter check.

If content is still (not set)

Start with the distributed link and collected Page location. Was utm_content actually supplied? Did it survive until collection? Does the selected reporting period include the visit? Are you comparing the correct scope? A tag appearing partway through an active session is not equivalent to a new tagged entry. Investigate the evidence before adding a custom field or changing a channel.

Download the UTM register and verification worksheet

Use one shared record before distributing a link, then record the actual collection and reporting results. The workbook contains a formula-based link builder, a campaign register and a reusable one-link verification sheet. Its example inputs are illustrative; no campaign was run.

Download the UTM register and QA worksheet (.xlsx)

  • Build: enter the destination and approved values in Build one link. The formula preserves an existing non-UTM query and the original fragment, and flags common missing-input or delimiter problems.
  • Plan: copy the generated link into Campaign register, then record the expected channel and owner.
  • Collect: record the actual placement, final destination, page_location, time, browser and consent state in Verify one link.
  • Report: save the processed manual values and session channel for the same property and dates.
  • Retest: record the exact correction and subsequent observed values. Mark a campaign verified only after every applicable checkpoint has evidence.

The spreadsheet builder is for simple ASCII naming values using letters, digits, underscores, hyphens or dots. It does not perform general percent encoding or diagnose attribution. For other characters, use Google’s Campaign URL Builder. The review-progress formula keeps unfinished checks and missing collection or processed evidence visible.

Use Not applicable for an optional tag or outcome you did not intend to measure. Leave unperformed checks as Not tested. A tidy naming row is not evidence that collection and reporting passed.

Real reporting correction: an empty UTM filter returned data

We reviewed one connected GA4 property using read-only exports for September 5–October 2, 2026. The property timezone was America/Los_Angeles. The website and identifying page paths below are redacted; the recorded source values, dates and counts are retained.

The issue was an empty report when we filtered Landing page + query string for utm_. We changed the selected URL dimension and its filter to Page location, kept the same reporting dates and page_view event condition, and reran both requests on October 5, 2026.

Before and after the report-query correction

Original request

0 matching rows
Dimension: Landing page + query string
Filter: contains utm_
Event name: page_view

Corrected request

36 grouped rows; 40 page-view events
Dimension: Page location
Filter: contains utm_
Event name: page_view

Actual read-only report responses rechecked October 5, 2026. Both requests use September 5–October 2 in the property timezone. This display is derived from exports, not a GA4 interface screenshot. The correction exposed existing records; it did not create new traffic.

Google documents that those landing-page and page-path dimensions omit UTMs. Page location is the appropriate collection-level URL dimension for this filter. Landing-page dimensions refer to the session entry, while Page location can describe each recorded page view, so the two outputs are not equivalent landing-page populations.

Processed values still need a separate check

Processed acquisition evidence

AI Assistant

4 sessions
Session source / medium:
gemini.google.com / ai-assistant

Unassigned

4 sessions
Session source / medium:
gemini / (not set)

Export-derived display of two session-scoped report rows. September 5–October 2, 2026; America/Los_Angeles. This is not a GA4 interface screenshot or a before-and-after comparison.

To investigate collection, we inspected Page location. A September 19 page_view record contained the following redacted equivalent:

Collection evidence: September 19, 2026

Recorded Page location; host and path redacted

https://example.com/blog/example-a?utm_source=gemini

Manual source

gemini

Manual medium

(not set)

Manual campaign

(not set)

Export-derived display of one selected page_view event. Event count: 1. Associated session channel: Unassigned. Recorded page referrer: missing. The source label does not authenticate who appended the tag.

The recorded manual source was gemini, while manual medium and campaign were (not set). The associated session channel was Unassigned, and the recorded page referrer was missing. Tagged page views on September 24 and 28 showed the same classification.

There were three selected Gemini-tagged page-view events and four gemini / (not set) sessions across the reporting period. These are different measures. The acquisition total does not establish four separate tagged landing URLs.

The completed correction was to the report query. The selected records establish that tagged page views existed and show their associated processed values. We did not modify campaign templates, collection tags or channel settings, so this is not evidence of a tracking-template correction or a later reclassified session. Source labels also do not authenticate the platform that appended them.

When the underlying link also needs correction

For a link you control, save the original error and affected placement, the real template change, the next collected URL and the subsequent processed values. The worksheet has fields for that sequence. For the source-only Gemini observations above, no link correction or campaign retest was performed. Third-party generated links may be outside your control.

What the Gemini news changes for this workflow

Search Engine Journal reported Gemini UTM observations on October 1 and described the implementation as undocumented. Our selected records predate that article. Neither establishes a universal launch date or shows that every Gemini client sends the same tags.

Google currently defines an AI Assistant channel, with ai-assistant as its matching medium and automatic values for recognized assistant referrers. Google’s AI Overviews and AI Mode are excluded from that channel. Keep source-only labels separate from authenticated evidence about origin.

For the broader assistant reporting setup, use our existing guide to tracking ChatGPT and Perplexity referrals. This example addresses the narrower problem of a collected tag and its processed reporting values.

Direct, Unassigned and (not set) need different fixes

Start with the exact symptom, not a blanket instruction to add more tags. An empty campaign field, a missing source and an unmatched channel can arise at different stages.

UTM troubleshooting: diagnose before changing the setup
Symptom What it means First useful check
Direct / (none) The visit has no clear referral source in this reporting context. Inspect the distributed link, collection timing and referral information.
Source present; medium or campaign is (not set) The selected reporting value is unavailable. Check which tags arrived, the manual dimensions and any auto-tagging interaction.
Unassigned No applicable default-channel rule matched. Compare the recorded source and medium with the channel definitions.
One promotion appears in several rows Campaign labels may differ. Compare spelling, case, separators and dynamically inserted values.
Tags visible in the URL; no matching page_view The URL alone does not establish event collection. Check the property, tag execution, consent and applicable filters.
UTM filter is empty in a landing-page dimension That dimension can omit the parameters. Use Page location to inspect the collected URL.

For links you control: correct the input, then retest

If your newsletter link contains a source but omits the approved medium or campaign, update the template for future sends. Run the four checkpoints again and save the processed result. Editing a live link does not rewrite previously collected campaign values.

For third-party tags: improve the reporting view carefully

You cannot rewrite every link generated by another platform. If known labels need one business reporting row, a custom channel group can use narrow source and default-channel conditions. In reports, custom groups can classify existing data retroactively; the first matching channel wins. Keep the default view for comparison.

For the example above, a proposed “AI-labelled sources” channel could include the existing AI Assistant channel or sources exactly matching gemini or gemini.google.com. Test the totals and rule order against the original rows. This proposal was not implemented during our review. It changes a reporting view; it cannot recover an absent source or verify where a visit originated.

Keep campaign UTMs off internal navigation

Use event tracking to compare an internal banner or menu placement. Campaign tags describe acquisition inputs and can complicate attribution when reused inside a visit. GA4 does not restart a session merely because new campaign parameters appear; that older Universal Analytics behavior should not be presented as a GA4 rule.

Report campaign outcomes without changing the question

A recognizable campaign row is the beginning of analysis. Decide which business action the campaign is supposed to produce, validate that event and review it alongside sessions and engagement.

  • Session acquisition: which recorded sessions carried the campaign values?
  • First-user acquisition: which source first acquired the recorded users?
  • Key-event attribution: which interactions received credit under the selected event attribution model?

These scopes answer different questions and can show different values without a collection failure. Our GA4 key-event measurement guide covers outcome validation. A form_start indicates recorded activity; it does not establish a completed lead or sale.

Campaign UTMs also do not explain every difference between Search Console clicks and GA4 sessions. Use the GSC clicks versus GA4 sessions diagnostic for that comparison, then place campaign results in your wider SEO analytics and reporting framework. Keep a change log so a classification change is not mistaken for new demand.

UTM parameters in GA4: frequently asked questions

Do I need all five traditional UTM parameters?

Use source, medium and campaign for a standard campaign link. Add content or term when they serve the measurement plan, and supply other relevant identifiers where needed. Do not add meaningless values just to fill every field.

Are UTM values case-sensitive?

Yes. Different capitalization can split stored values into report rows. Google’s default-channel definitions are case-insensitive, so capitalization alone is not the documented reason for an Unassigned channel. Keep the naming convention consistent and test the full matching rule.

Where can I see utm_content and utm_term in GA4?

Use Session manual ad content for utm_content and Session manual term for utm_term in a compatible report or Exploration. Filter to the intended manual campaign and dates. Use the corresponding first-user fields for initial acquisition questions.

Why can I see a UTM source but no campaign?

A source-only URL does not contain a campaign name. Check the actual collected URL and the relevant manual fields before concluding that GA4 lost a value.

Where should I look for the full tagged URL?

Use Page location for the collected URL. Google omits UTMs from Landing page + query string and Page path + query string. Use acquisition dimensions for processed campaign reporting.

Can a custom channel group fix historical tracking?

It can regroup existing values in reports. It cannot create missing campaign information or prove the original source of a visit. Keep the original channel report as the comparison.

Does adding UTMs recover every campaign click?

No. A tagged link still needs to reach the destination and be collected under the applicable measurement conditions. Attribution, consent, filters and reporting scope affect what you can observe.

The one thing to do next

Choose one campaign link you will distribute next. Write its expected source, medium, campaign and channel in a verification record. Test the actual placement, inspect the collected URL and compare the processed acquisition row. Fix the first mismatch you can demonstrate, then repeat the check.

If your team needs help deciding which measurement gaps matter before changing campaigns or reports, our SEO consulting service can help prioritize the work.

Sources used

Documentation checked October 5, 2026. The real example uses read-only GA4 exports for September 5–October 2, 2026, with session and page-view counts kept separate. The empty and corrected report queries were reproduced on October 5. URLs are redacted. The evidence panels are export-derived displays, not interface screenshots. No new campaign, saved Exploration, collection or channel change was performed. Naming recipes and workbook examples are templates, not additional client results.

Scroll to Top