The moment it happens
Announce new Paddle subscribers in Slack
Each new subscriber shows up in your channel with their plan and price the moment they sign up.
- Runs
- The moment it happens
- Apps
- Paddle
- AI
- Not needed
- Access
- read (customers, subscriptions); notification settings
Send this to your assistant
Create a ClickRuntime automation: when someone starts a subscription in Paddle, post their email, plan name and monthly amount to #revenue in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A SaaS founder selling through Paddle usually learns about a new subscriber days later, when someone opens the revenue dashboard or a monthly report lands. By then the welcome moment has passed. The customer paid, got a receipt, and heard nothing human, and nobody noticed that the plan they picked was the pricey annual one or that a trial converted overnight.
Each time Paddle sends a subscription created event, the signature on the request is checked against your Paddle-Signature secret, and only genuine events go further. A Slack message then names the customer, the plan and the price, so the channel shows sign-ups as they happen instead of after the fact.
It suits small teams where the founder, support and sales all watch the same channel, and early-stage products where every single new subscriber is still worth a personal note.
What you get out of it
A welcome while interest is hot
Someone who just paid is at their most engaged. A message in Slack lets a founder send a short personal email within the hour, which tends to surface setup problems and questions before they turn into a quiet cancellation.
Everyone sees growth as it happens
Posting each new subscriber into a channel gives support, sales and engineering a shared pulse. A slow week looks slow and a good day is noticed, without anyone needing to log in and refresh a report.
Learn which plans actually sell
Seeing plan and price on every message builds an honest picture of the mix. If the annual tier keeps winning or nobody picks the cheapest one, you notice within a couple of weeks instead of at quarter end.
Spot onboarding gaps early
When a subscriber appears in Slack, someone can check that their account was provisioned and they received access. A broken fulfillment hook then gets caught after one customer, not after fifty.
Fake events never reach the channel
The Paddle-Signature check means a forged or replayed request cannot post a made-up sign-up. The numbers your team sees in Slack can be trusted when they are quoted in planning or to investors.
How it works
What happens, step by step
When someone subscribes through Paddle, Paddle tells ClickRuntime straight away.
ClickRuntime checks the message really came from Paddle.
A message goes to your #revenue Slack channel with the customer's email, the plan and the price.
Before it runs live
- Connect Paddle
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Paddle steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http, notify
import hashlib, hmac
def paddle_signed(event):
parts = dict(p.split("=", 1) for p in event.header("Paddle-Signature").split(";"))
expected = hmac.new(credentials.secret("PADDLE_WEBHOOK_SECRET").encode(),
f"{parts['ts']}:{event.body}".encode(), hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, parts["h1"])
@on_event
def handle(event):
if not paddle_signed(event):
return {"posted": False, "reason": "bad signature"}
body = event.json
if body["event_type"] != "subscription.created":
return {"posted": False}
sub = body["data"]
customer = http.get(f"https://api.paddle.com/customers/{sub['customer_id']}",
headers={"Authorization": f"Bearer {credentials.secret('PADDLE_API_KEY')}"}).json()["data"]
price = sub["items"][0]["price"]
amount = int(price["unit_price"]["amount"]) / 100
notify.slack(f"🎉 New subscription: {customer['email']} on *{price['description']}*, "
f"{price['unit_price']['currency_code']} {amount:,.2f}/{price['billing_cycle']['interval']}",
channel="#revenue")
return {"subscription": sub["id"]}FAQ
Common questions
Does it fire for trials as well as paid subscriptions?
Where do I find the secret used to verify Paddle-Signature?
Can I post to a different channel for annual plans?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Hear about Paddle cancellations before they take effect
You learn when a customer schedules a cancellation, not just when access ends, so there's time to reach out.
See how it worksGet an email before your Paddle API key expires
A week's warning before your key stops working, so you can replace it without any automation going quiet.
See how it worksFlag declined Paddle payments in Slack
When a card is declined, you see who it was, how much and why, once per transaction even while Paddle retries.
See how it worksKeep exploring
Set up “Announce new Paddle subscribers in Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.