HomeBlog › GA4 traffic split across rows

Why is your GA4 traffic split across multiple rows — and how to merge it

Published July 4, 2026 · 6 min read
Short answer: GA4 stores UTM values exactly as they arrive and treats them as case- and character-sensitive strings. So Facebook, facebook, and FB — or paid-social vs Paid-Social vs paid social — become separate rows for what is really one channel. The fix is to standardize the values, ideally by forcing them clean at the moment links are built.

You open GA4's Traffic acquisition report, group by Session source / medium, and your biggest channel isn't at the top — because it's been shattered into four half-sized rows. This is the single most common reason a GA4 report "doesn't add up," and it's almost never a bug in GA4. Here's exactly why it happens and how to clean it up.

Why GA4 splits one channel into several rows

UTM parameters (utm_source, utm_medium, utm_campaign) are just text passed in the URL. GA4 records them verbatim and groups reports on the exact string. Four things quietly create duplicates:

One channel wearing four costumes means no single row tells you what it actually drove — and every chart that groups by source is quietly wrong by the size of the split.

How to find every split (in 60 seconds)

Export your GA4 Traffic acquisition → Session source / medium table, then look for rows that normalize to the same thing once you lowercase them and standardize separators. Doing that by eye across hundreds of rows is painful, so we built a free tool that does it for you:

Paste your GA4 source/medium report and instantly see which "channels" are really one — with a channel-integrity score and every fragmented group listed out.

Run the free GA4 channel audit →

How to merge the data you already have

1. Standardize going forward first

Fixing history is pointless if new splits keep arriving. Decide on one canonical form for every value — lowercase, hyphens not spaces, a fixed list of sources and mediums — and enforce it from now on (more on that below).

2. Clean the back-catalog

For historical data you can't rewrite in GA4 itself, options are: apply channel groups / custom channel definitions that map the variants to one channel; or export to BigQuery / a spreadsheet and normalize with a lowercase-and-map step before you report. Neither rewrites the raw rows, but both give you a correct rolled-up view.

3. Don't rely on GA4 "fixing" it

GA4's default channel grouping catches some obvious cases, but it won't merge your custom casing/spelling variants — those stay split until you standardize the inputs.

How to prevent it for good

The durable fix is upstream: make the clean value the only value that can be created. That means a shared naming convention (see our UTM naming convention guide) plus enforcement at the moment links are built — so a teammate literally cannot ship Facebook when the spec says facebook. A free builder assembles a string for one person; UTM governance keeps the whole team's data consistent. Casing specifically is the most common culprit — we cover it in depth in why "Facebook" and "facebook" are two rows in GA4.

Tagsmith enforces one UTM spec at the point links are made, so channels stop fragmenting and your GA4 reports finally add up — across your whole team.

Start free →
Keep reading Why "Facebook" and "facebook" are two rows in GA4 The UTM naming convention that keeps GA4 clean What is UTM governance? UTM glossary: every parameter, explained