[Docs](https://userjourney.dev/docs/) · Payments

# Connect Paddle to UserJourney

For Paddle Billing. Trials, payments, failed charges and cancellations, on the person who made them, and in Traffic as revenue per channel.

## 1. Connect

In the dashboard, Setup › Payments › Paddle, paste an API key with the **notification settings** permission. UserJourney creates the notification destination in your Paddle account, keeps its secret and forgets the key. Sandbox keys work too.

Or add it by hand: in Paddle › Developer tools › Notifications, add the URL shown on the Setup page, with these events, and paste its secret key (`pdl_ntfset_…`):

```
customer.created
customer.updated
subscription.created
subscription.activated
subscription.trialing
subscription.updated
subscription.past_due
subscription.paused
subscription.resumed
subscription.canceled
transaction.payment_failed
transaction.past_due
```

## 2. Match each payment to its person

Customers are matched by email. To be exact, even when someone pays with another address, pass their id in the checkout's custom data:

```
Paddle.Checkout.open({
  items: [{ priceId: "pri_…", quantity: 1 }],
  customData: { uj_id: window.uj?.id() }, // the signed-in person, as you passed it to identify()
});
```

## Check it works

Make a purchase in the sandbox, or send a test notification from Paddle: the person's timeline shows the trial or the payment, and Today and Traffic count them as paying.

[Everything else is in the docs →](https://userjourney.dev/docs/)

## See where your users go

Free for your first 250 users. One script and one line of code.

[Start for free](https://userjourney.dev/app)[Read the quickstart](https://userjourney.dev/docs/)
