12 sections · GA4 2026
Section 01

How Attribution Works

Attribution determines which touchpoints in a user's journey receive credit for a conversion. Getting it wrong is one of the most common reasons analytics data misleads business decisions.

GA4 uses an event-based data model and assigns credit across the touchpoints a user encounters before completing a conversion event. The model you select in Admin → Attribution Settings applies globally to all conversion reporting.

Critical

Attribution is only as good as your UTM data. Most attribution problems are not model problems — they are data quality problems that no model can fix. A perfectly configured model on bad UTM data still produces bad results.

The Attribution Chain

1
User sees a touchpoint
A paid ad, email, organic result, or referral link. GA4 records the source, medium, and campaign from UTM parameters or referrer detection.
2
Session is attributed
GA4 assigns the session to a channel based on source/medium. This is where UTM errors compound — a wrong medium means a wrong channel classification.
3
Conversion fires
The user completes a key event. GA4 looks back across the lookback window and applies the attribution model to distribute credit.
4
Credit is assigned
Depending on the model, credit goes to one touchpoint (last click), many (linear), or a ML-weighted distribution (data-driven).
Section 02

Attribution Models

GA4 supports two categories of attribution model. The choice affects which channels appear to perform well — and therefore where budget gets allocated.

Rule-Based Models

Last Click
100% to final touch
All credit goes to the last touchpoint before conversion. Simple, auditable, but blinds you to awareness channels.
First Click
100% to entry point
All credit to the first touchpoint. Good for measuring acquisition sources, but ignores closing channels.
Linear
Equal split
Equal credit across all touchpoints in the path. Fair but may overvalue low-intent touches.
Time Decay
Recency weighted
More credit to touchpoints closer in time to conversion. Useful for short sales cycles with high-frequency retargeting.
Position-Based
40 / 20 / 40
40% to first touch, 20% distributed across middle, 40% to last touch. Balances acquisition and closing channel credit.

Data-Driven Attribution

Volume Requirement

DDA requires ~300+ conversions per month and at least 30 days of data to train. Below this threshold, GA4 silently falls back to Last Click. Verify you have sufficient volume before trusting DDA outputs.

Section 03

Key Variables to Watch

Lookback Windows

GA4 defaults to 30 days for most conversions and 90 days for purchase events. If your sales cycle exceeds these defaults, you will systematically undercount early-funnel touchpoints.

Set lookback windows in Admin → Attribution Settings. B2B funnels commonly need 60–90 days for non-purchase conversions.

Channel Groupings Are Fragile

GA4's default channel definitions rely entirely on UTM parameters being applied correctly. A paid campaign without utm_medium=cpc will be misclassified as organic or direct. This is the single most common source of attribution errors.

Cross-Domain Tracking

When users traverse multiple domains (main site → subdomain checkout → third-party cart), sessions fragment and attribution breaks unless:

Cross-domain measurement is configured in the GA4 data stream settings for all involved domains
The _gl linker parameter passes correctly across all domain transitions — verify in GA4 DebugView

Direct Traffic Inflation

GA4 has a "last non-direct click" fallback — if the last touchpoint is direct, it looks back for a prior campaign touchpoint. But when UTMs are missing or broken, direct absorbs credit it doesn't deserve.

Signal

Monitor your direct traffic percentage as a data quality indicator, not just a channel. A sudden spike almost always means a UTM broke somewhere in a campaign or email deployment.

Model Switching Creates Discontinuities

You can compare models in Advertising → Attribution without changing anything. But switching the active model in Attribution Settings retroactively changes how conversions are counted across all reports. Set it once, early, and document the date if you ever change it.

Engaged Sessions vs. Sessions

GA4 attributes using engaged sessions as the unit, not raw sessions. An engaged session requires one of: 10+ seconds of engagement, a conversion event, or 2+ page views. This changes how multi-touch paths surface in funnel analysis compared to Universal Analytics.

Section 04

Getting It Right

Before Launch

1
Lock in your UTM taxonomy
Enforce it across all channels before the first campaign goes live. Document it as a governance artifact so no one improvises parameter names mid-flight.
2
Set lookback windows deliberately
Match your actual sales cycle, not GA4's default. A 45-day B2B funnel on a 30-day window systematically misattributes early-funnel channels.
3
Enable cross-domain measurement
If users traverse any domain boundary in their journey, configure this before the first conversion can be lost.
4
Choose your model with volume in mind
Use DDA only if you have 300+ monthly conversions. Otherwise use Last Click or Position-Based and document the tradeoff explicitly for stakeholders.

At Implementation

