How to find UTM traffic in GA4

Open the Traffic acquisition report and switch the first column to Session campaign or Session source / medium: that is where your utm_campaign, utm_source and utm_medium values appear. utm_content and utm_term have built-in dimensions too, with nothing to set up.

An lnk.ua short link and a GA4 Session campaign report with the black_friday_2026 row highlighted

GA4 stores UTM parameters in session-scoped dimensions. Open the Traffic acquisition report and switch the first column of the table to Session campaign or Session source / medium: your utm_campaign, utm_source and utm_medium values are there. utm_content and utm_term need no setup either. GA4 has built-in dimensions for them, which you add as a secondary column or pull into an exploration.

If you don't have a tagged link yet, our UTM builder makes one, lowercases the values and shortens the result in the same step.

Which GA4 dimension holds each UTM parameter

Every parameter in the URL becomes its own dimension:

ParameterGA4 dimensionExample value
utm_sourceSession sourcenewsletter
utm_mediumSession mediumemail
utm_campaignSession campaignspring_sale_2026
utm_contentSession manual ad contentheader_button
utm_termSession manual termrunning_shoes

Session source / medium combines the first two in one row, for example newsletter / email. It is the one most people keep open day to day.

Each parameter also has a "First user" version, such as First user manual source. That one records where a person came from the very first time. To judge one email or one post, use the session dimensions, which describe where the visitor came from on this visit.

How to find a campaign in the Traffic acquisition report

  1. In the left menu, open Reports, then Acquisition > Traffic acquisition. If your property's menu is arranged differently, type the report name into the search bar at the top.
  2. Above the first column of the table, open the dimension drop-down. The report starts on the session default channel group. Pick Session campaign.
  3. Type the campaign name into the search box above the table to filter it to one row.
  4. Click the "+" next to the dimension name and add Session source / medium. Now you can see which sites sent traffic to that campaign.
  5. Check the date range in the top right corner. A new campaign does not show up at once: Google says data processing can take 24–48 hours.

The columns next to it show sessions, users, engaged sessions and events. Sessions are the simplest number for comparing one campaign with another.

Where to see utm_content and utm_term

Older guides tell you to create custom dimensions for these. GA4 doesn't need that any more: the dimensions in the table above already exist.

The quickest way is a secondary column in the same report. Keep Session campaign as the first column, click "+", and search for "manual ad content" or "manual term". One campaign then splits into its ads or links.

For more breakdowns at once, go to Explore and start a Free form exploration. Add the campaign, source and manual ad content dimensions, drop them into Rows and put Sessions into Values. You get a campaign → source → ad table you can save and reopen every week.

Say one newsletter has two links to the same page, one in the header and one at the bottom. With utm_content=header_button and utm_content=footer_link you see two rows and know which link people actually click. With identical links, GA4 has no way to tell them apart.

How to name utm_medium so traffic lands in the right channel

GA4 assigns the default channel group from source and medium using fixed rules that you can't edit, so the tags have to fit the rules. Channel definitions ignore letter case. Here is where common pairs end up:

source / mediumDefault channel groupWhy
instagram / socialOrganic Socialmedium is social, social-media, social-network or sm
facebook / cpcPaid Socialsource is on Google's list of social sites and medium is paid
google / cpcPaid Searchsource is a search engine and medium is paid
newsletter / emailEmailmedium is email, e-mail or e_mail
provider / smsSMSmedium is exactly sms
partner_blog / referralReferralmedium is referral, app or link
flyer / qrUnassignedno rule covers medium qr

GA4 treats a medium as paid when it contains "cp" (cpc, cpm), is ppc or retargeting, or starts with "paid". Paid Social also needs the source to be on Google's list of social sites. Smaller platforms and messaging apps may not be on that list, and then a paid medium lands in Paid Other. It still won't go to Unassigned.

