Where do traffic sources actually live?
Every analysis starts with traffic sources: where users came from and how they found you. In GA4’s BigQuery export, this information lives in several different fields. At first glance, they all look similar - but in practice, they serve very different purposes.
Why is it confusing?
GA4 creates overlapping parameters:
• traffic_source.* shows the first touch a user ever had
• session_* describes the most recent session attribution
• and don't forget event-level details
Without knowing the difference, you risk mixing signals and drawing the wrong conclusions.
How do I untangle it?
Think of each parameter as telling a part of the story:
• First touch answers “How did they first discover us?”
• Session shows “What brought them back this time?”
• The source explains “Which campaign carried them here?”
Once you separate them, attribution stops feeling random.
What’s the practical next step?
• Map out each field and its meaning
• Choose the right level of attribution for each question
• Document and reuse this logic in every analysis
Want all my best GA4-BQ queries in one place? I turned them into a Chrome extension — top SQL queries you can search and copy in seconds.
Go here to install it for FREE.
Prefer the web version? It's here.


