Triage failed Recharge payments before subscribers churn
When a Recharge charge fails, your retention team gets a ranked Slack alert with the reason, the subscriber's value, and what to do next.
When Recharge tells me a charge has failed, I want an agent to triage the failed payment straight away instead of letting it sit silently in the dunning queue. Build this as a webhook workflow that listens for the Recharge charge/failed topic on API version 2021-11.
Start with the failed charge itself. Use the Recharge Get Charge operation with the charge id from the webhook payload to pull the failed amount, the decline reason the processor returned, how many retry attempts have already happened, and the next scheduled retry date. Then use Get Customer for the customer on that charge to get their name and email.
Next work out how valuable this subscriber is. Use List Subscriptions filtered to that customer to see how many active subscriptions they have, what each one bills per cycle, and when the oldest one started, which tells you how long they have been subscribed. Use List Orders filtered to the same customer to count how many orders they have received and to approximate what they have spent to date.
Keep the lookups tight. Recharge rate limits on a leaky bucket of 40 requests refilling at 2 per second, so this should be a small fixed number of calls per failed charge: one charge, one customer, one page of subscriptions, one page of orders. Do not fan out unbounded per-page or per-subscription requests. Recharge money fields are decimal strings in the store currency such as "12.99", not integer cents, so treat them as decimals and never divide by 100.
Classify the failure into one of three buckets: expired or invalid card, insufficient funds, or hard decline (card reported lost or stolen, account closed, or the issuer blocked the charge outright). Fall back to a plain "other" bucket when the decline reason does not clearly map to one of those. Then rank urgency by subscriber value and tenure together: a long tenured customer with several active subscriptions and high spend to date is a high urgency save, while a first cycle customer on one low value subscription is low.
Post one alert per failed charge to our retention channel using the Slack Bot Send a Message operation. Keep it scannable rather than a wall of text: customer name, the failed amount, the decline reason in plain language, the classification, their per cycle subscription value and how long they have been subscribed, the next retry date, and the urgency ranking. Put the recommended action on its own line at the end so it is easy to spot, for example wait for the automatic retry when funds were insufficient, ask for an updated card when the card has expired, or escalate to a human for a high value hard decline.
Finally, append every failure to our recovery tracker using the Google Sheets Append Values operation, one row per failed charge, carrying the date, customer name and email, failed amount, decline reason, classification, tenure, spend to date, urgency, next retry date and the recommended action. That way the team can work the queue and measure our recovery rate over time.
Example output
What does this prompt do?
- Picks up every failed subscription payment the moment it happens, instead of leaving it to sit silently in the dunning queue
- Looks up who the customer is, how long they have been subscribed, and roughly what they have spent with you so far
- Sorts each failure into an expired card, not enough funds, or a hard decline, then ranks how urgent the save is based on subscriber value and tenure
- Posts a short alert to your retention channel with a recommended next step, and logs every failure to a recovery spreadsheet so you can work the queue and track how much you win back
What do I need to use this?
- A Recharge account running subscriptions for your store
- Failed payment notifications enabled in Recharge so the workflow hears about each one as it happens
- A Slack workspace and a channel where retention alerts should land
- A Google account with a spreadsheet to use as your recovery tracker
How can I customize it?
- Change which Slack channel gets the alerts, or route high urgency saves somewhere separate from routine ones
- Adjust what counts as high urgency, for example weighting how long someone has subscribed against how much they spend
- Rewrite the recommended actions so they match how your team actually handles each type of decline
- Add your own columns to the recovery tracker, such as who picked up the save or whether the payment was recovered
FAQs
How quickly does the alert arrive after a payment fails?
Will this retry the payment or charge my customer again?
How does it decide which failures are urgent?
Do I need a paid Slack plan for this?
What if we do not track recovery in Google Sheets?
Related templates
When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
Stop losing subscribers to a declined card.
Turn every failed Recharge payment into a ranked alert your team can act on the same day.