Unassigned only means no rule matched. Print materials with QR codes will end up there, and that's fine: the campaign still shows under Session campaign. If you want offline traffic in its own group, you can build a custom channel group in the property settings.

For text message campaigns, use sms as the medium and GA4 puts them in the SMS channel. If the link has to fit into one message, see the page on a short link for SMS.

Why a campaign shows up as (not set)

Usually the problem is in the link itself. The common cases:

  • utm_campaign is missing. Google says so plainly: missing UTM parameters result in (not set) values in reports. Always set source, medium and campaign, even for a single post.
  • Mixed case. GA4 treats Facebook and facebook as two different sources, so one campaign splits across several rows. The channel group stays the same, which is why the mistake only shows in Session source / medium.
  • Spaces and non-Latin characters. "spring sale" becomes spring%20sale in the URL, and a colleague types "spring-sale" next time. The report then has two campaigns instead of one.
  • The site drops the parameters. If the page redirects to another address without the query string, GA4 never sees the tags. Open the link and look at the address bar: the utm_* part should still be there.
  • Tags added to the short link. Put them on the full URL first, then shorten it.
GA4 Session source / medium report: Telegram, telegram and TELEGRAM as three separate rows GA4 Session source / medium report: a single telegram / social row and an lnk.ua short link
Left: one source typed in three cases splits into three rows; right: all tags in lowercase, so the visits stay in one row.

Shortening doesn't strip the tags: an lnk.ua short link redirects to the full address with every utm_* intact. The builder lowercases all values and replaces spaces with "_", so the first three mistakes on that list don't happen with it.

How to test your tags before launch

Before you send the link out, open it yourself and check what GA4 recorded.

The quick check is the Realtime report under Reports. It covers the last 30 minutes, and its traffic card reports the first user source. So open the link in a private window: GA4 sees a new visitor, and your source appears in that card within a few minutes.

For a closer look, use DebugView: Admin > Data display > DebugView. Turn on debug mode with Google Tag Assistant (tagassistant.google.com), and every event from your browser shows up there. Google notes that DebugView does only limited attribution, so use the Acquisition reports for the final numbers.

GA4 sessions rarely match the click count in a link shortener, because they count different things. You can see clicks on each short link separately in your account; see short link click stats for what's recorded.

Once the test passes, use the UTM builder to make a separate link for each placement and shorten it there.

FAQ

Do I need a custom dimension for utm_content in GA4?

No. GA4 has a built-in dimension, Session manual ad content, and Session manual term for utm_term.

How long until a campaign appears in GA4 reports?

A few minutes in Realtime. Standard reports can take 24–48 hours to process, according to Google.

Does GA4 treat "Google" and "google" as the same source?

No. UTM values are case sensitive, so they show as two rows. The channel group is not affected by case.

Do I need utm_id?

Not for these reports. Google recommends it if you import campaign data into GA4; source, medium and campaign are enough to find your traffic.

Why does GA4 show fewer sessions than my shortener shows clicks?

A shortener counts every request to the link, while GA4 counts only visits where its tag had time to load. Bots, link previews in messaging apps and ad blockers make up most of the gap.

Share X Telegram Facebook

Read also

A bit.ly short link under a magnifier showing the real address it leads to

How to check a short link before you click

Paste the short link into an expander: it shows the final address and whether the site is flagged as dangerous, without opening the page on your phone. Below are the signs of phishing and what to do if you've already clicked.

A long page address turns into the short link lnk.ua/spring with a QR code

How to shorten a link on desktop, phone, Telegram and Instagram

Copy the long URL, paste it into a shortener and copy the short one back: three steps, about a minute. Below is how to do it on a computer and a phone, what the person who clicks will see, and when a short link does more harm than good.

An lnk.ua short link, a curl response with status 302 and the final address in the browser

301 vs 302 redirects explained

A 301 tells the browser the address has moved for good, and the browser may remember that. A 302 is a temporary hop the browser checks with the server every time, which is why lnk.ua short links answer with a 302.