Payment tracking
Revenue attribution for Stripe, Paddle, and Shopify
Every customer in Stripe, Shopify, Paddle, Polar, Lemon Squeezy, or Dodo tied to the campaign that found them. See what moved MRR, which trials convert, and how fast each channel pays back.
Free 7-day trial. No credit card required.
Used by 750+ marketing teams, agencies, and SaaS companies
Why revenue reporting misleads
First-order revenue is the wrong number to optimise against
Payment data is the only conversion that is unambiguously real. It is also the one most marketing tools never see, because the money lands in a billing system that knows nothing about campaigns.
- 01
The payment happens away from your site
Checkout, billing portals, and payment links live outside your pages, so the campaign that produced the customer never reaches the transaction.
Works with StripePaddleShopifyChargebeeRecurly - 02
Renewals arrive with no source at all
Month two onwards is where subscription revenue actually lives, and every renewal posts as fresh income with nothing linking it to the original click.
Affects MRRRenewalsUpgrades - 03
Trials convert long after the click
A free trial that converts on day 30 falls outside most attribution windows, so the campaign that earned the customer gets no credit for the money.
Affects Free trialsAttribution windows - 04
Cheap customers look like good ones
Optimising on first-order value rewards whichever channel produces the most signups, even when those customers churn in three months.
Affects First order valueLifetime value - 05
Refunds and churn never come back out
Revenue is credited on the day it arrives and rarely adjusted, so a channel with heavy refunds keeps its inflated number.
Affects RefundsChurnFailed payments
Every payment traced to the campaign behind it
First orders, renewals, upgrades, and refunds all joined back to the original source, so channels are ranked on the revenue they keep rather than the revenue they start.
- 01 Off-site checkouts and payment links still resolve to a source
- 02 Renewals and upgrades credited to the original campaign
- 03 Trials attributed whenever they convert, not within a window
- 04 Channels ranked on lifetime value, not first-order value
- 05 Refunds and churn subtracted from the channel that earned them
Attribution stack
Revenue attribution from first click to closed payment
Stop guessing which channel actually pays for itself. SourceLoop ties the source captured on the first visit to the payment, and back to your CRM and ad platforms.
Every payment carries the source that drove it.
Revenue by channel, with true ROAS behind each.
See every touch before the card was charged.
Revenue lands in your CRM, attribution mapped.
What moved MRR · September
Net +$6,380| Movement | Top channel | MRR |
|---|---|---|
| New business | +$4,180 | |
| Trial converted | +$2,310 | |
| Expansion | +$1,120 | |
| Churned | −$1,230 |
Subscriptions
See what moved MRR, and which channel moved it
Every month splits into new business, trials converted, expansion, contraction, and churn, including failed payments. Each movement is tied to the channel that brought those customers, so you can see which campaigns bring revenue that stays.
- MRR, active subscriptions, and churn by channel
- Renewals and upgrades credited to the first campaign
Trials and lifetime value
Know which channels convert trials and pay back fastest
The cheapest signups are often the ones that never pay. See trial to paid rate and days to convert by channel, then lifetime value and the months each channel takes to earn back its spend.
- Trial to paid rate and days to convert
- LTV, payback, and revenue cohorts by channel
Trials and payback · by first touch
12 months| Channel | Trial → paid | LTV | Payback |
|---|---|---|---|
| 31% | $1,980 | Now | |
| 24% | $1,420 | 4 mo | |
| 11% | $610 | 11 mo |
How it works
Three steps from snippet to revenue tied back to source
One script, one connection, ROAS that reflects reality.
-
<script async src="https://t.sourceloop.ai/tracking-v3.js"></script>
01Install the snippet
Drop one script tag in your <head>. Five minutes, no engineer required.
-
02Connect your payment platform
Connect Stripe, Paddle, Polar, Lemon Squeezy, or Dodo with a webhook, or Shopify in one click. We match each customer to their visits.
- A
Acme Co
- Source Google / CPC
- First touch Organic / Blog
- LTV so far $2,376
03Revenue ties back to channel
Subscriptions, Trials, and Lifetime value reports fill in by channel from day one.
Payment tracking by platform
Tie revenue from Stripe, Shopify, Paddle, Polar, Lemon Squeezy, and Dodo
One snippet, one connection, every payment attributed.
-
Stripe -
Shopify -
Paddle -
Polar.sh -
Lemon Squeezy -
Dodo Payments
FAQ
Revenue attribution and Stripe tracking, FAQ
How do I tie Stripe customer revenue back to UTM source?
Install the SourceLoop snippet on your site and connect Stripe in Setup by pasting a webhook signing secret. We match each new Stripe customer to the visitor session that brought them in, then attach the source, medium, campaign, and full journey to that customer in SourceLoop. The same flow works for Paddle, Polar, Lemon Squeezy, and Dodo, and Shopify connects in one click.
Why does my Stripe customer arrive without source data?
Stripe sees the checkout, not the visitor's journey. By the time someone clicks an ad, browses your site, signs up, trials, and then pays a few weeks later, the original UTM is long gone from the URL. SourceLoop captures it on the first page view, keeps it on the person through signup and trial, and ties it to the payment the moment it lands.
Does this work for subscriptions, renewals, and expansion revenue?
Yes. SourceLoop ties source data to the customer, not just the first invoice, so MRR, ARR, churn, and expansion all roll up by acquisition channel. The Subscriptions report shows what moved MRR each month (new business, trials converted, expansion, contraction, and churn) by the channel that brought those customers.
Can I track Shopify orders with UTM and ad source?
Yes. SourceLoop captures attribution on the first visit, keeps it through add-to-cart and checkout, and attaches it to each Shopify order, down to the products bought and their margin.
Can I send customer revenue back to Google Ads, Meta, or ChatGPT Ads?
Yes. Conversion sync sends trials, new subscriptions, and payments, with their value, to Google Ads, Meta, and ChatGPT Ads, so each platform's bidding optimizes for paying customers, not signups.
How do I calculate LTV and ROAS by channel automatically?
SourceLoop ties every payment, every renewal, and every expansion event back to the original source, so the Lifetime value report shows LTV, payback, and revenue cohorts by channel out of the box. Break them down by source, campaign, ad, and landing page.
Does this work with consent banners and GDPR?
Yes. SourceLoop follows Google Consent Mode, which OneTrust, Cookiebot, Iubenda, Osano, and most other banners set. When a visitor declines, SourceLoop respects it, and cookieless mode is there if you want no cookies at all. Everything is first-party on your domain.
What is subscription revenue attribution?
It is attributing the whole revenue stream a customer produces, not just the first payment. A campaign that brings in customers paying 49 a month for three years is worth vastly more than one producing the same number of signups who churn at month two, and first-order attribution cannot tell those apart.
How do you attribute renewals and upgrades?
Every payment is tied to the customer record, and that record already carries its original source. When a renewal, upgrade, or expansion posts in Stripe, Paddle, or Polar, it is credited to the campaign that first produced that customer, however long ago that was.
Can I see LTV and payback by channel?
Yes. Because renewals stay attached to the original source, each channel carries a real lifetime value and a payback period alongside cost per acquisition, which is usually where the ranking of channels changes most against a first-order view.
Are refunds and churn taken back out of the numbers?
Yes. Refunds, failed payments, and cancellations are applied against the channel that earned the original revenue, so a source with a high refund rate stops looking better than it is.