← Features
Product

Revenue Attribution: See Which Marketing Actually Makes You Money

Paste a read-only Stripe key (or plug in any of a dozen providers) and Datalenk ties every visit, campaign and page to real revenue and lifetime value, by channel. Stop optimizing traffic, start optimizing profit.

4 min read

Your analytics knows where visitors come from. Your payment processor knows how much you made. Neither connects the two, so you cannot say which channel brings profitable customers. Datalenk closes that gap: connect your payments, and every visit is tied to what it is worth.

What it does

Datalenk attributes revenue and lifetime value to the exact source that produced each paying customer: the channel, the campaign, the page, the search query. "Reddit sent 4,000 visits" becomes "Reddit sent 4,000 visits and $6,200 in new MRR, at a cost of zero." Your reports stop measuring traffic and start measuring profit.

Concretely, you get:

  • Revenue by channel, so budget goes to what pays, not what is loudest.
  • Lifetime value by acquisition source: the channel is welded to the customer in a durable ledger, so every renewal, upgrade and expansion for the next three years still credits the channel that brought them. Not a session cookie that expires: a row in a database.
  • Profit per customer, the number that ends the "should we spend more on ads" argument.
  • Revenue per visitor, a north-star metric that punishes empty traffic and rewards quality.
  • Refunds and partial refunds, netted properly, because a channel that brings refunds is not the channel your dashboard thinks it is.
  • Payment markers right on your traffic curve: see the post go out, and see the payments that follow.

How it works

  1. Add the script. By default it is cookieless and stitches visits server-side within the day.
  2. Connect your money. In Stripe, you create a restricted, read-only key and paste it in. We can read your payments, and we can do nothing else: we cannot charge your customers, refund them, or touch your account. No Stripe Connect, no OAuth scope creep.
  3. Read the Channels report. Every channel now carries a revenue column and a lifetime column, automatically, with no manual export and no data-warehouse project.

The one thing worth knowing. If a visitor discovers you on Monday and pays on Thursday, cookieless stitching alone will not recognize them. Two honest options: switch on the Persistent layer (opt-in, consent required), or call datalenk.identify(email) at signup. One line, and the customer is welded to the channel that brought them, for life and across devices. Skip both and those payments land in an Unattributed bucket, visible and honest, because we would rather show you a payment we cannot place than silently guess a channel for it.

Honest scope

Native and live today: Stripe, LemonSqueezy, Paddle, Polar, RevenueCat, PayPal, Gumroad, Ko-fi, Buy Me a Coffee, HelloAsso, Eventbrite and WooCommerce, all through signed webhooks. Affiliate networks (Awin, CJ, Impact, Skimlinks) join on the SubID carried by the outbound click. Ad revenue comes from AdSense and Ezoic, or from an estimated page RPM. Anything else: one POST /api/v1/payment with your workspace token, or a CSV import (Amazon, any network, any export).

Not built, and we will not pretend otherwise: we do not pull ad spend from Google or Meta, so we show you revenue by campaign, never ROAS.

No revenue on-site? A goal with a dollar value works the same way: a booked call, a submitted form, a phone tap. Leads even carry a mutable value, so the estimate you set becomes the real number the day the deal closes, and the channel report updates itself.

Why this beats the usual setup

GA4 can record a transaction value, but it measures the purchase event, loses 40 to 60% of sessions to ad blockers and refused consent, and never sees the customer's lifetime. The spreadsheet approach (export Stripe, export GA4, match on UTM) works exactly once, then becomes a monthly tax that quietly stops getting paid. Datalenk makes the connection permanent, so the profit view is always live.

Go deeper

The thinking behind this: . The exact setup: . Measuring lifetime by source: .

See profit per channel, not just signups. 14-day trial, card required, cancel in two clicks. Start your trial.

FAQ

What is revenue attribution? Tying revenue (and ideally lifetime value) back to the marketing source that produced each customer, so you judge channels on money rather than clicks or signups.

How does Datalenk connect to Stripe? You create a restricted, read-only key in your own Stripe dashboard and paste it in. It is read-only by construction: we can see charges, customers and subscriptions, and we cannot move a cent. Revoke it from Stripe at any time.

What if I use Paddle, PayPal, Gumroad, or something you have never heard of? The first two are native, and so are ten others. Anything else goes through one API call, or a CSV import. The attribution engine is the same for all of them.

Does this work for low volume? Especially at low volume: when every customer counts, knowing which channel actually pays is more valuable, not less.

Measure the money,
not the pageviews

Cookieless, EU-hosted analytics that ties every visit to the revenue it actually brought in. 14-day free trial.