Usermaven
Dark mode

Connect Stripe to Usermaven

What you'll build: every Stripe payment (or subscription, trial, or refund) recorded in Usermaven as a verified event with real revenue , attributed to the marketing that earned it. Time: about 5 minutes. You'll need: access to your Stripe Dashboard and permission to create integrations in Usermaven.

Your website can see a customer reach checkout, but the payment itself happens on Stripe's servers. Connecting Stripe closes that gap: Usermaven records the money as it actually moves, straight from the source of truth.

Choose what to track

Each source tracks one Stripe event. These are the available triggers:

Trigger

Stripe event

Good for

New payment (recommended)

checkout.session.completed

Your main purchase conversion

Recurring payment

invoice.paid

Renewals and subscription revenue

New subscription

customer.subscription.created

Subscription starts

New trial

customer.subscription.created

Trial starts

Canceled subscription

customer.subscription.deleted

Churn tracking

New refund

charge.refunded

Refund tracking

New customer

customer.created

New Stripe customers

Start with New payment. If you also want renewals, come back and create a second source for Recurring payment, don't try to catch both with one source.

Step 1: Create the source

  1. In Usermaven, go to Events → Event sources and click New event source.

  2. Pick Stripe from the catalog.

  3. Choose the event you want to track, New payment is marked as recommended.

  4. Name the source (for example, Stripe payments) and click Create webhook URL.

Keep this page open, Usermaven is now listening for a test event.

image.png

Treat the webhook URL like a password. Anyone who has it can send events to your workspace. If it's ever exposed, you can rotate it later from the source's settings.

Step 2: Add the endpoint in Stripe

  1. In your Stripe Dashboard, go to Developers → Webhooks and add a new endpoint.

  2. Paste your Usermaven webhook URL as the destination.

  3. Select only the event that matches your trigger, for New payment, that's checkout.session.completed. One Stripe event per endpoint keeps your mapping clean.

  4. Save the endpoint, then reveal and copy its signing secret (it starts with whsec_). You'll need it in the last step.

Step 3: Send a test event

Trigger a test from Stripe, use the endpoint's Send test event option, or complete a checkout in test mode. Back in Usermaven, you'll see "Test event received, review it below" with the raw payload Stripe sent.

In a hurry, or can't trigger a test right now? Click "Don't want to wait for a test event?" and use the bundled Stripe sample instead.

Test events are captured for mapping and never added to analytics.

Step 4: Map the fields

Usermaven pre-fills the standard Stripe mapping; review it and adjust if needed:

Usermaven field

Stripe field

Note

Event name

purchase (fixed)

Or any name that fits your reporting

Email

data.object.customer_details.email

How the payment gets matched to a person

Revenue

data.object.amount_total

Minor units transform — Stripe sends cents, so 12900 becomes 129.00

Currency

data.object.currency

Uppercased to ISO format

External ID

data.object.id

Protects you from duplicates if Stripe retries

Event time

created

Unix timestamp

Also keep the filter type equals checkout.session.completed , it makes sure this source only ever records the event it's meant to.

Click Preview event to see exactly what will be recorded.

Step 5: Review and activate

The review screen shows how your sample payload becomes a Usermaven event. One important warning appears here:

Use one source of truth for purchases. If Stripe reports your sales, don't also track purchases with an on-site pixel event, the same sale counted twice means revenue counted twice.

Because payment data must be trustworthy, Stripe sources require signature verification before they can go live. Paste the signing secret you copied in Step 2, then click Activate and open source. From now on, Usermaven checks Stripe's signature on every delivery and rejects anything that wasn't genuinely sent by Stripe.

Verify it's working

Make a test purchase (or wait for a real one), then open the source's Event log. You should see the delivery marked Accepted, with the person, revenue, and event name recorded. The event also appears in Events activity, filtered by this source.

Tracking recurring payments too

Create a second Stripe source with the Recurring payment trigger (invoice.paid) and map:

  • Email → data.object.customer_email

  • Revenue → data.object.amount_paid (minor units)

  • External ID → data.object.id

Give it a distinct event name like recurring_payment so one-off purchases and renewals stay separate in your reports.

If something goes wrong

  • Signature verification failed, re-copy the signing secret from the exact Stripe endpoint you created; each endpoint has its own secret.

  • Delivery marked Duplicate, that's the External ID doing its job: Stripe retried, Usermaven counted it once.

  • Identity unresolved, the email matched more than one person in Usermaven. See Event Sources Troubleshooting for the fix.

More outcomes and fixes: Event Sources Troubleshooting.


Was this article helpful?