Recover the MRR you were about to silently lose.
When payment_status flips to failed, fire WhatsApp first, then email, with a Stripe portal link in the bubble. Stops the second the charge clears.
Trigger · Sequence · Goal.
Three pieces, no hidden state. Listen to the column or to the Stripe webhook, fire on the right channel, stop the moment the charge clears.
payment_status = failed
Listens to your DB or to Stripe webhooks the moment a charge fails. The flow fires within seconds, not on the next dunning cycle.
WHEN payment_status = 'failed'WhatsApp first, email fallback
WhatsApp opens at 98%, so it goes first with a one-tap card-update link. Email fires 24h later if the card hasn't been updated. Stripe portal CTA links straight to the right invoice.
WhatsApp · Email · Founder voicepayment_status = success
Stops the second the charge clears. Recovered MRR is logged on the row that triggered the flow, attributed to the channel that converted.
STOP WHEN payment_status = 'success'Same recipe, four shapes.
Card update link
Inject a Stripe-customer-portal deeplink right inside the WhatsApp bubble. One tap, card updated.
Founder voice note · annual plans
If plan = annual, replace the WhatsApp template with a 30-second voice note from the founder. Keeps the largest accounts.
Skip if charge auto-retries succeed
Stripe Smart Retries already recover ~30% silently. Wait 24h before firing the flow.
Hand off to AR after Day 7
If recovery hasn't fired by Day 7, route to the AR team queue with the failed-invoice context attached.
The first month we recovered €38k that would have churned silently. The flow paid for our entire year of Minimo in week one.
Stop losing MRR to failed charges.
Connect Stripe and your DB. Wire the trigger on payment_status, drop the channels, watch recovery jump.
14 days · all features · no credit card