Connecting Stripe lets Zenovay show revenue alongside your traffic data — which marketing source produced the paying customer, which page they converted on, which campaign closed the deal.
There are two ways to connect, depending on whether you want a guided UI or a custom server-to-server flow.
Option A: OAuth connect (recommended)
The easiest path. Zenovay reads completed payments and disputes from your Stripe account in read-only mode.
Open the integration page
In
app.zenovay.com, go to Settings → Integrations → Stripe.Click 'Connect Stripe'
You'll be redirected to Stripe's OAuth screen. Sign in with the Stripe owner account, review the requested read-only scopes, and click Authorize.
Pick the Zenovay website to attribute to
If you have multiple websites, choose which one this Stripe account corresponds to. Each Stripe connection maps to one Zenovay website.
Wait for backfill
Zenovay backfills the last 90 days of payments by default. For longer history, contact support — we can extend up to your plan's data retention.
Once connected, the Revenue tab on your dashboard shows MRR, ARR, ARPU, and revenue-by-source charts.
Option B: Webhook (custom)
If you have an existing Stripe webhook endpoint and don't want to use OAuth, point Stripe at Zenovay's webhook receiver instead.
- In Stripe Dashboard, go to Developers → Webhooks → Add endpoint.
- Endpoint URL:
https://api.zenovay.com/webhooks/stripe?website=YOUR_WEBSITE_ID&secret=YOUR_INGEST_SECRET - Listen to events:
checkout.session.completedinvoice.paidcharge.refundedcustomer.subscription.updatedcustomer.subscription.deleted
- Save and copy the signing secret.
- In Zenovay's Settings → Integrations → Stripe, paste the signing secret to enable verification.
YOUR_INGEST_SECRET is generated from the integration page and is unique per site. Keep it secret — anyone with it can post fake events to your account.
Attributing a payment to a visitor
For payment-to-traffic-source attribution to work, the visitor's anonymous Zenovay ID has to make it onto the Stripe customer record. The simplest way is to attach it as Stripe metadata at checkout:
// On your checkout server
const visitorId = req.cookies['zv_visitor_id'] // or however your client passes it
stripe.checkout.sessions.create({
// ...
metadata: { zenovay_visitor: visitorId }
})
When the payment completes, Zenovay's webhook handler reads metadata.zenovay_visitor and joins the payment to the visitor's session — including the source, campaign, and pages they visited before paying.
What attribution model is used
Zenovay supports two attribution windows:
- First-touch — credit goes to the source the visitor arrived from on their first session.
- Last-touch — credit goes to the source they arrived from on the session containing the payment.
Both are computed and shown side-by-side. You can switch between them in the Revenue tab. We do not yet ship multi-touch (linear, time-decay, U-shaped) attribution — that's on the roadmap.
Disconnecting
In Settings → Integrations → Stripe, click Disconnect. Existing payment records stay in your Zenovay dashboard for the duration of your data retention window. Stripe will stop sending new events. To delete the historical revenue data too, follow with Delete revenue history.