How to See Stripe Revenue Alongside Website Traffic
Stop switching tabs. Your traffic data is useless without knowing which visitors actually paid.
Here is a typical morning for an indie SaaS founder: open Plausible or GA, see 340 visitors yesterday. Open Stripe, see $0 in new revenue. Close both tabs, feel confused.
The two numbers sit in separate tools with no connection between them. You have traffic data and revenue data, but no way to answer the question that actually matters: which traffic is turning into money?
This article covers three approaches to connecting Stripe revenue with your website analytics — from manual hacks to a native integration.
Why the gap exists
Analytics tools track page views, sessions, and referrers. Payment processors track charges, subscriptions, and refunds. They were built independently, and joining the two requires either sharing a common identifier (like a user ID or session ID) or relying on a third-party integration layer.
Without that connection, you end up with two isolated datasets:
- 340 visitors yesterday
- 62% from organic search
- Top page: /pricing
- Avg. session: 2m 14s
- 3 new subscriptions
- $147 MRR added
- 1 churned customer
- Net new: +$117
Both datasets are useful in isolation. Neither answers the question: which referrer source, which landing page, or which campaign drove those 3 subscriptions?
Approach 1: UTM parameters + Stripe metadata (manual)
The most common workaround is to pass UTM parameters through your checkout flow and store them in Stripe customer metadata.
- 1Read UTM params from the URL on landing and store them in
localStorage. - 2When the user hits your checkout, read those values and pass them to Stripe as customer metadata via your backend.
- 3Export Stripe data periodically and join it with your analytics export in a spreadsheet or BI tool.
Downsides
- Requires custom code on every page and in your checkout flow
- UTM data is lost when a user visits from multiple sources before converting
- Joining the data is a manual, error-prone process
Approach 2: Automation platforms (Zapier / n8n)
Tools like Zapier or n8n can listen to Stripe webhook events (e.g., customer.subscription.created) and fire a custom event into your analytics tool.
This works if your analytics tool supports custom revenue events (Plausible does, Fathom does not). You set up a Zap that triggers on new Stripe charges and sends the revenue amount as a custom event.
Downsides
- Extra cost: Zapier paid plans are required for webhook triggers
- Revenue events appear in your analytics but are not automatically linked to visitor sessions or referrers
- Fragile: Zaps break silently when webhook payloads change
Approach 3: Native Stripe integration (minimal setup)
The cleanest approach is an analytics tool that connects directly to Stripe — no custom events, no Zapier, no spreadsheets.
Datibase connects to your Stripe account from the dashboard settings. Once connected, revenue data appears alongside your traffic data automatically: visitors, referrers, top pages, and revenue in one view.
What you get
- Revenue trends next to visitor trends — same time range, same dashboard
- Revenue by referrer source — see which traffic actually converts
- Works with Stripe and Polar
- Updates in real time as Stripe sends webhooks
— Connect in minutes, not hours —
1. Dashboard → Settings → Revenue → Connect Stripe
2. Add datibase.identify({ customerId }) after login
3. Revenue by source appears on your dashboard
The one line of code in step 2 links your Stripe customer ID to the visitor session. This is unavoidable — only your app knows which visitor maps to which Stripe customer. The difference from Approach 1 is that Datibase handles all the attribution logic server-side; you just call the function once after login.
Which approach is right for you?
| UTM + metadata | Zapier / n8n | Native integration | |
|---|---|---|---|
| Setup time | Hours to days | 30–60 min | Under 5 min |
| Code required | Yes | Minimal | 1 line |
| Extra cost | No | Yes (Zapier) | No |
| Reliability | Error-prone | Fragile | Maintained |
The bottom line
Traffic without revenue context is vanity data. If you're running a paid product, the only metric that matters is which visitors convert — and that requires connecting your analytics tool to your payment processor.
The manual approaches work, but they require ongoing maintenance and engineering time that most indie founders can't afford. A native integration is the only approach that stays out of your way and keeps working as your product evolves.
Connect Stripe to your analytics in minutes
Datibase links your Stripe or Polar account natively — no code, no Zapier, no spreadsheets.