Skip to content

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.

Illustrative example — not real customer data
ChannelSigned upActivatedAdded paymentSubscribedRevenue
Paid Social4189623.0%122.9%30.7%$1,497
Paid Search30117257.1%8829.2%4113.6%$20.5K
Organic Search22415870.5%9743.3%6227.7%$30.9K
Email14812181.8%8456.8%5839.2%$28.9K
AI Assistants634469.8%2742.9%1625.4%$7,980
Direct19011862.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.

Illustrative example — not real customer data

All credit to the last touch that was not direct.

  1. 1-42d
    Paid Socialmeta / paid_social · spring-prospecting$0no credit
  2. 2-24d
    AI Assistantschatgpt / ai · comparison query$0no credit
  3. 3-9d
    Emailnewsletter / email · product-update-14$0no credit
  4. 4-3d
    Directtyped the URL$0no credit
  5. 5today
    Paid 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.

01

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.

02

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.

03

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 touch

    Answers "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 touch

    The 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 touch

    Last 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 touch

    Treats 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 touch

    The 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 touch

    Credit 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
  • Email
  • 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.
AnalysisExample output

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.

Highest yieldEmail → Subscribed · 39.2% of 148
Lowest yieldPaid Social → Subscribed · 0.7% of 418
ExclusionAndroid 10 — 187 signups, 0 subscriptions

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.