Payment tracking
Revenue attribution for Stripe, Paddle, and Shopify
SourceLoop captures UTM parameters, click IDs (GCLID, fbclid, li_fat_id), referrer, and the visitor's full journey, then attaches them to every customer in Stripe, Shopify, Paddle, Polar.sh, Lemon Squeezy, and WooCommerce.
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.
How it works
Three steps from snippet to revenue tied back to source
One script, one OAuth connection, ROAS that reflects reality.
-
<script src="https://cdn.sourceloop.ai/sl.js" defer></script>
01Install the snippet
Drop one script tag in your <head>. Five minutes, no engineer required.
-
02Connect your payment platform
One-click OAuth into Stripe, Shopify, Paddle, Polar.sh, Lemon Squeezy, or WooCommerce. We match each customer to the visitor session.
- A
Acme Co
- Source Google / CPC
- First touch LinkedIn / Paid
- Projected LTV $2,376
03Revenue ties back to channel
Each customer lands in your CRM with attribution, MRR, ARR, and LTV linked. ROAS and payback reports work day one.
Payment tracking by platform
Tie revenue from Stripe, Shopify, Paddle, Polar.sh, Lemon Squeezy, and WooCommerce
One snippet, one OAuth, every payment attributed.
-
Stripe -
Shopify -
Paddle -
Polar.sh -
Lemon Squeezy -
WooCommerce
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 via OAuth. We match each new Stripe customer to the visitor session that brought them in, then attach the source, medium, campaign, and full journey to the customer record. The same flow works for Shopify, Paddle, Polar.sh, Lemon Squeezy, and WooCommerce.
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, persists it across the entire customer lifecycle, and writes it to the Stripe customer record at the moment of payment.
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. Subscription billing through Stripe, Paddle, Polar.sh, and Lemon Squeezy reports revenue movement back to the source automatically.
Can I track Shopify and WooCommerce orders with UTM and ad source?
Yes. SourceLoop captures attribution on first visit, persists it through add-to-cart and checkout, and attaches it to each Shopify or WooCommerce order. Thank-you-page tracking, post-purchase upsell flows, and multi-currency checkouts are all supported out of the box.
Can I sync customer revenue back to Google Ads, Meta, or LinkedIn?
Yes. With Conversion Sync, we push revenue events back to Google Ads (using GCLID, Wbraid, Gbraid), Meta CAPI, and LinkedIn CAPI so Smart Bidding optimizes against actual revenue, not just leads.
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 LTV and ROAS by channel become standard reports in the dashboard. You can break them down by source, campaign, content, and landing page.
Does this work with consent banners and GDPR?
Yes. We integrate with OneTrust, Cookiebot, Iubenda, Osano, and custom CMPs. When a visitor declines analytics or marketing cookies, we collect only minimal aggregated data in line with GDPR and the ePrivacy Directive. All cookies and local storage are 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 or Paddle, 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.