Your best channel for signups is rarely your best channel for revenue
Attruly measures every channel, campaign, device and OS version at every step of your funnel, not only at the last click. So you can see the campaign that fills the top and the one that actually pays.
10,000 events a month free, forever. No card. Two minutes to install.
| Channel | Signed up | Activated | Added payment | Subscribed | Revenue |
|---|---|---|---|---|---|
| Paid Social | 418 | 9623.0% | 122.9% | 30.7% | $1,497 |
| Paid Search | 301 | 17257.1% | 8829.2% | 4113.6% | $20.5K |
| Organic Search | 224 | 15870.5% | 9743.3% | 6227.7% | $30.9K |
| 148 | 12181.8% | 8456.8% | 5839.2% | $28.9K | |
| AI Assistants | 63 | 4469.8% | 2742.9% | 1625.4% | $7,980 |
| Direct | 190 | 11862.1% | 6132.1% | 3417.9% | $17K |
The problem
One number per campaign cannot describe a funnel
Your ad platform counts the conversion it touched last and stops there. Everything between the click and the money — the signup that never activated, the trial that never added a card — happens somewhere it cannot see.
What the ad platform shows you
418 signups
Paid Social, ranked first in the account. This is the number the campaign is optimised against.
What happened next
12 added a card
Ninety-seven in a hundred of those signups stopped before the step where money becomes possible.
What it produced
3 customers
The campaign that leads the account on volume finishes last on revenue, and nothing in the platform says so.
The same blindness runs the other way. Add up what every platform claims and you will have sold your product three times, because each of them counted the conversion it touched. Attruly credits it once, across the whole path.
One customer. Six answers.
This is a real buyer's path to a $4,800 deal. Change the model and watch which channel gets the credit.
All credit to the last touch that was not direct.
- 1-42dPaid Socialmeta / paid_social · spring-prospecting$0no credit
- 2-24dAI Assistantschatgpt / ai · comparison query$0no credit
- 3-9dEmailnewsletter / email · product-update-14$0no credit
- 4-3dDirecttyped the URL$0no credit
- 5todayPaid Searchgoogle / cpc · brand-exact$4,800100.0%
Google Ads would report this as its conversion. So would Meta. So would your email tool. All three are counting the same $4,800 — which is how a marketing team ends up with 280% attributed ROAS and a flat bank balance.
Every attribute, every stage
The segment that fails is usually narrower than the channel
Cutting Paid Social because it converts badly cuts the half of it that works. Attruly measures the funnel at the level you can actually act on in an ad platform: the campaign, the ad group, the device model, the OS version, the browser.
Android 10 signs up 187 people this month, more than any other version you buy. Four of them reach the payment step. None of them subscribe.
That is an exclusion you can paste into Google Ads on a Tuesday afternoon. It is invisible in a report that groups by channel, and it is invisible in a report that only counts the last step.
- Channel
- Source
- Medium
- Source / Medium
- Campaign
- Ad group / Content
- Keyword / Term
- Landing page
- Referrer
- Country
- Region
- City
- Device type
- Device model
- Operating system
- Browser
How it works
Three things, done properly
Most attribution tools do the first one well and hand-wave the other two. Identity is where the difficulty lives, and stage-level credit is what makes the answer useful.
Track
One script tag, or a call from your backend. Every pageview, click, form and purchase — with the campaign that brought them, including the click ids Google and Meta append automatically.
Resolve
The anonymous browser that clicked your ad in March and the account that signed in May become one person. Every touch they ever made comes with them.
Attribute at every step
Not just the sale. Every milestone you define — signed up, activated, added a card — is credited back to the campaign, device and OS version that brought the person, under any of six models.
Attribution models
Six models, one dataset
Every report in Attruly takes a model. Switch it and the whole page recomputes — the same conversions, credited differently, so you can see how much of your reporting is a modelling choice rather than a fact.
First touch
Single touchAnswers "what creates demand". Favours awareness channels and will make your brand campaigns look better than your retargeting. Use it when you are deciding where to spend to reach new people.
Last touch
Single touchThe default in most ad platforms, which is why they all claim the same conversion. Favours closing channels — branded search, retargeting, email. Simple, and consistently overstates the bottom of the funnel.
Last non-direct
Single touchLast touch, but it skips past "direct" — someone typing your URL or arriving with a stripped referrer is not a marketing channel. This is what GA4 does by default and it is usually the fairest single-touch view.
Linear
Multi touchTreats every touch as equally responsible. Honest about the fact that a journey has many steps, deliberately naive about which mattered. A good sanity check against the single-touch models.
Position based
Multi touchThe U-shaped model. Rewards the channel that found the person and the channel that closed them, while still acknowledging the middle. The pragmatic default for most teams running both awareness and performance.
Time decay
Multi touchCredit halves for every half-life period further from the conversion. Right for short consideration cycles, where a touch from six weeks ago genuinely mattered less than one from yesterday.
Channel coverage
Fourteen channels, classified for you
utm_source is free text, and yours is inconsistent. Attruly folds Google / Paid, google / cpc and an untagged gclid into one row that means the same thing.
- Paid Searchpaid
- Paid Socialpaid
- Displaypaid
- Videopaid
- Organic Search
- Organic Social
- AI Assistants
- Affiliate & Partnerpaid
- SMS & Messaging
- Referral
- Internal
- Other Campaign
- Direct
Click ids are captured whether or not the campaign was tagged, so a Google or Meta ad click is attributable even when nobody remembered to set utm parameters. AI assistants are their own channel — that traffic converts differently and deserves its own row.
What you get
A complete attribution stack
Not a dashboard bolted onto someone else's analytics. The tracking, the identity graph, the models and the reporting are one system.
Identity that survives
An alias graph, not a cookie. Anonymous visits merge into the person the moment they identify — across devices, months apart.
Six attribution models
First, last, last non-direct, linear, position-based and time decay. Switch models on any report and watch the answer change.
Sixteen dimensions, all the way down
Channel, source, medium, campaign, ad group, keyword, landing page, referrer, country, region, city, device type, device model, OS and version, browser and version. Every one of them measured at every stage.
Spend, CPA and ROAS
Import your media spend and every channel row carries its own cost per acquisition and return, next to the conversions it earned.
Person-level paths
Open any customer and see the whole path — every touch, every session, every event, in order, with the credit each one received.
AI that reads the funnel
The pockets earning above your own rate, the ones earning nothing, and the exclusions to paste into the ad platform. Every claim carries the numbers it came from.
Server-side tracking
A typed Node SDK for the events browsers never see — webhooks, backend purchases, CRM stage changes, refunds.
Funnels you define
Put your goals in order — signed up, activated, added a card, paid — and every segment gets measured against all of them at once, with the drop-off named at each step.
Multiple projects
Each site tracks completely independently — its own keys, its own goals, its own timezone and currency. Built for agencies.
Your raw events, kept
Not a sampled aggregate. Every event stays queryable and exportable, so a number you disagree with can be traced to its rows.
Real-time
An event lands and the dashboard reflects it. No four-hour processing delay before you can tell whether a launch worked.
First-party by design
Your domain, your data, your database. Self-host the whole thing on your own server if that is what compliance needs.
AI analysis
It reads the whole matrix so you don't have to
Sixteen dimensions across five stages is more cells than anyone reads on a Monday. Point the analysis at a window and it comes back with the pockets that carry people to the money, the ones that stop at the first step, and the exclusions worth making. Every claim carries the numbers it came from, so you can check it.
- Names the segment with the highest yield at each stage, and the volume behind it.
- Flags device, OS-version and browser pockets that never reach the money step, so you can exclude them in the ad platform.
- Ignores any segment with fewer than ten people in it, because a rate built on four signups is not a finding.
- Says when a window is too short to draw a conclusion, instead of drawing one anyway.
- Refuses to recommend spending on Direct, because nobody can buy Direct.
Paid Social is the largest source of signups in the account and the smallest source of customers: 418 signups, 12 payment methods added, 3 subscriptions. The funnel dies before the card step, not at it.
Confidence: medium. 30-day window, and people who signed up in the last week have had less time to reach the card step, so recent cohorts read lower than they will settle at.
Find out where your funnel loses the people you paid for
Install takes two minutes. The free plan tracks 10,000 events a month and never expires.