Usermaven
Dark mode

Connect Paddle to Usermaven

What you'll build: every Paddle transaction or subscription change recorded in Usermaven as a verified event with real revenue. Time: about 5 minutes. You'll need: access to your Paddle dashboard and permission to create integrations in Usermaven.

Usermaven supports both generations of Paddle, Paddle Billing (the current platform) and Paddle Classic (legacy). The setup flow is the same; the triggers and verification method differ, so check which one you're on before you start.

Choose what to track

Each source tracks one Paddle event:

Paddle Billing

Trigger

Paddle event

Good for

New payment

transaction.completed

Your main purchase conversion

New subscription

subscription.created

Subscription starts

Subscription canceled

subscription.canceled

Churn tracking

Paddle Classic (legacy)

Trigger

Paddle alert

Good for

New payment

payment_succeeded

Purchases

Subscription canceled

subscription_cancelled

Churn tracking

Before you start (Paddle Billing only)

Paddle Billing transaction events don't include the customer's email by default. Pass it in the transaction's custom_data when you create the transaction, or better, pass your own stable user ID there. Without one of these, Usermaven has nothing to match the payment to a person with, and events will be rejected for missing an identifier.

Step 1: Create the source

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

  2. Pick Paddle from the catalog and choose your trigger.

  3. Name the source (for example, Paddle transactions) and click Create webhook URL.

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

image.png

Step 2: Add the webhook in Paddle

  1. In Paddle, open your notification / webhook settings and add a new destination.

  2. Paste your Usermaven webhook URL.

  3. Subscribe it to only the event that matches your trigger, for example transaction.completed.

  4. Copy the webhook's secret key (Billing) or your public key (Classic), you'll need it to activate.

Step 3: Send a test event

Use Paddle's webhook simulator (or complete a sandbox transaction). Usermaven shows "Test event received, review it below" with the raw payload. No test handy? Click "Don't want to wait for a test event?" and map from the bundled Paddle sample instead.

Step 4: Map the fields

Paddle Billing, the standard mapping for transaction.completed:

Usermaven field

Paddle field

Note

Event name

new__payment (fixed)

Or any name that fits your reporting

Email

data.custom_data.email

From the custom data you attach to transactions

Revenue

data.details.totals.total

Minor units transform — 12900 becomes 129.00

Currency

data.currency_code

Uppercased to ISO format

External ID

event_id

Protects against duplicate deliveries

Event time

occurred_at

Detected automatically

Paddle Classic — map email, sale_gross with the Strip symbols transform (Classic sends formatted amounts), currency, order_id as External ID, and event_time (Classic uses the YYYY-MM-DD HH:mm:ss format; the mapper handles it). Add a filter: alert_name equals payment_succeeded.

Click Preview event to see exactly what will be recorded.

Step 5: Review and activate

Like all billing sources, Paddle requires signature verification before it can go live; payment data has to be spoof-proof:

  • Paddle Billing (Paddle Billing HMAC): paste the webhook secret key. Usermaven verifies the Paddle-Signature header on every delivery.


  • Paddle Classic (Paddle Classic RSA): paste your Classic public key. Usermaven verifies the RSA p_signature on every delivery.

Heed the review-screen warning: use one source of truth for purchases. If Paddle reports your sales, don't also track them with an on-site pixel event, or revenue gets counted twice.

Click Activate and open source, and you're live.

Verify it's working

Run one sandbox or real transaction, then check the source's Event log for an Accepted delivery showing the right person, revenue, and currency. The event also appears in Events activity, filtered by this source.

If something goes wrong

  • Signature verification failed — make sure you pasted the secret for this exact webhook destination (Billing) or the correct public key (Classic).

  • No usable identity found (Billing) — the transaction had no custom_data.email or user ID. Fix the data you attach when creating transactions.

  • Revenue is not numeric (Classic) — make sure the Strip symbols transform is selected for sale_gross.

More outcomes and fixes: Event Sources Troubleshooting.


Was this article helpful?