Quick overview
This workflow receives Paddle webhook events, verifies the Paddle-Signature to block forged requests, and for each completed sale formats a net-earnings alert message and sends it to Slack, Discord, and/or Telegram via simple webhooks.
How it works
- Receives a POST webhook from Paddle at the configured endpoint with the raw request body enabled.
- Verifies the request is authentic by validating the
Paddle-Signature header using HMAC-SHA256 over ts:rawBody with your Paddle notification secret.
- Checks that the event type is
transaction.completed and ignores other Paddle events.
- Extracts transaction totals (total, fee, earnings, currency) and formats a readable alert message, handling zero-decimal currencies.
- Sends the message to Slack via an incoming webhook.
- Sends the same message to Discord via a channel webhook.
- Sends the same message to Telegram via the Bot API
sendMessage endpoint.
Setup
- In Paddle, create or edit a Notifications destination, subscribe it to
transaction.completed, and copy the n8n Production webhook URL into Paddle’s destination URL.
- Paste your Paddle notification webhook secret (from Paddle Developer tools → Notifications) into the signature verification code.
- Add your Slack incoming webhook URL and/or Discord webhook URL in the corresponding HTTP requests, and remove any alert branches you don’t use.
- Create a Telegram bot with BotFather, then set the bot token in the Telegram request URL and the target
chat_id in the request body.
Requirements
- A Paddle account (sandbox or live) with access to Developer tools → Notifications, and at least one destination: a Slack incoming webhook, a Discord channel webhook, or a Telegram bot (token + chat id). Everything runs over plain HTTP Request nodes — no OAuth, no community nodes, no n8n credentials to configure.
Customization
- Alert on more events: subscribe the Paddle destination to transaction.refunded or subscription.canceled too and duplicate the If branch. Edit the message format in the Build Alert Message node — all of Paddle's transaction fields are available there. Delete the channel branches you don't use.
Additional info
Unlike most webhook templates, this one verifies Paddle's HMAC signature (SHA-256 over ts:rawBody, timing-safe compare) and rejects unsigned requests — nobody who finds your webhook URL can spam you with fake sales. Amounts are shown as what you actually keep after Paddle's fee, and zero-decimal currencies (JPY, KRW, VND, ISK) are formatted correctly.