Many BigQuery setups report marketing performance using the channel definitions analysts know from the GA4 interface, such as session default channel group and first user default channel group. These are useful for high-level dashboards. Reused as the basis for attribution in the warehouse, they confine the analysis to logic Google has already applied.
The export contains three traffic-source structures, and they mean different things. traffic_source holds the source, medium and campaign that first acquired the user, and does not change for that user_pseudo_id. session_traffic_source_last_click holds the session's campaign after Google's own last-click attribution, including cross_channel_campaign.default_channel_group. collected_traffic_source holds the raw values collected on an event, such as manual_source, manual_medium, manual_campaign_name and click IDs like gclid, before any attribution is applied. Conversion credit from data-driven attribution is not exported at all.
Building on the first two structures means consuming Google's attribution rather than doing it. Each already resolves a journey to a single source per user or per session, so the multi-touch information is gone before the analysis starts. Custom models, whether linear, time-decay, position-based or Markov chain, should start from collected_traffic_source (or UTM parameters parsed from page_location in older data), grouped into sessions with user_pseudo_id and the ga_session_id event parameter from event_params.
A touchpoint is an event that carries campaign information, typically the first event of a session with a source, medium or click ID. It is not any interaction. A naive 'last event before purchase' rule credits micro-events such as product_image_clicked that fire milliseconds before purchase, which says nothing about marketing. In dbt, one model can extract touchpoints and another can apply the lookback window and credit rule, so each decision is visible and testable.
Custom models built this way often change how channels look. Channels that rarely win the last click, such as display or paid social, frequently show value as first or middle touches. Event-level touchpoints also support cohort questions the default fields cannot answer, such as acquisition cost and lifetime value for users first reached through display who later converted through organic search.
Event streams from a server-side, first-party collection layer such as Robin Signals can feed the same dbt pipeline, so the touchpoint model is not limited to what client-side GA4 tags record.
Viktor Kvant
Senior Web Analyst specialising in data ownership, advanced tracking implementations, and translating data into strategic business value.
Connect on LinkedIn