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.

Agentic Task
RechargeSlack BotGoogle SheetsFinanceOperationsNotifications & AlertsData Sync
PromptCreate

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

Failed payment | High urgency Maria Chen | maria.chen@example.com Amount: $64.98 | Reason: card expired (expired card) Subscriber for 14 months | 2 active subscriptions | $64.98 per cycle | ~$910 spent to date Next retry: 12 Aug Recommended action: The card on file has expired, so the automatic retry will fail too. Send a payment update link today.

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?
It runs as soon as Recharge reports the failed charge, so the alert normally lands in Slack within moments rather than waiting for a daily or weekly report.
Will this retry the payment or charge my customer again?
No. It only reads what happened and tells your team about it. Recharge keeps running its own retry schedule, and the alert includes the next retry date so you know whether to simply wait or reach out now.
How does it decide which failures are urgent?
It weighs how valuable the subscriber is against how long they have been with you. A long standing customer with several active subscriptions and high spend ranks above someone who just signed up and failed their very first payment.
Do I need a paid Slack plan for this?
No. Any Slack workspace works. You just need a channel for the alerts and permission to add an app to it.
What if we do not track recovery in Google Sheets?
The spreadsheet step is optional. You can drop it and keep just the Slack alerts, or point it at whatever sheet your team already uses to work through failed payments.

Related templates

Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Turn procurement portal tenders into CRM deals each morning

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.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Draft polite follow-ups for emails that never got a reply

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.

Aurinko
Google Sheets
Slack Bot
Agentic Task

Stop losing subscribers to a declined card.

Turn every failed Recharge payment into a ranked alert your team can act on the same day.