The moment it happens
Track failed Recurly renewals and dunning in Slack
Each failed renewal or dunning step appears in your channel with the account, amount and plan.
- Runs
- The moment it happens
- Apps
- Recurly
- AI
- Not needed
- Access
- private API key
Send this to your assistant
Create a ClickRuntime automation: when Recurly reports a failed payment or a new dunning event, post the account name, amount owed and plan to #collections in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A Recurly renewal fails because the card expired, and Recurly begins its dunning cycle, sending emails and retrying on a schedule. For most customers that works. For an account paying $3,000 a year, waiting for automated emails is a gamble, and the sales rep who owns the relationship has no idea that the payment is in trouble.
When a renewal payment fails, ClickRuntime receives the event, fetches the account from Recurly to get the company and contact details, and posts a message in Slack that includes the amount and the number of retry attempts so far. The account owner can step in during the dunning window instead of discovering a lapsed subscription after the final retry has failed.
It suits subscription businesses with account managers or founders who want to personally rescue valuable renewals.
What you get out of it
Personal outreach beats automated emails
A short note from the account owner usually recovers a payment faster than a third automated reminder. The alert gives that person the chance to write it. People often answer a real person even when they ignore reminders.
Retry count shows how urgent it is
A first failure may resolve itself, while the third is close to a lapse. Seeing the attempt number tells you whether to wait or to call right now. You can spend your effort where the risk is highest.
Account details are one click away
The message includes the account name and contact, so there is no lookup in the Recurly admin. Time between seeing the alert and sending a message drops to a minute. Nobody needs to search for who the customer is.
Involuntary churn shrinks
Customers who lose their subscription because of a failed card never chose to leave. Recovering even a few each month adds up over a year of renewals. Those customers did nothing wrong except have a card expire.
Finance and sales see the same facts
Posting in a shared channel means both teams know about the failed payment. Sales avoids upselling a customer whose card is declining, while finance knows the cash is delayed. Both can plan accordingly.
How it works
What happens, step by step
When a Recurly payment fails or a customer moves to a new stage of payment chasing, Recurly tells ClickRuntime straight away.
ClickRuntime looks up the account to find the company name, the plan and how much is owed.
A message goes to your #collections Slack channel with those details.
Before it runs live
- Connect Recurly
- 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 Recurly steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http, notify
API = "https://v3.recurly.com"
def recurly(path):
resp = http.get(f"{API}{path}", auth=(credentials.secret("RECURLY_API_KEY"), ""),
headers={"Accept": "application/vnd.recurly.v2021-02-25+json"})
resp.raise_for_status()
return resp.json()
@on_event
def handle(event):
body = event.json
if (body.get("object_type"), body.get("event_type")) not in {("payment", "failed"), ("charge_invoice", "past_due")}:
return {"posted": False}
account = recurly(f"/accounts/code-{body['account_code']}")
owed = recurly(f"/accounts/{account['id']}/balance")["balances"]
subs = recurly(f"/accounts/{account['id']}/subscriptions?state=active")["data"]
name = account.get("company") or f"{account.get('first_name', '')} {account.get('last_name', '')}".strip()
amount = ", ".join(f"{b['currency']} {b['amount']:,.2f}" for b in owed) or "0"
plan = subs[0]["plan"]["name"] if subs else "no active plan"
notify.slack(f"⚠️ {name}: payment problem ({body['event_type']}). Owes {amount} on *{plan}*", channel="#collections")
return {"account": body["account_code"]}FAQ
Common questions
What is dunning in Recurly?
Which Recurly notification does this rely on?
Can I limit the Slack message to larger accounts?
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
Get a Slack message when a Recurly subscription is cancelled
You hear about cancellations as they happen, so key accounts get a call before they leave.
See how it worksPost new Recurly subscriptions to Slack
Every new subscription shows up with the account, plan and price as soon as it starts.
See how it worksEmail a weekly count of new and cancelled subscriptions
Each Monday you see how many subscriptions you gained and lost the week before.
See how it worksKeep exploring
Set up “Track failed Recurly renewals and dunning in Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
