Send verified Paddle sale alerts with signature checks to Slack, Discord and Telegram
Go to WorkflowDescription
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.