On this page+
GA4 reads UTM parameters automatically. The setup is "do nothing." What is not automatic is making sure the data you collect is legible to the rest of the team. Three settings actually matter: session timeout, cross-domain measurement, and the way GA4's default channel grouping reads utm_medium.
What works out of the box
Every GA4 property already reads UTM parameters from the URL on landing. The data lands in:
- Reports → Acquisition → Traffic Acquisition. Default group is Default Channel Group, which buckets by
utm_mediummapping. Group by Source / Medium for the raw breakdown. - Reports → Acquisition → User Acquisition. Same data sliced by first-touch session.
- Reports → Engagement → Pages and screens. Filterable by
utm_campaign.
No custom configuration is needed. As long as the URL the user landed on carried UTMs, GA4 records them.
Setting 1: session timeout
Default: 30 minutes of inactivity. After 30 minutes, the session ends and the next interaction starts a new session.
For B2B funnels and long-form research-driven journeys, 30 minutes is too short. A user who tabs away to read more, browse a competitor, or check email comes back as a new session. The original UTM attribution is lost (or technically attributed to the new session source, which is often "direct").
The fix:
- Admin → Data Streams → click your stream.
- Configure tag settings → Show all → Adjust session timeout.
- Set to 60 or 90 minutes for B2B. Leave at 30 for B2C and ecommerce.
This is one of the most impactful GA4 settings for marketing teams whose funnel involves any reading time.
Setting 2: cross-domain measurement
If your campaigns send traffic from one domain to another in the same session (marketing.com → app.com, or acme.com → pricing.acme.com if those are separate properties), enable cross-domain measurement. Without it, the second domain logs the visit as a referral from the first, and the UTM source attribution is overwritten.
The setup:
- Admin → Data Streams → click your stream.
- Configure tag settings → Configure your domains.
- Add every domain that should be in scope. Use the matching pattern that fits (Contains, Equals, Begins with).
- Save.
Test by clicking a UTM-tagged link, navigating across the domain boundary, and checking that GA4's Realtime view shows the original utm_source instead of the boundary domain as the referrer.
Setting 3: channel grouping that reads utm_medium correctly
GA4's Default Channel Grouping is a string match on utm_medium. The exact strings GA4 looks for, in the channels marketing teams use most:
| GA4 Default Channel Group | utm_medium values it reads |
|---|---|
| Paid Search | cpc, ppc, paidsearch |
| Paid Social | paidsocial, paid_social, paid-social, social-paid |
| Organic Social | social, social-network, social-media, sm |
| email, e-mail, e_mail | |
| Display | display, banner, expandable, cpm |
| Affiliates | affiliate, affiliates |
| Referral | referral |
| Organic Search | (recognized by referrer; utm_medium is ignored here) |
If your utm_medium value is not one of these strings, your traffic falls into "Unassigned" or "Other." This is the single most common cause of seemingly-missing campaign data in GA4.
Two ways to fix this if your team has been tagging with non-standard values:
- Change the convention going forward. Pick values from the GA4 list. Document them in a shared doc. Use a link builder that enforces them (Trakl's UTM builder is opinionated about this).
- Build a Custom Channel Group in GA4 → Admin → Data display → Channel groups. Add rules for your specific values. This makes the existing data legible without retagging.
Most teams do option 1 going forward and option 2 retroactively for the first 90 days.
The piece on utm_source vs utm_medium covers the channel-by-channel mapping in detail.
Adding utm_term and utm_content as dimensions
GA4 reads utm_term and utm_content from the URL but does not surface them in the standard reports by default. To use them:
- Admin → Custom definitions → Create custom dimension.
- Name: "Session term" (or "Session content"). Scope: Session. User property or event parameter: select
utm_term(orutm_content). - Save. Wait 24 to 48 hours for the dimension to populate with new data.
- The dimension is now available in Explore reports and as a secondary dimension in standard reports.
This is the way to slice data by ad creative variant or audience segment without overloading other parameters.
What to look at every Monday
Three reports in this order:
- Reports → Acquisition → Traffic Acquisition. Group by Default Channel Group. Look for big week-over-week changes. Drill into any channel that swung more than 25 percent.
- Reports → Acquisition → Session campaign drilldown. Filter to active campaigns. Compare GA4 sessions to the count your ad platform reported. A gap larger than 25 percent usually means a tagging or attribution problem.
- Reports → Engagement → Conversions by campaign. The number that matters. The campaign with the most clicks is rarely the campaign with the most conversions.
What to do when the numbers are wrong
If GA4 shows fewer sessions than expected for a campaign:
- Open one of the campaign URLs in an incognito window. Check that the URL bar shows the UTMs after redirect.
- Check GA4 Realtime view. Click the campaign URL while watching. Does a new event show up with the correct source/medium?
- If sessions are missing entirely, the issue is on the tracking side (cookie consent banner blocking GA4, ad blocker, server-side redirect that strips query string).
- If sessions are present but with the wrong source/medium, the issue is in your
utm_mediumvalue or in cross-domain measurement.
The piece on why your UTM data is messy covers the half-dozen common attribution failures and how to diagnose each.
Verifying the setup is working
Before launching a campaign, run this quick check:
- Build a test URL with all five UTMs (use the free UTM builder).
- Open it in an incognito window.
- Open GA4 → Realtime → User snapshot.
- Confirm the snapshot shows the correct
utm_sourceandutm_mediumfor the test session. - If anything is wrong (direct attribution, missing values), fix before the campaign goes out.
This 5-minute check catches roughly 80 percent of tracking failures before they make it to a live campaign.
For the broader UTM context, the UTM parameters pillar guide covers the parameters themselves. For the GA4-specific patterns that go wrong, why your UTM data is messy is the diagnostic.
Frequently filed
Common questions.
Q.01Does GA4 read UTM parameters automatically?+
Yes. GA4 reads utm_source, utm_medium, utm_campaign, utm_term, and utm_content from the URL on every session and attributes them to the session. No additional configuration is needed in GA4 for UTMs to work; the parameters land in the Default Channel Grouping report by themselves.
Q.02Where do UTM parameters show up in GA4?+
In Reports → Acquisition → Traffic Acquisition. Group by Source / Medium to see attribution by utm_source and utm_medium. Group by Session campaign to filter by utm_campaign. Custom dimensions can be added for utm_term and utm_content if you need them in standard reports.
Q.03Why are my UTMs showing up as direct traffic?+
Three common causes. The link does not actually have UTMs (check the URL string itself). The user landed via an in-app browser that strips referrer (Instagram, Facebook), but the UTMs should still survive. Cross-domain redirect that strips query strings, often a server-side redirect that does not preserve the URL parameters.
By the byline
Trakl TeamEditorial team
We build Trakl, a link shortener and UTM tracker for marketing teams. We write here from the cleanup work, support tickets, and campaign reviews that fill the rest of our week. Specifics over slogans, and we cite the source.
Photo: Gábor Szűts on Unsplash


