Marketing Attribution for SaaS: Why Most Tools Stop at Signups

August 7, 2026
8 min read

Marketing attribution for SaaS usually gets solved halfway. A founder can tell you how many visits came from a given channel, and with a bit more setup, how many of those visits turned into signups. Almost nobody can tell you how much monthly recurring revenue that channel is actually worth once churn is factored in - even though that's the only number that determines whether the channel is worth continuing to invest in.

This post covers why revenue attribution is the hard version of the problem, what "good enough" attribution usually looks like instead, and what a real fix requires.


Three Levels of Attribution, and Where Most Tools Stop

Visit attribution - knowing which channel sent a given visitor - is solved by nearly every analytics tool on the market. UTM parameters, referrer parsing, and channel grouping are table stakes.

Signup attribution - knowing which channel a given signup came from - requires a bit more setup, usually a cookie that survives from first visit to signup, plus a way to record which channel that cookie points to at the moment of signup. Plenty of tools handle this, though it often means custom event tracking.

Revenue attribution - knowing how much recurring revenue a channel is worth, net of churn - is where almost everything stops. It requires connecting the signup event to a specific customer in your billing system, then keeping that connection alive as the customer's subscription changes over months or years. Most attribution tools have no visibility into billing data at all, and most billing systems have no visibility into where a customer came from.


Why the Third Level Is Genuinely Hard

Revenue attribution isn't hard because the concept is complicated - it's hard because it requires three systems, built by three different teams for three different purposes, to share one identifier consistently:

  • Site analytics needs to capture the channel at the moment of the first visit.
  • The signup flow needs to preserve that channel information through to account creation, even across subdomains or a multi-step signup process.
  • The billing system needs a stable customer identifier that can be matched back to the original signup - and that match needs to keep working as the customer upgrades, downgrades, or churns.

Any one gap in that chain breaks the whole picture. A cookie that doesn't survive a subdomain switch, a signup event that doesn't fire, or a billing record with no link back to the original visitor all produce the same result: a channel with real revenue behind it that shows up as unattributed.


What "Good Enough" Attribution Usually Looks Like

Most teams end up with one of a few workarounds, none of which fully solve the problem:

  • Signup-count as a proxy for value. Treating "which channel drives the most signups" as equivalent to "which channel is most valuable" - which breaks down the moment two channels have meaningfully different churn rates or plan mixes.
  • A manual spreadsheet join. Exporting UTM data, signup timestamps, and billing records separately, then matching them by hand or with a script. Accurate in principle, but rarely kept up to date because of the manual effort involved.
  • A "good enough" self-reported field. Asking new signups "how did you hear about us?" at signup - useful directionally, but self-reported and often skipped, so it undercounts channels that don't have obvious top-of-mind recall (most paid channels, for instance).

What Closing the Gap Actually Requires

A working revenue attribution setup needs three pieces functioning together, continuously:

  1. A persistent visitor ID set on first visit, with first-touch and last-touch data preserved through cookies that survive across subdomains.
  2. A signup event tied to that visitor ID, so the channel from the first visit carries through to account creation without relying on self-reporting.
  3. An ongoing match between that visitor ID and billing records, so revenue, plan changes, and churn all stay connected to the original channel for as long as the customer's subscription exists - not just at the moment of signup.

Chartsy's Growth feature is built around exactly this chain - a script tag for visit tracking, a signup event, and automatic matching against your connected Stripe or Paddle data - so MRR, lifetime revenue, and churn are all available broken down by channel without a manual join.


Frequently Asked Questions

What's the difference between signup attribution and revenue attribution? Signup attribution tells you which channel drove a signup. Revenue attribution goes further - it tells you how much recurring revenue that signup is actually worth, and whether it's still active or has since churned.

Why doesn't signup count alone tell me which channel is best? Because channels can differ significantly in the quality of customer they bring in. A channel with fewer signups but much lower churn and higher plan value can be worth more in MRR than a channel with more signups overall.

Can I build revenue attribution myself with a spreadsheet? You can approximate it by manually joining UTM exports, signup timestamps, and billing records, but it requires ongoing manual effort to keep current and tends to fall out of date quickly.

Does revenue attribution require a developer to set up? It depends on the tool. Some require custom event tracking throughout your signup and billing flow. Chartsy's Growth feature needs a single script tag and one signup event - or a zero-code form attribute - to get started.

Does this work if visitors move between a marketing site and a separate app subdomain? It should, as long as attribution cookies are shared across subdomains rather than scoped to a single one. Without that, a visitor who signs up on a different subdomain than they first landed on loses their original attribution.


See revenue by channel with Chartsy Growth →


Related: Introducing Growth · UTM Tracking for SaaS Founders · Growth feature overview

Chartsy Team

Written by

Chartsy Team

The Chartsy Team writes guides, product updates, and resources to help SaaS and eCommerce founders make sense of their metrics, without SQL or spreadsheets.

Chartsy