In short. Use collected_traffic_source for values present in an event and session_traffic_source_last_click for the session's last-click source.
Definition: In the GA4 BigQuery export,
collected_traffic_sourcerecords traffic source values that were present in a collected event.session_traffic_source_last_clickrecords the last-click traffic source attributed to the session and is available on every event.
Key facts
- Google's BigQuery Export schema defines
collected_traffic_sourceas the traffic source data present within collected events. - Its
manual_sourcefield contains collectedutm_sourcevalues and parsed referral parameters, whilemanual_mediumcontains collectedutm_mediumvalues and parsed referral parameters. - The same schema defines
session_traffic_source_last_clickas last-click attributed session source data across Google Ads and manual contexts, where available. - Google's traffic attribution documentation says session-scoped attribution describes the source of each individual session and that the session record reflects session-scoped last-click data.
- The session record includes manual campaign, Google Ads campaign, and cross-channel campaign fields.
What does each record represent?
Google's BigQuery Export schema uses the word “collected” for values present in the event. The record can contain a manual campaign ID, campaign name, source, medium, term, content, source platform, creative format, and marketing tactic. It can also contain gclid, dclid, and srsltid, each described as an identifier collected with the event.
session_traffic_source_last_click answers a different question: which source was assigned to the session under last-click attribution? Its description covers Google Ads and manual contexts where data is available. The manual subrecord includes the last clicked campaign's ID, name, medium, term, content, source platform, source, creative format, and marketing tactic.
Which fields appear in each record?
The schema paths make the scope visible:
collected_traffic_source.manual_source
collected_traffic_source.manual_medium
session_traffic_source_last_click.manual_campaign.source
session_traffic_source_last_click.manual_campaign.medium
For event collection checks, inspect the first pair. manual_source maps to collected utm_source and also includes parsed referral parameters. manual_medium maps to collected utm_medium and also includes parsed referral parameters. For a session acquisition report, inspect the second pair and the related campaign subrecords. The session schema also defines cross_channel_campaign.source as the specific source within the platform of the last clicked cross-channel campaign and cross_channel_campaign.medium as its medium.
How does the attribution scope affect a BigQuery query?
Google's traffic attribution data guide separates BigQuery attribution into user, session, and event levels. User-scoped attribution describes a user's first arrival and uses traffic_source fields associated with the first_visit event. Session-scoped attribution uses session_traffic_source_last_click, which Google documents as available for every event. Event-scoped attribution covers conversion events and uses the cross-channel last-click model through traffic_source fields.
This means a query about what arrived with one event and a query about the source assigned to a session can read different records from the same exported event row. The field names show the intended unit: collected event data sits under collected_traffic_source, while session attribution sits under session_traffic_source_last_click.
Related terms
- How do I query AI referral sessions in the GA4 BigQuery export?
- Where is the page referrer stored in a GA4 BigQuery export?
- Should an AI acquisition report use session source or first user source?
- GA4 traffic acquisition
FAQ
Is collected_traffic_source a session attribution record?
It describes traffic source data present in a collected event. For session-scoped attribution, Google directs you to session_traffic_source_last_click.
Why does the session record appear on every event?
Google says the record is available for every event and reflects the session-scoped last-click attribution data. You can therefore read the session source alongside an event row in the export.
Which field contains the collected UTM source?
Use collected_traffic_source.manual_source for the manual source collected with the event. The session record uses session_traffic_source_last_click.manual_campaign.source for the specific source of the last clicked manual campaign.
Sources
- Google Analytics Help, "BigQuery Export schema", undated
- Google for Developers, "Traffic attribution data", 14 April 2026
Check how a page reads to answer engines. Open the GEO score analyzer