AnalyticsJul 9, 20255 min readBy MLT Corp

Attribution Without the Mythology: A Pragmatic BigQuery Approach

No attribution model reveals the single true cause of a sale. A transparent BigQuery approach can still guide budget decisions, if you respect its limits.

Attribution Without the Mythology: A Pragmatic BigQuery Approach

Key takeaways

  • Attribution is an estimate, not a fact; treat it as one input to decisions.
  • Start with simple, explainable rules in BigQuery before any complex model.
  • Compare models side by side to see how sensitive your conclusions are.
  • Use experiments to test the channels that matter most.

Every channel report claims credit for the same sale. Paid search says it drove the order. So does email. So does the brand campaign that ran last month. Add the totals and you have sold more than you shipped. The problem is not bad math. It is the belief that a perfect answer exists.

What attribution can and cannot do

Attribution assigns credit for a conversion across the touchpoints that preceded it. It cannot prove a touchpoint caused the sale, because customers who were going to buy anyway also click ads. It also cannot see what is not tracked: offline conversations, privacy-limited sessions, or a friend's recommendation.

Used well, it is a consistent lens for comparing channels over time. Used poorly, it becomes a tool for arguing about budgets.

A practical BigQuery approach

If your web analytics events are exported to BigQuery, you can build attribution from raw event data and keep the logic in your own hands. The typical flow is straightforward.

  1. Build a clean session table: one row per session with source, medium, campaign and timestamp, using a consistent channel grouping.
  2. Stitch sessions to users with the identifiers you legitimately have, such as a login ID, and be honest about the share that stays anonymous.
  3. Create a conversions table with order ID, timestamp, value and user or session key.
  4. Define a lookback window, for example a few weeks, and join each conversion to the sessions inside it.
  5. Apply credit rules and store the results in a table that dashboards can read.

Start with simple rules

Begin with last non-direct click, first click and a position-based split that gives more credit to the first and last touches. Each is easy to explain and to verify with a sample of real customer journeys. Complex data-driven models can help at scale, but they are harder to audit and can hide weak data behind sophisticated output.

Run the simple models side by side. If a channel looks strong under all of them, the conclusion is robust. If it only looks good under one, treat that as a warning, not a finding.

Limits to state out loud

Publish these caveats alongside the numbers. Decision makers trust a model more when its limits are visible.

Use experiments to settle the big questions

When a budget decision is large, test it. Pause a channel in some regions, or hold out a share of an audience, and compare outcomes. Geographic or audience holdout tests are imperfect, but they measure incremental impact in a way no attribution model can. Keep the tests simple and long enough to reduce noise.

Present attribution as a range across two or three models, and only reallocate budget when the direction holds in all of them.

Make it useful

Agree on the definitions with finance and marketing before building anything: what counts as a conversion, which window applies, how returns are treated. Document them in the same repository as the queries. Review the output monthly, look at a handful of individual journeys, and adjust. The goal is a shared, explainable view, not a claim of truth.

If you would like help setting up the tables or reviewing your channel grouping, we can walk through your data with you.

← Back to all insights

Keep reading

Start here

Let's scope your pilot.

A 45-minute working session, no slides.

We reply within one business day.