Revenue attribution. On 100% of data.
Last-click revenue attribution applied to the full population of observed conversions — anonymously, at channel level. The architecture, the honest trade-offs, and why finance teams accept this number when they reject the GA4 one.
What revenue attribution actually answers
The question a CMO defending media spend needs to answer is simple: which channel produced the revenue this week, and by how much. That question splits into three concrete sub-questions, each of which last-click on 100% answers cleanly:
1. By channel — which source closed the sale
Every conversion is attributed to the channel observed on the page where it fired. Direct, organic, paid search, paid social, email, referral, display — the channel that closed the sale gets the credit. Aggregate weekly totals tell you which sources moved revenue this week and which did not.
2. By campaign — which paid campaign worked
The full UTM stack is captured per conversion. Revenue rolls up by campaign, ad set, creative — and joins against platform cost (Google Ads, Meta Ads) for accurate ROAS at the campaign level. The platform tells you what you spent; SealMetrics tells you what actually came back.
3. By landing page — which page converted
Conversions roll up by landing page and entry path, so the CRO conversation is grounded in revenue, not bounce rate. A landing-page test that lifts session count but loses revenue tells you something different than a test that does both — and both are visible.
Why last-click — and not multi-touch
The most common objection to last-click is “but multi-touch is more accurate.” The honest answer is that multi-touch requires architecture SealMetrics does not have — and the architecture has a cost most teams should not pay.
Multi-touch requires per-user tracking
To distribute credit across the chain of touchpoints, multi-touch models need to know which touchpoints involved the same person. That requires an identifier — a cookie, a fingerprint, a stitched ID — and the identifier triggers ePrivacy consent and the 40–60% rejection loss. The math you save with multi-touch is eaten by the data you lose to the cookie banner. Definition on the multi-touch attribution glossary page.
Last-click does not need the identifier
Last-click attributes the conversion to the channel observed on the page where it fired. No earlier touchpoints need to be remembered. No identifier needs to persist. The model is applied to every observed conversion — full population — because every conversion is observed (no cookie to expire, no consent to reject). Definition on the last-click attribution glossary page.
Where multi-touch belongs instead
The right home for multi-touch reasoning is a marketing-mix model (MMM) built on aggregate spend and aggregate revenue — no per-individual stitching required. The SealMetrics aggregate revenue dataset is exactly what an MMM needs as the revenue side of the equation. Many customers run the two together: MMM in the warehouse for cross-channel influence, SealMetrics last-click as the measurement layer underneath.
The reconciliation a CFO accepts
A CFO will not accept a marketing number that does not reconcile to the order ledger. Two reconciliation levels that finance teams sign against:
Aggregate weekly / monthly
Total SealMetrics-attributed revenue lands within 15–20% of the eCommerce backend (Shopify, WooCommerce, Magento). The residual gap is shipping discounts, taxes and refunds handled differently — not measurement error.
Per-order in the warehouse
Every order in the eCommerce backend appears in SealMetrics with the same order_id. Finance joins both datasets in BigQuery on a single key — no fuzzy matching, no probability scoring.
“The value is in optimising the budget and the investment. It’s not just what extra you generate: it’s that you’re investing better, because you’re shifting toward a channel or strategy you weren’t seeing before.”
Eduardo Martin · Analytics & Campaigns · Dreamplace Hotels
Related reading
Complete data
The wider argument: incomplete data produces wrong decisions; what 100% changes.
PillarCookieless analytics
Why the architecture is possible — first-party server-side without identifiers.
GlossaryLast-click attribution
Definition, what it credits, where it differs from multi-touch.
Use caseGA4 migration plan
30-day parallel-run to move revenue decisions off GA4 without breaking Google Ads.
Common questions
- Why last-click and not multi-touch?
- Multi-touch attribution requires linking pageview A and pageview B to the same individual across sessions. That linkage requires a per-user identifier — a cookie, a fingerprint, a stitched ID. The same identifier triggers ePrivacy Art. 5(3), GDPR consent and the 40–60% banner-rejection loss. Last-click on observed events does not need the identifier: each conversion is attributed to the channel observed on the page where it fired. The trade-off is honest — last-click does not measure earlier influence — and for media-mix decisions on a single channel at a time, last-click is usually the correct question anyway.
- What about view-through attribution?
- SealMetrics does not measure view-through (impressions that did not produce a click). View-through requires linking ad-server impression logs to subsequent visits per user — which is the same identifier dependency as multi-touch. View-through measurement belongs in the ad platform (Meta, Google) or in a marketing-mix model (MMM) built on aggregate spend and revenue. SealMetrics provides the aggregate revenue side; MMM tools provide the modelling.
- How does last-click on 100% data differ from GA4's last-click?
- GA4 applies last-click within its attribution windows on the data it actually captured — typically 13–40% of EU traffic after consent rejection, ad blockers and ITP. The credit GA4 assigns to channels is correct for that subset but biased toward channels that consent more. SealMetrics applies last-click on 100% of observed conversions on the full population — same model, complete data underneath.
- Can I get the attribution by campaign and creative, not just channel?
- Yes. The full UTM stack is captured: source, medium, campaign, content, term. Aggregate revenue rolls up at any combination of those dimensions. The campaign-level totals reconcile with the platform-side spend exactly (within rounding) when you join the SealMetrics dataset against Google Ads / Meta Ads cost data in BigQuery.
- What if my conversion happens after multiple sessions?
- The conversion is attributed to the channel observed on the page load where it fires. If the customer returned via direct after first arriving from Google CPC, the credit goes to direct — not to the original Google CPC visit. This is the explicit cost of not tracking individuals across sessions. It is also, for most channel-mix decisions, the more honest answer: the channel that closed the sale gets the credit. Earlier touchpoints belong in a marketing-mix model, not in last-click attribution.
- How does this reconcile with CRM revenue?
- Aggregate revenue reconciles within 15–20% of the CRM/backend totals once shipping, taxes, gift cards and refunds are normalised. Per-order reconciliation uses the same order_id from your eCommerce platform (Shopify, WooCommerce, Magento, PrestaShop). Finance can join the SealMetrics dataset and the order-ledger dataset in BigQuery on order_id with no fuzzy matching.
See your attribution on 100% of data.
Book 30 minutes with the founder. We run last-click on your traffic and reconcile against your CRM live — you see the channels that actually closed.
Built by a founder · supported by a founder · EU-hosted by design
