Paddle Integration

Set up HookWatch to receive Paddle webhooks for billing events like subscription changes, completed transactions, and payment method updates.

Prerequisites

Step 1: Create a HookWatch endpoint

  1. Go to your Endpoints page
  2. Click "Create Endpoint"
  3. Enter a name like "Paddle Webhooks"
  4. Enter your destination URL (where you want webhooks forwarded)
  5. Copy the generated webhook URL

Your HookWatch URL will look like:

https://hook.hookwatch.dev/wh/abc123xyz

Step 2: Configure Paddle notification destination

  1. Go to the Paddle Dashboard
  2. Navigate to Developer Tools > Notifications
  3. Click "New destination"
  4. Enter a description like "HookWatch"
  5. Paste your HookWatch URL in the "URL" field
  6. Select the event types you want to subscribe to
  7. Click "Save destination"

To get the webhook secret, go to Developer Tools > Notifications and copy the secret key shown for your notification destination.

Common event types:

subscription.created
subscription.updated
subscription.canceled
subscription.past_due
transaction.completed
transaction.payment_failed
customer.created
customer.updated

Step 3: Verify webhooks on your server

Paddle signs webhook payloads using HMAC-SHA256 with a specific signature format. HookWatch forwards the Paddle-Signature header which contains a timestamp and hash in the format ts=timestamp;h1=hash.

Node.js / Express

Important

Paddle Billing (v2) uses a different signature format than Paddle Classic. Make sure you're using the correct verification method for your Paddle version.

Paddle webhook headers

HookWatch forwards all Paddle headers. Here are the important ones:

HeaderDescription
Paddle-SignatureSignature with timestamp and HMAC hash (ts=...;h1=...)
Content-TypeAlways application/json

Paddle webhook payload structure

Paddle Billing sends a consistent JSON payload structure:

FieldDescription
event_idUnique identifier for this event
event_typeThe event type (e.g., subscription.created)
occurred_atISO 8601 timestamp of when the event occurred
dataThe full resource object affected by the event

Testing the integration

Paddle provides tools for testing webhooks:

  1. Use the Paddle Sandbox environment for testing
  2. Create a test subscription using the Paddle.js checkout in sandbox mode
  3. Use the "Simulate" button next to your notification destination to send test events
  4. Check your HookWatch Events page to see the events

Tip

Paddle sandbox and production environments use different API keys and webhook secrets. Make sure you're using the correct credentials for each environment.

Common issues

Signature verification fails

Make sure you're correctly parsing the Paddle-Signature header format. The signed payload is the timestamp concatenated with a colon and the raw request body.

Sandbox vs. production events

Sandbox and production use separate notification destinations. Events from sandbox won't appear in your production webhook, and vice versa.

Missing event types

Make sure you've subscribed to the specific event types you need in the notification destination settings. Paddle doesn't send events you haven't explicitly subscribed to.