Revenue
Stripe Revenue Attribution: Track Revenue by Source, Campaign and Landing Page
Connect verified payments to acquisition evidence, handle renewals and refunds, and make the limits of your attribution visible.
On this page
Stripe knows the payment. Your website knows the acquisition.
Stripe can confirm that a payment happened. Your website analytics may know the source, campaign and landing page that preceded a signup. Revenue attribution connects those two pieces of evidence using a documented matching rule. A payment-provider connection alone does not create that link.
For a SaaS company, the useful chain often looks like the one below. Notice where the unit changes: an anonymous visit becomes a signed-up account, then a Stripe customer and a payment. Each handoff needs an implementation and an appropriate privacy basis.
- 01Google Ads, Reddit or organic search
- 02Landing page
- 03Visitor or session
- 04Signup
- 05Stripe customer
- 06Verified payment
- 07Revenue connected to acquisition
A missing or expired link should produce unmatched revenue, not a guessed source.
Premely’s revenue workflow is relevant when you want to review connected payment context alongside acquisition and conversions. Inspect the current integration options and test the exact checkout flow you use. Availability and matching requirements matter more than a provider logo.
Build a small, explicit attribution contract
1. Capture only the acquisition evidence you need
Record source, campaign and the relevant landing page according to your tracking design. Avoid putting email addresses, payment details or other personal data in campaign URLs. Query strings travel through logs and shared links, so they are a poor place for sensitive identifiers.
2. Preserve a permitted reference across signup and checkout
A server-side mapping can connect an internal account or attribution reference to the customer and checkout session. Stripe’s Checkout Session API includes a client reference field for reconciliation. The existence of that field is not an instruction to put customer data into a browser-visible URL.
Keep the mapping separate from the payment facts. Document whether it represents a person, workspace or anonymous attribution token, and how long it remains valid. If your analytics provider accepts only a constrained attribution hash, do not send arbitrary customer identifiers instead.
3. Treat the server-confirmed payment as the outcome
A thank-you-page view is useful interface evidence, but it is not a reliable payment ledger. The page can be reloaded or never loaded. Use the appropriate confirmed payment events for your payment flow and verify the webhook signature. Stripe explains delivery and signature verification in its webhook guide.
acquisition reference -> permitted account mapping
account mapping -> Stripe customer / session
verified payment -> unique payment record
payment + valid link -> attributed revenue
payment without link -> unmatched revenueThe stable payment identifier prevents a retried webhook from creating another sale. Keep an idempotent record of processed events or business operations, and account for delivery order rather than assuming every event arrives exactly once in sequence.
Separate first payments, renewals and refunds
A first payment answers an acquisition question. A renewal answers a retention and monetisation question. You may connect both to the original acquisition cohort, but label the report accordingly. Do not describe all cash received this month as revenue generated by this month’s marketing.
| Event | How to think about it |
|---|---|
| First successful payment | New-customer conversion and first-payment revenue |
| Recurring payment | Cash from an existing customer; optionally grouped by original acquisition cohort |
| Refund | A negative adjustment linked to the original payment, with its own timing |
| Dispute or reversal | A separate adjustment lifecycle; avoid counting the same loss twice |
| Failed payment | Not collected revenue; may matter in subscription or recovery reporting |
Stripe’s subscription webhook documentation distinguishes billing events and subscription lifecycle changes. Decide which event constitutes collected revenue in your implementation. Do not count both a checkout event and its corresponding invoice as separate income.
Choose how refunds affect history. A cash-period view records the refund when it occurs. A cohort-return view may reduce the original cohort’s revenue. Both can be useful, but quietly mixing them makes historical performance drift without explanation.

Choose an attribution window that your evidence can support
A lookback window limits how far before an outcome a touch can receive credit. It cannot extend the lifetime of an identifier that has already expired. A privacy-preserving tracker with bounded anonymous continuity cannot reliably join an arbitrary session from months earlier just because the date picker is wide enough.
Premely’s anonymous conversion and ordered-funnel windows are bounded, with a maximum one-day window in the current documented workflow. Use that analysis for short conversion paths. A multi-week trial or sales cycle needs a separately defined, appropriate account or cohort model; it should not be presented as an automatically reconstructed anonymous journey.
Separate direct visits, missing source information and unmatched payments. A genuine direct visit is acquisition evidence. An unlinked payment is a missing connection. Combining them hides the health of the implementation.
Validate the report before trusting the ranking
- Use a labelled test campaign and verify its landing-page capture.
- Complete a signup and checkout in the environment being tested.
- Confirm one payment record and the intended attribution reference.
- Retry the event and confirm revenue is not duplicated.
- Test a refund and a renewal separately.
- Test an expired or missing reference and confirm it stays unmatched.
- Reconcile each currency separately and document the reporting time zone.
Keep payment secrets and webhook verification on the server. Never solve a missing dashboard number by exposing a secret key in client code. Check the provider’s current integration requirements, and avoid claiming attribution is complete until the rendered report agrees with known payment evidence.