Webhooks & APIIntegrations

Paddle Billing v2

Receive Paddle subscription events in Wexio flows

Wexio has native Paddle Billing v2 signature verification. Paste the notification-destination signing secret (the pdl_ntfset_… value) and Wexio handles the Paddle-Signature header — including multi-h1 rotation.

This mode covers Paddle Billing v2 (the current product). Paddle Classic uses RSA signatures and is not yet natively supported — proxy Paddle Classic through Make, n8n, or Zapier for now.

Provider docs: Setting up webhooks in Paddle

Setup

1. Create an inbound Wexio connection

Settings → Webhooks & API → New connection → Inbound. Use the Paddle Billing v2 preset (or pick Auth mode: Paddle manually).

Copy the Wexio endpoint URL.

2. Register the destination in Paddle

In Paddle → Developer Tools → Notifications → Add destination.

FieldValue
Endpoint URLThe Wexio endpoint URL
EventsPick the events you care about (subscription.created, transaction.completed, customer.created, etc.)

Paddle shows the signing secret (pdl_ntfset_…) once. Copy it into Wexio's Signing secret field.

3. Configure contact resolution

Identifier typeJSON pathNotes
Email$.data.customer.emailCustomer events
Email$.data.billing_details.emailTransaction events

4. Capture the schema

Tap Capture schema in Wexio. Trigger a test event from the Paddle dashboard (their Simulate event feature works), or wait for a real one.

5. Bind a flow

Add a Webhook Received trigger on a flow, pick this connection, and branch on {{webhook.event_type}}.

Timestamp Tolerance

Paddle signs with a timestamp and Wexio rejects anything outside ±5 minutes. If Paddle retries a delayed event past the window, it's rejected — Paddle will eventually stop retrying.

Rotation

Paddle supports dual-signing during rotation:

  1. In Paddle, click the rotate button on the destination.
  2. Paste the new secret into Wexio via Rotate secret.
  3. Paddle signs with both secrets during the grace window.

Troubleshooting

SymptomFix
UNAUTHORIZED: Paddle signature mismatchRe-copy the signing secret; confirm the environment (sandbox vs live)
IDENTIFIER_NOT_FOUNDThe customer's email isn't in Wexio yet — create the contact via People API or branch in-flow
INVALID_JSONCheck your Paddle destination is set to v2 (not Classic)

On this page