1
Fire conversions server-side where possible
Use Measurement Protocol or server-side GTM to reduce conversion loss from ad blockers and browser restrictions. Client-side only means you're missing data.
2
Test UTM passthrough in staging
Redirects silently strip query parameters. QA every UTM-tagged URL through your full redirect chain before it runs in production.
3
Verify _gl linker with DebugView
For cross-domain setups, confirm the linker parameter appears in the destination domain's requests. It's the single most common cross-domain configuration failure.

Ongoing

Monitoring Routine

Set a recurring check on Direct traffic % and the Attribution Paths report. The paths report tells you whether your model reflects actual user behavior — not just whether it validates your paid channel spend.

Section 05

UTM Taxonomy Overview

A UTM taxonomy is the naming convention system governing how you tag URLs across every campaign and channel. It is the foundation everything else rests on.

If it's inconsistent, channel groupings break, attribution lies, and reports become noise. The taxonomy is not a technical concern — it is a governance concern.

Foundational Principle

Most attribution problems are not model problems. They are data quality problems upstream of the model. Fix the taxonomy first. Then tune the model.

What a Taxonomy Controls

Channel classification in GA4 — determines which bucket every session lands in
Attribution accuracy — correct source/medium is required for any multi-touch model to function
Campaign reporting — consistent naming enables aggregation, filtering, and trend analysis
BigQuery analysis — clean taxonomy makes SQL queries on event_params reliable without regex cleanup
Section 06

The Five Parameters

utm_source and utm_medium are the two parameters GA4 uses to classify channels. Getting those wrong misfires your entire channel report. The other three are for campaign and creative reporting.

utm_source
Channel Critical Required
Identifies the referrer — the platform or origin sending traffic. GA4 uses this to determine which social or search platform a session came from.
Mixing google and Google creates two separate sources in reports
utm_medium
Channel Critical Required
Maps to GA4 channel groupings. This is the most consequential parameter — the wrong value sends traffic to Unassigned regardless of source.
Using paid or facebook instead of cpc or paid_social breaks channel classification
utm_campaign
Required
Campaign-level reporting identifier. Enables aggregation across channels within a campaign. Should follow a structured naming pattern.
Free-form names, spaces, and mixed case make campaign-level analysis impossible at scale
utm_content
Optional — Strongly Recommended
Ad creative or variant differentiation. Required for any A/B testing or creative performance analysis. Often skipped, which makes creative optimization invisible.
utm_term
Optional
Keyword (paid search) or audience segment (social/display). Auto-populated by Google Ads via the {keyword} ValueTrack parameter. Manually set for audience segment tracking in other channels.
Section 07

Channel Grouping Rules

GA4 maps source/medium combinations to channels using built-in logic. These are the exact values that trigger each channel classification. Any deviation pushes traffic to Unassigned or Direct.

Paid Search
medium = cpc, ppc, or paidsearch
source = google, bing, yahoo
Paid Social
medium = paid_social, paidsocial, or cpc
source = meta, linkedin, tiktok, etc.
Display
medium = display
Paid Video
medium = paid_video or video
Email
medium contains email
Affiliates
medium = affiliate
Referral
medium = referral
Organic Social
source = social platform
medium = organic_social, social
Organic Search
medium = organic
Direct (fallback)
No matching source/medium
Last non-direct click applied
Common Failure

A Facebook ad tagged with utm_medium=facebook will not match Paid Social. It falls to Unassigned. That is paid campaign spend becoming invisible in your channel report. The medium must be paid_social or cpc.

Section 08

Building a Naming Convention

A naming convention has three non-negotiable properties:

Lowercase only No spaces — use underscores Controlled vocabulary

Recommended Structure

Pattern
utm_source   = [platform]
               google | meta | linkedin | klaviyo | newsletter

utm_medium   = [channel type]
               cpc | display | paid_social | email | organic_social

utm_campaign = [objective]_[audience]_[date]
               awareness_cold-audience_2026q1
               retarget_cart-abandoners_2026q2
               nurture_trial-users_ongoing

utm_content  = [creative]_[variant]
               hero-v1 | carousel-blue | cta-learn-more

utm_term     = [keyword or segment]
               enterprise-analytics | dmo-retarget

Campaign Naming Pattern

The campaign name pattern is where teams diverge the most. A consistent structure of [objective]_[audience]_[date] lets you filter and aggregate in GA4 and BigQuery without regex gymnastics.

-- Good examples
awareness_cold-audience_2026q1
retarget_cart-abandoners_2026q1
nurture_trial-users_ongoing
brand_all_2026q2

-- Bad examples (do not use)
Q1 Brand Campaign       -- spaces, mixed case
Meta_Retargeting         -- no audience or date
AWARENESS-2026           -- uppercase
Section 09

Enforcement Strategies

