A client sent me three GA4 screenshots:

• One said the source was Google
• Another said Facebook
• The third showed (not set)

All referred to the same user.

How is this possible? Where’s the consistency?

Well, it wasn’t a bug. It’s just how GA4 stores and displays traffic sources.

GA4 doesn’t use a single “source of truth.” Instead, there are multiple layers:

• First User Source — the first source ever recorded
• Session Source — the source for that session
• Source (literally) — tied to specific event context

GA4 won’t flag when the source changes — so the same user can show up under different sources across reports.

Because of this:

• The client misjudged performance.
• Meta campaigns looked “ineffective” — barely visible in summaries.
• Budgets were cut on high-performing ads.

GA4 didn’t lie — but the team didn’t know what level they were looking at.

Now, I always start by asking: “Which source are we talking about?”

Then I follow these rules:

• Use Session Source to measure last click ad campaigns
• Use First User Uource for LTV and cohort analysis
• Validate in BigQuery — only there can you fully compare users, sessions, and events

If you don’t understand the structure, it’s easy to credit the wrong winner.

Want all my posts in one place? I put 350+ articles on GA4, BigQuery, attribution, and metrics into one searchable library.

Go here to explore it for FREE.