← Back to Blog
revenue attributionanalytics tipsmarketing

Revenue Attribution Deep Dive: How to Know Which Channels Drive Paying Customers

A complete guide to marketing attribution — first-touch, last-touch, multi-touch, and why most analytics tools only get you halfway there.

EngageTrack Team··6 min read

Most analytics tools will tell you how many visitors you got from each marketing channel. What they won't tell you is how much money each channel made you.

Those are very different numbers. A channel that sends 5,000 visitors and 2 conversions is worse than one sending 200 visitors and 15 conversions. If you're optimizing for traffic, you're optimizing for the wrong thing.

This post breaks down how marketing attribution actually works, why most setups get it wrong, and what you need in place to make decisions based on revenue — not pageviews.

What Is Marketing Attribution?

Attribution is the process of assigning credit for a conversion (a sale, a signup, a subscription) to the marketing channels that influenced it.

Simple in theory. Complicated in practice, because almost no customer converts on their first interaction. They might find you through Google, leave, see a tweet three days later, click through, sign up for a trial, and then convert a week after that. Which channel gets the credit?

The answer depends on your attribution model.

The Four Main Attribution Models

1. First-Touch Attribution

All credit goes to the first channel that brought the visitor to your site.

Best for: Understanding where awareness comes from — which channels introduce people to your product for the first time.

Problem: Completely ignores everything that happened between discovery and purchase. A visitor who found you through organic search in January and converted after seeing your newsletter in March would credit organic search 100%.

2. Last-Touch Attribution

All credit goes to the last channel the visitor interacted with before converting.

Best for: Understanding what closes deals — what's the final nudge before someone buys.

Problem: Systematically undervalues top-of-funnel channels. Your blog post that drives 80% of your awareness gets zero credit because most readers come back later through a direct visit or branded search.

3. Linear (Multi-Touch) Attribution

Credit is split equally across every touchpoint in the journey.

Best for: Getting a fairer picture across the full funnel. No single channel gets all the glory or all the blame.

Problem: Treats all touchpoints as equally valuable, which they almost certainly aren't. A Twitter impression and a pricing page visit aren't the same kind of signal.

4. Data-Driven Attribution

Credit is distributed based on which touchpoints statistically correlate with conversion. Requires large datasets and often a dedicated analytics platform.

Best for: Enterprise marketing teams with thousands of conversions per month.

Problem: Overkill for most SaaS founders and indie hackers — and a black box you can't inspect.

What Most Founders Actually Need

For most early-stage products, first-touch + last-touch together gives you 90% of the insight you need without any statistical complexity:

  • First-touch tells you where to invest for growth (what brings new people in)
  • Last-touch tells you what closes (what tips people over the edge)

The gap between the two is where your nurture and re-engagement content lives.

Why Your Analytics Tool Is Probably Lying to You

Standard cookie-free analytics tools (Plausible, Fathom, Simple Analytics) track sessions and referrers — but they have no connection to your payment processor. So when someone converts in Stripe, those tools have no idea which session led to it.

Here's what that looks like in practice:

ToolWhat You SeeWhat You're Missing
Plausible / FathomSessions by source, bounce rate, pageviewsWhich sources drove actual purchases
Google Analytics (GA4)Everything — but requires complex e-commerce setupRevenue data if you haven't set up GA4 e-commerce correctly
Stripe DashboardRevenue, MRR, churnWhere those customers came from

The revenue data lives in Stripe. The traffic data lives in your analytics tool. They never talk to each other — unless you build the bridge.

How Revenue Attribution Actually Works in EngageTrack

When a visitor lands on your site, EngageTrack assigns them a session with a visitor ID and records the referrer, UTM parameters, and channel.

When they complete a checkout (Stripe, LemonSqueezy, Paddle, or Polar), EngageTrack matches the payment event back to the originating session using one of four methods, in priority order:

  1. Visitor ID match — the most accurate. If the checkout process includes the visitor ID in payment metadata, it's a direct link.
  2. Customer email match — if the email used at checkout matches an identified visitor, attribution follows.
  3. Same-session attribution — if checkout happens in the same browser session as the visit, it's attributed to that session's source.
  4. First-touch fallback — if none of the above apply, EngageTrack attributes the conversion to the visitor's first recorded session.

The result looks like this in your dashboard:

ChannelSessionsConversionsRevenueRevenue per Session
Organic Search4,21038€2,140€0.51
Direct1,89022€1,560€0.83
Twitter/X8206€420€0.51
Hacker News34011€770€2.26
Paid (Google)1,1004€200€0.18

This table would completely change where you invest your time and money. Hacker News drives 5x the revenue per session of paid Google ads, despite sending far fewer visitors. You'd never know that from a standard analytics dashboard.

Setting Up Revenue Attribution: What You Actually Need

Step 1: Install the tracking script. One <script> tag in your <head>.

Step 2: Connect your payment provider. EngageTrack connects to Stripe, LemonSqueezy, Paddle, and Polar via webhooks. The integration takes about 5 minutes — you paste in an API key and EngageTrack handles the rest.

Step 3: (Optional) Pass the visitor ID in checkout metadata. For the most accurate attribution, add the EngageTrack visitor ID to your payment metadata before checkout:

const visitorId = engagetrack.getVisitorId();
 
// Stripe example — pass to your backend before creating a PaymentIntent
const paymentIntent = await stripe.paymentIntents.create({
	amount: 500,
	currency: "eur",
	metadata: {
		engagetrack_visitor_id: visitorId,
	},
});

That's it. You'll start seeing revenue columns populate in your analytics dashboard within minutes of your first successful payment.

The One Number That Should Drive Every Marketing Decision

Once you have revenue attribution working, the most important number on your dashboard is Revenue per Visitor (RPV) — the average amount of revenue generated per visitor from a given channel.

RPV tells you, at a glance, which channels are worth scaling and which are consuming time and money for little return. A channel with high traffic and low RPV is a vanity metric trap. A channel with modest traffic and high RPV is where you should double down.


Want to see which channels are actually driving revenue for your product? Start your free 14-day trial at engagetrack.net/register — no credit card required, and Stripe integration takes 5 minutes.

Related Articles