Integrations·Payments

See which channel brought in each Stripe payment.

Connect Stripe with a restricted key. One-off purchases, subscription charges and refunds then arrive in Spreelytics by themselves, each credited to the channel that brought the buyer in.

stripe · payments · 30d

purchase · Paid social$59
purchase · Organic search$129
purchase · Direct$29

revenue by channel · last-touch · 30-day window

Organic search 34%Paid social 28%Direct 21%

What it does

Your Stripe revenue, by channel.

Payments arrive as purchase events and flow into goals, the overview and the acquisition reports.

Payments on their own

Connecting creates the webhook in your Stripe account. From then on, each payment arrives by itself. You do not need to send revenue events.

  • One-off payments and subscription charges
  • Full and partial refunds
  • Counted once, even when Stripe retries

Attributed to a channel

Put the visitor id in the payment’s metadata. Each payment, including renewals, is then tied to the visit that led to it and credited by last-touch or linear.

  • spreelytics_visitor_id in the metadata
  • Renewals keep their channel
  • Last-touch or linear, 1–90 day window

One reporting currency

Charge in as many currencies as you like. Each payment is converted once into your reporting currency at the rate for the day it happened, then frozen.

  • Converted at that day’s rate
  • Past revenue never moves
  • The original amount is kept

How it works

Use it in three steps.

  1. 01

    Connect Stripe

    In Settings → Revenue, paste a restricted key that can write Webhook Endpoints and read your payments. Connecting creates the webhook for you.

  2. 02

    Pass the visitor id

    Put Spreelytics.getVisitorId() in the metadata as spreelytics_visitor_id: payment_intent_data for one-off payments, subscription_data for subscriptions.

  3. 03

    Read revenue by channel

    From the moment you connect, payments land on the Revenue page, with MRR and ARR for subscriptions, and as purchase events in goals, the overview and the acquisition reports.

FAQ

Questions about this one.

What people ask before they switch it on.

What key does it need?

A restricted key with Webhook Endpoints set to Write, and Checkout Sessions, PaymentIntents, Invoices and Charges set to Read. The Open Stripe button in the app picks all five for you. We use the key to create the webhook that delivers your payments and to look up product names. It also reads your past payments when you import them. It never moves money. Use a live key, because test-mode payments would be counted as revenue.

Where does the visitor id go?

For a one-off Checkout payment, in both the Checkout Session’s metadata and payment_intent_data.metadata. For a subscription, in subscription_data.metadata, so every renewal carries it too.

Payment Links, Buy Buttons and Pricing Tables cannot take a value per visitor, so payments through them are counted without a channel.

What if a payment has no visitor id?

It is still recorded and counts toward your totals. It just cannot be traced to a channel. The Channels list counts it as Direct and the Sources list as Direct/None. The URLs and UTM lists leave it out.

Do payments count toward my event allowance?

Each payment counts as one event, the same as a custom event. Refunds do not count. Payments you import from before you connected do not count either.

Can I send payments from my own server as well?

Yes, for payments Stripe does not see. The revenue API is in the docs. If you also send a Stripe payment that way under a different id, it is counted twice.

See your own numbers today.

Free up to 100k events a month · no credit card

Contact

Tell us what you need.

A real person reads these. We usually reply within one working day.

Or email us directly at contact@spreelytics.com.