GA4 took away linear, position-based, and time-decay attribution, but it left you the raw export, which means you can rebuild any model you want in SQL. A multi-touch model in BigQuery gives you the credit distribution the interface no longer will. Here is how to build one.
Why build it yourself
Multi-touch attribution spreads credit for a conversion across all the touchpoints that led to it, rather than handing it all to the last click. Since GA4 removed the rule-based models, BigQuery is now the place to reconstruct them, with full control over the rules and full transparency into the math. You are not limited to Google's three surviving models; you define the credit logic yourself.
Step 1: assemble each converter's path
The foundation is the ordered sequence of channels a converting user touched. From the export, pull each user's sessions with their source and medium in time order, up to the conversion:
WITH touches AS (
SELECT
user_pseudo_id,
event_timestamp,
collected_traffic_source.manual_source AS source,
collected_traffic_source.manual_medium AS medium,
event_name
FROM `project.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260101' AND '20260131'
AND event_name IN ('session_start','purchase')
)
SELECT * FROM touches
ORDER BY user_pseudo_id, event_timestamp
Step 2: keep only paths that converted
Attribution only distributes credit for conversions, so restrict to users who purchased and gather the channels that preceded each purchase. Grouping the ordered touches per converting user gives you the path array that every model operates on, which is the real unit of multi-touch attribution.
Step 3: apply a credit rule
With the path in hand, a model is just how you split one conversion across its touches. Linear is the simplest and clearest to implement:
-- Linear attribution: split one conversion equally across its touches
SELECT
source, medium,
SUM(credit) AS attributed_conversions
FROM (
SELECT
source, medium,
1 / COUNT(*) OVER (PARTITION BY user_pseudo_id) AS credit
FROM converting_touches
)
GROUP BY source, medium
ORDER BY attributed_conversions DESC
Swap the credit expression to change the model: weight the first and last touch more heavily for position-based, or decay credit by recency for time-decay. The path structure stays the same; only the fraction changes.
Mind the hard parts
A homemade model is honest only if you respect its limits:
- Choose and apply a lookback window, so touches from months earlier do not get spurious credit.
- Decide how to treat direct and none sessions, which otherwise absorb credit they did not earn.
- Remember user_pseudo_id is device-level, so cross-device paths are incomplete without a user_id.
Validate against something real
Because you wrote the rules, you can also fool yourself with them, so sanity-check the output. Compare your model's channel totals against GA4's data-driven view and against your own intuition, and reconcile total attributed conversions against actual conversions. A model that credits a channel far beyond what any experiment supports is a prompt to inspect your path logic, not to trust the flattering number.
Make it reproducible, not a one-off
A multi-touch model is only trustworthy if it runs the same way every time, so build it as a scheduled model in dbt or Dataform rather than a query someone reruns by hand. Document the credit rule, the lookback window, and how direct and none are handled, right next to the SQL, because a model whose assumptions live only in the author's head stops being auditable the moment they leave. A versioned, documented, scheduled model is the difference between a defensible attribution view and a clever query nobody else can trust.
GA4 deleted the rule-based models, but the export hands you everything needed to rebuild them, so a multi-touch model in BigQuery is yours to define. Assemble each converter's ordered path, keep only paths that converted, apply whatever credit rule fits, and respect windows and cross-device limits. Do that and you get the multi-touch view the interface no longer offers, built on math you can see and defend.
Want a stronger data analyst role or a raise? Grab the FREE Product Analyst Playbook and get the exact roadmap to your next offer.

