Paddle events, straight into Custom Webhook
Every transaction, renewal, or failed payment — posted to Custom Webhook the moment it happens. No automation-platform subscription just to relay one webhook.
Why not call Paddle's API directly from your own endpoint? You can — but then you own Paddle's signature verification, retry handling, and payload quirks yourself. ZestyGlue verifies the signature, normalizes the event into a clean JSON body, and POSTs it to your URL — you only write the part that's actually yours.
What it looks like
ZestyGlue
Paddle — Transaction · Completed
29.00 USD
A real Paddle event, shown as ZestyGlue formats it for Custom Webhook.
Setup — about two minutes
- Create the connector. In ZestyGlue, start a new Paddle → Custom Webhook connector. You'll get a unique webhook URL right away.
- Point Paddle at it. Go to Developer Tools → Notifications → add destination, paste in your ZestyGlue webhook URL, and select the events you want.
- Copy the secret key. Paddle shows a secret key for your notification destination — paste that into ZestyGlue's connector setup so every event can be verified as genuinely from Paddle.
- Point it at your endpoint. Paste the URL of your own server, script, or automation tool's webhook receiver — no signup, no app to install.
Under the hood: Paddle signs its payload with a timestamped HMAC in the paddle-signature header — ZestyGlue verifies both the signature and, implicitly, that the request wasn't replayed from days ago.
Events you can forward
transaction.completed
transaction.payment_failed
subscription.created
subscription.canceled
subscription.updated
Questions
Is my Paddle Webhook Secret Key safe with ZestyGlue?
It's encrypted at rest with Fernet symmetric encryption before it ever touches disk, it's never logged, and it's never displayed again in the dashboard after you enter it — only a masked placeholder is shown.
Does this work with Paddle Classic or only Paddle Billing?
This connector is built for Paddle's current Billing API (v2) webhook format. Paddle Classic uses a different payload shape and isn't supported.
Can I track failed renewals separately?
Yes — subscribe to transaction.payment_failed as its own event alongside transaction.completed.
Do I need to write my own server to receive this?
Yes — this destination expects your own endpoint (or a tool like a serverless function, a script, or another automation platform's webhook trigger) to receive the POST. If you don't have one yet, pick one of ZestyGlue's built-in destinations instead.
What happens if my ZestyGlue subscription lapses?
Events are silently dropped rather than causing errors on Paddle's side — Paddle never sees a failure response, so it won't retry aggressively or flag your webhook as broken. Your dashboard will simply stop showing new events until you resubscribe.