The naming convention means nothing without enforcement. The convention and the tool are one artifact — not two separate things.

1
URL Builder with Locked Dropdowns
Do not allow freehand entry for utm_source and utm_medium. These must be dropdown-selected from an approved list. The URL is generated — not typed. Anyone who types a medium value manually will eventually introduce a bad one.
2
GTM Validation Layer
Fire a GA4 event or push a console warning when a page loads with a malformed or unapproved UTM. Catches errors in QA before they reach production data. This is your last line of defense before bad data enters GA4.
3
Governance Document with Ownership
Document every approved value, who owns the taxonomy, and the review process for adding new values. If a new paid channel launches, it does not get named by whoever is spinning up the campaign — it goes through the approval process.
Section 10

Auditing a Broken Setup

When inheriting a messy UTM setup, use this sequence to assess damage quickly before attempting any remediation.

1
Pull Source / Medium report, last 90 days
Sort by sessions descending. Any row with (not set), (direct)/(none), or obvious misspellings is a red flag.
2
Cross-reference against actual spend
If Meta spend is high but meta/paid_social traffic is low, something is mistagged. The delta between spend and attributed sessions is your damage estimate.
3
Query BigQuery for raw UTM distribution
The BigQuery events_* table gives you unsampled, raw UTM values. Use it to see the full picture including traffic that GA4 has already misclassified.
4
Calculate the clean / unclean ratio
The ratio of properly-tagged to improperly-tagged sessions tells you how much your attribution data can be trusted before you invest time tuning models.

BigQuery Diagnostic Query

SELECT
  (SELECT value.string_value
   FROM UNNEST(event_params)
   WHERE key = 'utm_source') AS utm_source,

  (SELECT value.string_value
   FROM UNNEST(event_params)
   WHERE key = 'utm_medium') AS utm_medium,

  COUNT(*) AS sessions

FROM `your_project.analytics_XXXXXXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260101' AND '20260131'
  AND event_name = 'session_start'
GROUP BY 1, 2
ORDER BY 3 DESC
LIMIT 100

Run this monthly. The source/medium distribution in raw events is your ground truth — it shows you what GA4 is actually receiving before any channel classification logic is applied.

Section 11

Approved Values

Mediums — GA4 Channel Mapped

ValueGA4 ChannelType
cpcPaid Search / Paid SocialPaid
displayDisplayPaid
paid_socialPaid SocialPaid
paid_videoPaid VideoPaid
paid_otherPaid OtherPaid
affiliateAffiliatesPaid
emailEmailOwned
pushPush NotificationsOwned
smsSMSOwned
organicOrganic SearchOrganic
organic_socialOrganic SocialOrganic
referralReferralReferral

Do NOT Use as utm_medium

These values break GA4 channel grouping. Traffic tagged with them will land in Unassigned.

facebook instagram twitter tiktok linkedin pinterest paid social banner ad sponsored

Approved Sources by Category

CategoryApproved Values
Paid Searchgoogle  bing  yahoo  baidu  yandex
Paid & Organic Socialmeta  linkedin  tiktok  pinterest  twitter  snapchat
Email / CRMnewsletter  klaviyo  hubspot  marketo  salesforce
Earned / Partneraffiliate  partner  podcast  referral  press
Events / Offlineevent  tradeshow  qr  direct_mail
Section 12

Do & Don't Rules

Always Do

Always lowercase. GA4 is case-sensitive. Google and google appear as two separate sources in every report.
Use underscores, not spaces. Spaces encode as %20 in URLs and break readability in every downstream report and export.
Match utm_medium exactly to GA4 channel definitions. Any deviation pushes traffic to Unassigned — see Section 07 for the exact values.
Tag utm_content on every creative variant. Required for A/B tests and any creative performance analysis. Skipping it makes optimization blind.
Test UTM passthrough before launch. Redirects silently strip query parameters. QA every tagged URL through your full redirect chain in staging.
Set lookback windows to match your sales cycle. GA4's defaults are too short for most B2B or high-consideration funnels.

Never Do

Never use platform names as utm_medium. facebook, instagram, twitter, tiktok — all break GA4 channel grouping. Use paid_social or cpc instead.
Never tag internal links with UTMs. UTMs on internal hrefs reset the session source mid-journey and corrupt attribution for that entire session.
Never add UTMs to organic Google links. Overrides GA4's organic detection and breaks SEO attribution in every report.
Never let teams freestyle parameter values. One unapproved value cascades into broken channel data. Enforce dropdowns for source and medium.
Never switch attribution models mid-measurement period. Creates data discontinuities that make trend analysis unreliable across the period boundary.
Never use Direct traffic % as a benchmark. High direct % is almost always a data quality signal, not a meaningful channel metric.