Key Takeaways
- Enable the BigQuery export early (it's free for standard GA4 properties and not retroactive, so it only captures data from when you enable it).
- Understand GA4's exported event data structure — a nested, event-level format queried with SQL — before building attribution on it.
- Reconstruct customer journeys by querying the event data to assemble, for each conversion, the ordered sequence of touchpoints that led to it.
- Join your business data (CRM, orders, costs) to attribute real revenue and profit, not just on-site conversions — the most valuable step.
- Build the attribution logic in SQL, applying your chosen model to distribute credit across the touchpoints in each journey.
- The result is far more powerful than the GA4 interface, but it's still correlational — complement it with incrementality experiments for causal questions.
Step One: Enable the BigQuery Export (Early)
The first practical step in building attribution from GA4's BigQuery export is enabling the export itself, which is a native GA4 feature configured in your property settings, and the most important practical advice is to enable it early — because the export is not retroactive, so it only captures data from the point you turn it on, meaning the sooner you enable it, the sooner you begin accumulating the raw event history that attribution needs. Enabling the export involves linking your GA4 property to a BigQuery project and configuring the export in the GA4 property settings, after which GA4 begins sending its raw event data to BigQuery on an ongoing basis. For standard GA4 properties this export is free to enable, so there is little reason not to enable it early, even before you are ready to build the attribution.
The reason to enable it early cannot be overstated: because the export only captures data from when it is enabled, any delay in enabling it is a permanent loss of the raw event history you could have accumulated, which is the data your attribution will be built on. Attribution benefits from history (more data to analyze, longer journeys to reconstruct), so the raw event history is valuable, and it only starts accumulating when you enable the export — so enabling it early, even as a preparatory step before building the attribution, starts building the valuable data asset immediately. A team that enables the export early has the accumulating history ready when they build the attribution; a team that waits starts the history only when they get around to it, permanently forgoing the earlier data. So enable the export early as a low-cost, high-value preparatory step.
Beyond enabling it, you should understand the practical aspects of the export configuration — the export options (daily export, and streaming for more frequent data), the BigQuery project and dataset the data goes to, and the costs (the export is free for standard properties, but BigQuery itself has usage-based pricing beyond its free tier, which for attribution querying is usually modest but worth understanding). Configuring the export appropriately (the right options for your needs, the right BigQuery setup) and understanding the cost model sets up the data foundation correctly. The key practical points at this step are: enable the export early (because it is not retroactive), configure it appropriately, and understand the (usually modest) cost — which together establish the raw event data foundation in BigQuery that the rest of the attribution build depends on. With the export enabled and accumulating data, you can proceed to understanding and working with the event data, which is the next step.
Step Two: Understand the Event Data Structure
Before you can build attribution on the GA4 BigQuery data, you have to understand how that data is structured, because GA4 exports its events in a specific nested, event-level format that you query with SQL, and working with it effectively requires understanding its organization. The GA4 export contains events — every event GA4 recorded — with each event carrying its parameters (the details of the event), along with user and session identifiers, device and source information, and the other data GA4 captures. The structure is nested (events contain nested parameter data), which is a particular characteristic of the GA4 export that affects how you query it, so understanding this nested, event-level structure is the foundation of working with the data.
The specific things to understand for attribution are how the data represents the elements attribution needs: the events (including the touchpoints and conversions), the identifiers that let you connect events into journeys (user and session identifiers), and the source and campaign information (which channels and campaigns the touchpoints represent). Attribution requires reconstructing journeys (sequences of touchpoints leading to conversions), so you need to understand how the event data represents touchpoints (the events that are touchpoints, with their source/campaign information), how it represents conversions (the conversion events), and how it lets you connect them into journeys (the identifiers that link a user's or session's events). Understanding how these attribution-relevant elements are represented in the GA4 export structure is what lets you write the SQL to reconstruct journeys and build attribution.
Working with the GA4 export structure requires SQL skill and familiarity with the specific format, which is the genuine technical barrier of building attribution this way, so learning the structure (from GA4's documentation on the export schema and from working with the data) is a necessary investment. The nested, event-level structure is different from a simple flat table, so querying it (especially for the journey reconstruction attribution needs) requires understanding how to work with the nested data and how the elements you need are organized. This is the technical foundation that everything else builds on — you cannot reconstruct journeys or build attribution without understanding the event data structure you are querying — so investing in understanding the GA4 BigQuery export schema and how to query it is essential preparation for the attribution build. Once you understand the structure (how events, parameters, identifiers, and source information are organized), you can proceed to reconstructing the journeys, which is the first real attribution step.
Step Three: Reconstruct Customer Journeys
The first substantive attribution step is reconstructing customer journeys from the event data — querying the events to assemble, for each conversion, the ordered sequence of touchpoints that led to it — because attribution distributes credit across the touchpoints in a journey, so you need the journeys (the touchpoint sequences) before you can apply attribution. Reconstructing a journey means, for each conversion, identifying the sequence of touchpoints (the channels and campaigns the user interacted with, in order) that preceded and led to that conversion, assembled from the event data using the identifiers that connect a user's or session's events. This produces, for each conversion, its journey — the ordered list of touchpoints — which is the input to attribution.
The technical work of journey reconstruction involves writing SQL that queries the GA4 event data to identify conversions and, for each, assemble the preceding touchpoints in order, using the user/session identifiers to connect the events into journeys and the source/campaign information to identify what each touchpoint was. This is a genuine data-engineering task that requires understanding the event data structure (from the previous step) and writing SQL to reconstruct the journeys correctly — handling the identification of touchpoints and conversions, the ordering of touchpoints within a journey, the connection of events into journeys via identifiers, and the practical complexities (like how to define the journey window, how to handle cross-session journeys, how to attribute the source of each touchpoint). Getting the journey reconstruction right is important because the attribution built on it is only as good as the journeys, so the journeys must accurately represent the touchpoint sequences that led to conversions.
There are practical decisions in journey reconstruction that shape the attribution, so making them thoughtfully matters. How you define the journey (how far back to look, how to handle long or cross-session journeys, what counts as a touchpoint) affects the journeys you reconstruct and therefore the attribution, so these are real decisions to make based on your business and how your customers convert. How you identify and attribute the source of each touchpoint (using the source/campaign information in the event data) affects how the touchpoints are labeled and therefore how attribution distributes credit across channels. Making these journey-reconstruction decisions thoughtfully, grounded in how your customers actually convert, produces journeys that accurately represent your customers' paths, which is the foundation for meaningful attribution. Reconstructing the journeys well — accurate touchpoint sequences, thoughtful journey definitions, correct source attribution — is the essential first attribution step, producing the journey data that the attribution logic is then applied to, and it is where much of the technical work of building attribution lives.
Step Four: Join Business Data for Real-Outcome Attribution
The most valuable step in the attribution build is joining your business data (CRM, orders, costs) to the journeys, so that you attribute real revenue and profit rather than just on-site conversions — because this is what turns the attribution from a web-analytics exercise into genuine business intelligence, telling you which channels drive valuable, profitable customers. The GA4 journeys tell you the touchpoint sequences leading to on-site conversions, but the on-site conversion is not the business outcome — what you care about is which channels drove valuable customers, which requires knowing what each customer was actually worth (real revenue, margin, lifetime value), and that lives in your business data. Joining your business data to the journeys in BigQuery connects the touchpoints to the real business outcomes, so your attribution can tell you which channels drive real value.
The technical work involves bringing your business data (from your CRM, order system, cost data, customer records) into BigQuery and joining it to the reconstructed journeys, connecting each journey (and its conversion) to the real business outcome (the revenue, profit, and customer value associated with it). This requires getting your business data into BigQuery (through imports or connections) and writing the SQL to join it to the journeys correctly (matching the journeys' conversions to the corresponding business outcomes), so that each journey is connected to what its conversion was actually worth. This join is genuine data-engineering work (getting the business data in, matching it to the journeys), but it is where most of the attribution value comes from, because it enables attribution of real business outcomes.
The payoff of the business-data join is attribution that answers the questions that actually drive decisions: which channels bring in the customers with the highest lifetime value, which channels drive profitable customers after their costs and margins, which channels merely touch cheap conversions versus which drive real value. When you attribute real revenue and profit (from the joined business data) across the journeys, rather than on-site conversions, your attribution tells you where your valuable customers come from — which is the attribution that informs budget decisions. So the business-data join is the step that delivers most of the value, elevating the attribution from on-site-conversion attribution (an improvement over the interface) to real-business-outcome attribution (a genuinely powerful decision tool). Prioritizing this step — getting the business data joined so you attribute real outcomes — is what makes the whole attribution build worthwhile, because attribution that stops at on-site conversions leaves most of the value unrealized, while attribution connected to real business outcomes delivers the business intelligence that justifies the effort. This is the heart of genuine revenue operations attribution.
Step Five: Build the Attribution Logic
With the journeys reconstructed and joined to business outcomes, the final step is building the attribution logic itself — applying your chosen model to distribute credit across the touchpoints in each journey — which is where you implement the actual attribution that assigns credit to channels. The attribution logic takes each journey (its touchpoints) and distributes the credit for the conversion (and its business outcome) across those touchpoints according to your chosen model, producing attributed credit (and attributed revenue/profit) by channel. This is implemented in SQL that applies your attribution rules to the journeys, and it is the step that produces the attribution results — the credit each channel gets for the conversions and business outcomes.
The key decision at this step is which attribution model to apply, and the advantage of building your own is that you can choose or design a model that fits how your customers actually convert. You can implement standard models (first-touch, last-touch, linear, time-decay, position-based) if they suit you, or build custom models tailored to your understanding of your funnel (weighting touchpoints according to their real role), or implement data-driven approaches (distributing credit based on patterns in your data). Whatever model you choose, you implement it as SQL that distributes credit across the journey touchpoints accordingly, producing the attributed results. The flexibility to choose the model that fits your reality is the whole point of building custom attribution, so make this decision thoughtfully, grounded in how your customers actually convert, to build a model that meaningfully reflects your conversion dynamics rather than a generic default.
The output of this step — attributed credit and business outcomes by channel, based on your journeys, joined to real outcomes, and your chosen model — is the custom, business-connected multi-touch attribution you set out to build, which is far more powerful than the GA4 interface's confined, isolated attribution. But it is essential to remember the fundamental limit: this attribution, however sophisticated, is still built from observational data, so it assigns credit based on correlation (the touchpoints that appear in converting journeys), not causation (what each channel actually caused), so it cannot tell you what a channel truly caused. This means the custom attribution you have built is a valuable, business-connected lens for understanding your journeys and outcomes, but it must be complemented by incrementality experiments (holdouts, geo tests) for the causal questions (what a channel actually causes) that attribution cannot answer. So the completed attribution build gives you a powerful custom, business-connected attribution lens — a major upgrade over the interface — which you use directionally and complement with incrementality experiments for causal measurement. Building the attribution logic completes the setup, producing the custom attribution, with the honest understanding that it is a correlational lens to be complemented by causal experiments, which is how this genuinely valuable but genuinely limited tool should be built and used.
Methodology & Fairness
A note on how to read this. This is an educational guide published by Fluxsy, a performance marketing partner, so weigh our perspective accordingly. Platform mechanics and privacy rules change frequently; verify the specifics described here against the current official documentation before you implement. Where we name tools, platforms or companies we describe them by their genuine public positioning, not as endorsements. We have avoided inventing statistics, benchmarks or results — the durable value here is the framework and the reasoning, which hold even as the specific implementation details move. Measure against your own data before concluding, because your results depend on your stack, your market and your configuration.
Frequently Asked Questions
- How do I enable the GA4 BigQuery export for attribution?
- Enable it in your GA4 property settings by linking your property to a BigQuery project and configuring the export — a native GA4 feature, free for standard properties. The most important practical advice is to enable it early, because the export is not retroactive: it only captures data from the point you turn it on, so any delay is a permanent loss of the raw event history you could have accumulated, which is the data your attribution will be built on. Attribution benefits from history (more data, longer journeys), so enable the export early even as a preparatory step before you're ready to build the attribution — it starts building the valuable data asset immediately at little cost. Configure the export options appropriately (daily export, and streaming for more frequent data) and understand the cost model: the export is free for standard properties, but BigQuery itself has usage-based pricing beyond its free tier, which for attribution querying is usually modest. This establishes the raw event data foundation the rest of the build depends on.
- What do I need to understand about GA4's exported event data?
- GA4 exports its events in a specific nested, event-level format that you query with SQL, so you need to understand its organization before building attribution. The export contains every event GA4 recorded, with each event carrying its parameters (nested), along with user and session identifiers, device and source information, and other captured data. For attribution specifically, understand how the data represents the elements attribution needs: the events (including touchpoints and conversions), the identifiers that let you connect events into journeys (user and session identifiers), and the source and campaign information (which channels and campaigns the touchpoints represent). Because attribution requires reconstructing journeys (touchpoint sequences leading to conversions), you need to know how the data represents touchpoints, conversions, and the links between them. Working with this nested, event-level structure requires SQL skill and familiarity with the specific format — the genuine technical barrier of building attribution this way — so learning the export schema (from GA4's documentation and working with the data) is necessary preparation.
- How do I reconstruct customer journeys from GA4 BigQuery data?
- Write SQL that queries the GA4 event data to identify conversions and, for each, assemble the preceding touchpoints in order — using the user/session identifiers to connect events into journeys and the source/campaign information to identify what each touchpoint was. This produces, for each conversion, its journey: the ordered list of touchpoints (channels and campaigns) that led to it, which is the input to attribution. It's a genuine data-engineering task requiring understanding of the event data structure and careful SQL. There are practical decisions that shape the attribution: how you define the journey (how far back to look, how to handle long or cross-session journeys, what counts as a touchpoint), and how you identify and attribute the source of each touchpoint (using the source/campaign information). Make these thoughtfully, grounded in how your customers actually convert, because the attribution built on the journeys is only as good as the journeys — so they must accurately represent the touchpoint sequences that led to conversions. Getting journey reconstruction right is where much of the technical work of building attribution lives.
- Why should I join business data to my GA4 attribution?
- Because it's the most valuable step — it turns the attribution from a web-analytics exercise into genuine business intelligence, telling you which channels drive valuable, profitable customers rather than just on-site conversions. The GA4 journeys tell you the touchpoint sequences leading to on-site conversions, but the on-site conversion isn't the business outcome — what you care about is which channels drove valuable customers, which requires knowing what each was actually worth (real revenue, margin, lifetime value), and that lives in your business data. Joining your CRM, order, and cost data to the journeys in BigQuery connects the touchpoints to the real business outcomes, so your attribution can answer the questions that drive decisions: which channels bring the highest-lifetime-value customers, which drive profitable customers after costs and margins, which merely touch cheap conversions versus drive real value. The technical work (getting business data into BigQuery and joining it to the journeys) is genuine, but it's where most of the attribution value comes from — attribution that stops at on-site conversions leaves most of the value unrealized.
- How do I build the attribution logic, and what are its limits?
- Build it in SQL that applies your chosen model to distribute credit across the touchpoints in each journey, producing attributed credit (and attributed revenue/profit) by channel. The key decision is which model to apply, and the advantage of building your own is choosing one that fits how your customers actually convert: standard models (first-touch, last-touch, linear, time-decay, position-based) if they suit you, custom models tailored to your funnel (weighting touchpoints by their real role), or data-driven approaches (credit distributed by patterns in your data). Make this decision thoughtfully, grounded in your actual conversion dynamics. The output is custom, business-connected multi-touch attribution far more powerful than the GA4 interface. But remember the fundamental limit: this attribution, however sophisticated, is built from observational data, so it assigns credit by correlation (the touchpoints that appear in converting journeys), not causation (what each channel actually caused) — so it can't tell you what a channel truly caused. Use it as a valuable directional lens, and complement it with incrementality experiments (holdouts, geo tests) for causal questions.