Attribution
Your ROAS is a lie. Every platform is claiming the same sale.
When a customer clicks a Facebook ad, then a Google ad, then buys — both platforms claim 100% of the revenue. Your dashboards show double the conversions that actually happened. Your budget decisions are based on fiction.
The double-counting problem is costing you money
Every ad platform runs its own attribution model in isolation. None of them know about the others. The result: wildly inflated conversion counts and ROAS figures that make every channel look like a winner.
30–60%
Duplicate conversions
Industry estimates for cross-platform overlap in multi-channel campaigns
2–3x
Inflated total
Sum of platform-reported conversions vs actual orders in your backend
$1,000s
Misallocated spend
Budget flowing to channels that look efficient but are taking credit for others' work
A typical customer journey
Result without Signal: Google claims the full sale. Meta claims the full sale. TikTok claims the full sale. Your reports show 3 conversions for 1 actual order.
Signal sits between the conversion and every vendor API
Because Signal delivers conversions server-side, it controls exactly which platforms receive the event and what value they see. Attribution is not a report you read after the fact — it is a decision made in real-time before data leaves your infrastructure.
Track
Click IDs from every ad platform are automatically captured and stored as first-party cookies. gclid, fbclid, ttclid, msclkid, and more — all with full timestamp data.
Attribute
When a conversion fires, Signal evaluates the full touchpoint history and applies your chosen attribution model. Credit is calculated for each platform before any data is sent anywhere.
Deliver
Only credited platforms receive the conversion event. Each gets the correct attributed value — not the full order total. Platforms with zero credit receive nothing. No more phantom conversions.
Four delivery modes. Start safe, evolve toward truth.
Switching attribution off in your existing pixels is risky. Signal lets you start non-destructively, prove the gap, then move toward deduplicated reporting at your own pace. Each mode is configurable per pipeline.
Phase 1
Additive
Default. Zero risk.
Send the conversion to every integrated vendor at full value. Existing pixels keep firing; vendors dedup natively via shared event_id. Match rates unchanged.
Phase 2
Volume Preserved
Stop revenue inflation.
Every vendor still receives the event so audiences and frequency caps stay intact, but only the attributed vendor gets the original value. Others get $0.
Phase 2
Differentiated Events
Audience signals without double credit.
Attributed vendor gets the original event ("purchase"). Others get a renamed event ("purchase_signal_observed") — useful as a retargeting signal but not counted as a paid conversion in their reports.
Phase 3
Deduplicated
One sale, one credit.
Only the attributed vendor receives the event. Most accurate revenue reporting; lowest match rate. Use when Signal's attribution model is your source of truth.
The dual-tagging pilot: most customers start in Additive while keeping their existing pixels in place. Signal's parallel-attribution dashboard shows what vendors would have reported vs what Signal actually attributed. Once the gap is proven, customers move to Volume Preserved or Deduplicated with full visibility into the trade-off.
The Safari Problem
Vendors aren't just over-counting. They're also missing conversions.
Apple's Intelligent Tracking Prevention truncates every JavaScript-set vendor cookie to 7 days. A Safari user who clicks an ad, comes back two weeks later, and converts is invisible to that vendor's pixel — their _fbp / _gcl_aw / _ttp cookie was wiped at day 7.
7 days
ITP cap on JS-set vendor cookies
Regardless of the vendor's stated 90-day window. Applies to all Safari and every iOS browser.
400 days
Signal's server-set first-party window
HttpOnly cookie set by your own domain — outside Safari's ITP truncation rules.
~20%
of UK e-commerce traffic is Safari/iOS
Long click-to-conversion windows on this share are silently lost by every client-side pixel today.
The dashboard makes the recovery visible, by reason
Signal's parallel-attribution view breaks each lost vendor decision into a Reason bucket: cookie_expired (ITP wiped the identifier — Signal recovers these), consent_denied (user revoked marketing consent — Signal correctly suppresses too), no_touchpoint (truly organic). The cookie_expired share is your defensible recovery number; consent_denied is honest accounting that doesn't inflate the claim.
See the difference attribution enforcement makes
Real numbers from a multi-channel campaign. Same conversions, same revenue — but with Signal, each platform only receives the credit it deserves.
Without Signal
Every platform claims 100% of every shared conversion
With Signal (Time Decay)
Credit distributed by recency-weighted time decay model
£68,000
in phantom revenue eliminated from a single month's reporting
Budget decisions made on real numbers instead of inflated platform claims
Five attribution models, configured per pipeline
Choose the model that matches your business. Apply different models to different conversion events — time decay for purchases, last click for lead gen, position based for high-consideration products.
Last Click
Full credit to the final touchpoint before conversion. The industry default — simple, defensible, and easy to audit.
Best for: Teams migrating from platform-native attribution who want a clean baseline.
First Click
Full credit to the touchpoint that initiated the journey. Rewards the channel that created awareness.
Best for: Brand-building campaigns where discovery matters more than the final nudge.
Linear
Equal credit to every touchpoint in the path. No channel is overvalued, none is invisible.
Best for: Balanced reporting where every channel contribution should be acknowledged.
Time Decay
Credit weighted toward more recent touchpoints. The closer to conversion, the larger the share.
Best for: Performance teams optimising for lower-funnel efficiency.
Position Based
40% to first touch, 40% to last touch, 20% split across the middle. Values both discovery and closing.
Best for: Full-funnel strategies that need to credit awareness and conversion equally.
Custom Rules
Set vendor-specific caps, minimum credit thresholds, or custom weighting logic. Need Google to receive no more than 50% credit? Need a minimum £5 threshold before a platform receives a conversion? Configure it per pipeline.
Best for: Teams with specific business rules around vendor billing or partnerships.
Attribution tools tell you what happened. Signal changes what happens.
Triple Whale, Northbeam, Rockerbox, and others give you a dashboard with their view of attribution. But the conversion data sent to Google, Meta, and TikTok remains unchanged — every platform still receives the full value. The double-counting continues.
Attribution tools report. Signal acts.
Other platforms show you a dashboard. Signal controls what actually gets delivered to each vendor API. Attribution is enforced, not just observed.
No extra scripts. No extra cost.
Attribution runs inside Signal's processing pipeline. No additional JavaScript, no third-party pixels, no separate SaaS subscription.
Works with every vendor, automatically.
Click IDs from Google, Meta, TikTok, LinkedIn, Pinterest, Snapchat, and Microsoft are captured and stored as first-party cookies. Attribution decisions use the data Signal already collects.
Complete click ID lineage.
Every touchpoint is recorded with the exact click ID, timestamp, and source. You can audit exactly why a conversion was attributed to a specific platform.
| Capability | Attribution Tools | Datafly Signal |
|---|---|---|
| Cross-platform attribution reporting | ||
| Controls what conversions vendors receive | ||
| Adjusts conversion values per platform | ||
| Suppresses delivery to non-credited platforms | ||
| Works without additional scripts | ||
| First-party click ID storage (400-day) | ||
| Separate SaaS subscription required |
Automatic click ID tracking from every ad platform
Signal captures every click ID as a first-party server-set cookie the moment a user arrives from a paid ad. These persist for the full attribution window — immune to ITP, ad blockers, and cookie clearing.
gclid
Google Ads + gbraid, wbraid
fbclid
Meta / Facebook
ttclid
TikTok
msclkid
Microsoft Ads
li_fat_id
epik
ScCid
Snapchat
rdt_cid
All click IDs are stored as server-set first-party cookies with 400-day expiry, making them fully exempt from Safari's ITP restrictions. The complete touchpoint history is available for attribution decisions throughout the entire attribution window.
Fine-grained control over every vendor
Attribution is configured per pipeline. Different conversion events can use different models, and vendor-specific rules let you handle edge cases without compromising the overall model.
Vendor credit caps
Limit the maximum credit percentage any single platform can receive. Prevent Google from absorbing 90% of credit in brand-search-heavy journeys where other channels did the awareness work.
Minimum value thresholds
Set a minimum conversion value below which a platform does not receive the event at all. If TikTok's attributed share of a £50 order is £2.40, suppress delivery entirely rather than polluting the platform's optimisation with micro-conversions.
Per-event model selection
Use time decay for high-value purchases, last click for lead forms, and position based for subscription sign-ups. Each pipeline defines its own attribution model independently.
Frequently asked questions
- Why do platforms over-report conversions?
- Each ad platform (Meta, Google, TikTok, LinkedIn) attributes any conversion that touched its network to itself, using its own attribution model. With multiple platforms running concurrently, a single conversion is claimed by all of them, so the sum of platform-reported revenue typically exceeds actual revenue by 30-200%. There is no native cross-platform reconciliation, which is why marketing teams cannot trust dashboards in aggregate.
- How does server-side attribution fix this?
- Datafly Signal sits between conversions and vendor APIs. For each conversion event, the configured attribution model runs server-side and decides which single platform earned the credit (last-click, first-click, position-based, time-decay, or custom). Only that platform receives the conversion via its CAPI / Events API / Conversions API. Other platforms get audience signals or analytics events but not duplicate conversion attribution.
- Which attribution models are supported out of the box?
- Last click, first click, linear, position-based (40% first / 20% middle / 40% last), time-decay (configurable half-life), data-driven (driven by your warehouse model), and custom rule-based (e.g. "always credit Meta if a Meta touchpoint exists in the last 7 days"). Models are configured per pipeline and version-controlled. You can run multiple models in parallel for analysis and pick one for vendor delivery.
- Will my Meta ROAS drop if I stop double-counting?
- Reported ROAS will normalise to actual ROAS, which is what should drive budget decisions anyway. Most teams see Meta-reported revenue drop 20-40% on first deployment because conversions previously attributed to multiple platforms are now attributed once. Smart Bidding and Meta's campaign optimisation continue to work — they optimise on the conversions Meta receives, which is now the ones it actually earned.
- Can I run my old client-side attribution alongside server-side during transition?
- Yes. The deterministic event_id pattern means that during transition, both client-side and server-side conversion events arrive at vendors with the same identifier. Vendors deduplicate, so the data is consistent during parallel running. Most teams compare reported vs actual conversions for 2-4 weeks before fully cutting over.
- How do you actually defend the "more accurate" claim? Vendors will push back.
- Two engineering primitives stand behind it. First, the parallel-attribution dashboard shows what each vendor would have reported in an unsignaled world (computed from your real touchpoint history, browser regimes, and consent state) next to what Signal attributed under your configured model. The gap is real and visible. Second, the four delivery modes (additive, volume-preserved, differentiated-events, deduplicated) let you choose how aggressively Signal corrects vendor reports — start additive (zero risk, vendors dedup natively via shared event_id) and ramp toward deduplicated as confidence grows. You're not asking customers to trust a number; you're showing them the math.
- What about Safari and ITP — do server-side conversions actually recover the ones the pixel lost?
- Yes, and this is where the parallel-attribution dashboard gets specific. Apple ITP truncates JavaScript-set vendor cookies (_fbp, _gcl_aw, _ttp, etc.) to 7 days regardless of the vendor's stated 90-day window. A Safari user who clicks an ad, comes back 14 days later, and converts has had their pixel-side identifiers wiped — the vendor's pixel sees the conversion as organic. Signal stores the touchpoint server-side via a 400-day first-party cookie, so the click is still resolvable at conversion time. The dashboard breaks losses down by reason (cookie_expired, consent_denied, no_touchpoint) so the Safari recovery share is observable and defensible.
Related
Meta Conversions API
Server-side delivery to Meta with EMQ optimisation and consistent attribution.
Google Ads
Enhanced Conversions matching with the right attribution credit per pipeline.
Bot Filtering
Strip invalid traffic before attribution runs so conversion counts reflect real customers.
PII Handling
How identity data is hashed and masked across every vendor delivery.
Stop paying for the same conversion twice
See how Signal eliminates phantom revenue from your reporting and ensures every ad platform receives only the credit it deserves. Book a technical walkthrough with our team.