Skip to content

The moment it happens

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.

Runs
The moment it happens
Apps
Paddle
AI
Not needed
Access
read

Send this to your assistant

Create a ClickRuntime automation: post to #churn in Slack when a Paddle subscription is set to cancel at the end of its term, and again when it is actually cancelled. Include the customer email, plan and the cancellation date.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A SaaS founder sees a cancellation in Paddle only when she opens the dashboard, and by then it is not clear whether the customer cancelled today or weeks ago. Paddle subscriptions often cancel at the end of the billing period, so the customer is still active for another month, which is the best time to win them back. If you only look at subscriptions that have actually ended, you learn about churn when it is too late to do anything about it.

When a subscription is updated or cancelled in Paddle, the event reaches ClickRuntime, which checks for a scheduled change with the action cancel, or a status of canceled. A post goes to your channel with the customer, the plan, the amount and the date it takes effect, whether that is now or at the end of the period.

It suits founders, customer success teams and finance leads who want to catch churn at the earliest signal.

What you get out of it

  • Customers can be saved before they leave

    A cancellation scheduled for the end of the month leaves weeks to reach out, ask what went wrong and offer help or a discount. After it takes effect, a win-back is far less likely. It is often the single best moment to learn what went wrong and fix it.

  • Churn is seen at the earliest point

    Hearing about a scheduled cancellation on the day it is requested gives you a real-time signal about product or pricing problems, not a delayed monthly figure. That quick feedback is worth far more than any number in a monthly churn report.

  • Revenue forecasts are more accurate

    Knowing which subscriptions will end, and when, lets finance adjust projected recurring revenue before the drop shows up. Surprises in cash flow are avoided. That early warning helps with hiring, spending and planning decisions that depend on recurring revenue.

  • Reasons can be collected promptly

    A quick message to the customer a day after they cancel often gets an honest answer. A message three weeks later does not, because the memory has faded. That is the reason many founders send a short personal note the day after a cancellation.

  • The team shares the signal

    Posting cancellations in a channel keeps product, support and sales aware of churn. Patterns, such as one plan losing many customers, are noticed sooner. That shared awareness often turns a vague sense of churn into a specific problem you can fix.

How it works

What happens, step by step

  1. When a Paddle subscription is set to cancel, or is cancelled outright, Paddle tells ClickRuntime straight away.

  2. ClickRuntime works out which of the two it is and, for a scheduled cancellation, the date it takes effect.

  3. A message goes to your #churn Slack channel with the customer, the plan and the cancellation date, so there is still time to reach out.

Before it runs live

  • Connect Paddle
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Hear about Paddle cancellations before they take effectjust nowSucceeded
Slack · #churnSubscription set to cancel: hello@acme.example on *Team annual*, cancellation date 2026-11-30

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
cancellation_alert_scheduled_and_actual.pyexample
from clickruntime import on_event, credentials, http, notify

@on_event
def handle(event):
    body = event.json
    sub = body["data"]
    scheduled = (sub.get("scheduled_change") or {}).get("action") == "cancel"
    if body["event_type"] == "subscription.canceled":
        what, when = "cancelled", sub["canceled_at"]
    elif body["event_type"] == "subscription.updated" and scheduled:
        what, when = "set to cancel", sub["scheduled_change"]["effective_at"]
    else:
        return {"posted": False}
    customer = http.get(f"https://api.paddle.com/customers/{sub['customer_id']}",
                        headers={"Authorization": f"Bearer {credentials.secret('PADDLE_API_KEY')}"}).json()["data"]
    plan = sub["items"][0]["price"]["description"]
    notify.slack(f"Subscription {what}: {customer['email']} on *{plan}*, cancellation date {when[:10]}",
                 channel="#churn")
    return {"subscription": sub["id"], "status": what}

FAQ

Common questions

What is the difference between scheduled and actual cancellation?
A scheduled cancellation means the customer asked to cancel and Paddle will end the subscription at a future date, usually the end of the period. An actual cancellation means the subscription has now ended and status is canceled.
Will I get one alert or two for the same customer?
You can receive both, one when the cancellation is scheduled and one when it takes effect, which is useful for tracking. If you prefer one alert per customer, the second can be skipped. Both cases are reported separately and clearly labeled.
Does it show why the customer cancelled?
Paddle includes the reason only where the customer supplied one through a cancellation flow you built or through Paddle's own tools. If no reason is recorded, the alert simply states the plan, amount and dates.
What permissions does it need?
read. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Hear about Paddle cancellations before they take effect” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.