Server-side attribution for Stripe

Tie every charge to the click that started it.

Trace reads Stripe server-side and joins each charge back to the original visitor session — by metadata when you control checkout, by email when you don't. Deterministic, first-party, auditable to the dollar.

7-day free trial · No card required

By continuing you agree to our Terms and Privacy Policy.

Or see how it works ↓
tracerev.com/dashboard
Revenue
$184,209
+12.4%
New customers
1,284
+8.1%
ROAS
4.8×
+0.3×
CAC
$28.10
-$2.40
Revenue by channel

An attribution layer you can audit.

Every charge in your dashboard came from a real Stripe event, joined to a visitor we can point to, by a method we name. No view-through fudges. No probabilistic models. No black box.

Server-side, not pixel-side

Attribution resolves on Stripe's charge.succeeded — not on a thank-you page that may never load. Failed pixel calls don't lose data.

Deterministic, not modeled

Each revenue row tags itself with metadata, email_match, or unattributed. Three states, one of them honest.

First-party, post-iOS-17

Visitor IDs sit in your apex domain's first-party cookies. Apple's 7-day cap doesn't apply — we don't depend on a live cookie at conversion.

Three steps. Three minutes.

The pixel captures clicks. Stripe Connect streams charges. Trace joins them by visitor ID or email.

1
Drop the script

One <script defer> tag in <head>. Captures pageviews + UTMs, sets a 1-year first-party visitor cookie. ~1.3 KB gzipped.

<script defer
  src="https://tracerev.com/track.js"
  data-site="site_…"></script>
2
Connect Stripe

Read-only OAuth. Twelve months of charges backfill on connect; future charges arrive via webhook within seconds.

// custom checkout? add one line:
import { getAttribution }
  from '@trace/sdk/next';

stripe.checkout.sessions.create({
  metadata: await getAttribution()
});
3
Read the join

Each charge shows the original UTM, referrer, and the method we used to resolve it. Filter by source, campaign, or content.

meta / cpc        $4.20 ROAS
google / organic  $7.10 ROAS
reddit / post     $9.80 ROAS
email / klaviyo  $11.40 ROAS

What's in the box.

No-feature-bait list. Everything below works today.

Twelve months of backfill

Day one of your Stripe connect, the dashboard fills with a year of attributed revenue. No 'let it run for a quarter to see signal.'

Open SDK, five frameworks

@trace/sdk for Next App + Pages, Express, browser, and generic Node. One line in your Checkout Session creation, deterministic from there.

Auditable attribution method

Every revenue row is tagged metadata, email_match, or unattributed — so you know exactly how each dollar got its source.

Manual ad spend, pro-rated

Drop in monthly spend per source. Trace pro-rates by window overlap so any date range gives you correct ROAS, no spreadsheet gymnastics.

First-touch attribution

The visitor's earliest event with a UTM or referrer wins. Your podcast ad doesn't lose credit to the Google search three weeks later.

Single-currency, by design

USD only. We refuse to silently convert euro charges to dollars at yesterday's FX rate — that's how ROAS comparisons quietly become meaningless.

Simple. Flat. No usage fees.

7-day trial. Cancel any time. No event-volume tiers.

Standard
$99/ month

Billed monthly. Cancel any time.

  • Unlimited sites & events
  • Unlimited Stripe accounts connected
  • 12 months of historical backfill
  • ROAS, CAC, LTV by channel
  • First-touch attribution
  • Open SDK, five frameworks
  • Email support
Start 7-day free trial

Founder pricing: first 50 customers lock in $79/mo for life with code FOUNDER50.

Common questions

How is this different from ad-platform attribution?
Ad platforms attribute against their own click logs and add modeling on top. Trace attributes against your Stripe charge log: deterministic, server-side, and tagged with the resolution method on every row. When the two disagree, you have a paper trail back to the original visitor.
Do I need an engineer to install Trace?
For most stores, no — drop one <script> tag in your <head>, then click "Connect Stripe." If you build your own Checkout Sessions, the SDK adds trace_visitor_id to metadata in one line.
What happens to my data if I cancel?
Your data sits in our database until you ask us to delete it. Email support@tracerev.comand we'll wipe everything tied to your account.
Why USD only?
Multi-currency conversion forces a quiet choice between yesterday's FX rate and today's, and the choice changes your ROAS retroactively. We'd rather refuse than guess. EUR + GBP support is on the v2 roadmap.
Does iOS 17, ITP, or an ad blocker break Trace?
No. Visitor IDs live in your apex domain's first-party cookies. Even if a cookie is dropped before checkout, attribution still resolves via metadata (when SDK is wired) or via email match against your identify() calls.
Is there a free plan?
No, but every account starts with a 7-day free trial — full features, no card required.

Three minutes to your first attributed charge.

Connect Stripe and the dashboard fills with twelve months of history. No card required for the trial.

Start 7-day free trial