Klaviyo dunning flows: when they work, when they leak
Klaviyo can run the email side of failed payment recovery, and a tuned Klaviyo dunning flow recovers 30-45% of declined renewals on its own. Stripe Smart Retries' baseline is 22%; Omesta's full stack is 72%. Klaviyo dunning lives in between — better than the floor, capped well below the ceiling. This post is the audit framework: where Klaviyo dunning earns its place, where the four-touch vs seven-touch cadence question matters, and the three failure modes that quietly leak revenue inside a flow that looks fine on the dashboard.
Where Klaviyo dunning fits in the recovery stack
A recovery stack has three jobs: retry the card, update the card, talk to the customer. Klaviyo only does the third one. That is not a limitation — it is the point. The mistake is treating Klaviyo dunning as the recovery system instead of one layer of it.
The split that works:
- Stripe (or your billing platform) owns the retry schedule and decline-code routing. This is where decisions like "retry on payday for insufficient_funds, wait 7 days for do_not_honor" live. Klaviyo cannot see decline codes, so it cannot make these decisions.
- A card updater service (Stripe ACU or a paid layer) silently refreshes expired cards. Klaviyo does not touch this.
- Klaviyo owns the customer conversation: "your renewal failed, here is how to fix it." Its job is to convert manual customer action — the slice of recovery the silent layers cannot catch on their own.
Across 800+ Stripe accounts in our customer base, the "customer must update their card" bucket is roughly 25-35% of every failed-payment cohort. That is the slice Klaviyo can win or lose on. The other 65-75% — transient failures the retry layer recovers without customer involvement — Klaviyo cannot help with and should not try.
This is why Klaviyo flows look so different across companies that nominally do the same thing. A brand using Klaviyo as the entire recovery system writes seven emails over fourteen days and pretends the silent recovery layer does not exist. A brand using Klaviyo as the customer-conversation layer writes three or four well-timed emails that arrive only after the retry layer has actually given up. Both can call themselves "running Klaviyo dunning." Only one is doing the job.
The 4-touch vs 7-touch cadence question
The most common Klaviyo dunning audit finding is over-cadence. The standard Klaviyo template starts at four touches over ten days. We see brands running seven, eight, sometimes nine touches over three weeks. The math does not support it.
Look at the data on customer email response: 80-85% of customers who are going to update their card do it within the first three touches. The fourth touch picks up another 5-8%. The fifth through seventh touches combined recover under 3% — and roughly the same fraction trigger spam complaints, unsubscribes, or "billing harassment" support tickets that cost more in CX time than they recover.
Our default recommendation, which holds across roughly 200 Klaviyo audits:
- Touch 1, T+0 hours: Soft notification. "Hey, your payment did not go through. We are trying again in a couple of days — here is a link if you want to update sooner."
- Touch 2, T+72 hours: After the first retry attempt has failed. Tone shifts: "Second attempt also did not go through. Here is the update link, takes 30 seconds."
- Touch 3, T+7 days: Final reminder before access pauses. Specific consequence plus a direct link.
- Touch 4, T+12 days: Pause-or-cancel confirmation with a "reactivate" link. This is the cheapest touch and recovers a surprisingly large slice — people who genuinely meant to update and forgot.
That is four touches over twelve days, mapped to a realistic retry schedule underneath. The Churnbuster-style "win-back" sequence (touches 5-7 days after the customer has been cancelled) is a different flow. It is worth running separately, but folding it into the dunning flow itself muddies both jobs.
The brands that get 30-45% recovery from Klaviyo run something close to this. The brands that send seven emails over three weeks recover roughly the same total revenue but at a higher cost: angrier customers, more unsubscribes from the broader marketing list, and a measurable hit to deliverability when the dunning flow drags the sender reputation.
Copy patterns that work (and what to avoid)
The single biggest copy lever in a Klaviyo dunning flow is whose problem the email frames the failure as. Three patterns we see:
Pattern that works: "We are trying again on your behalf." The flow opens with the assumption that this is probably a bank-side blip — insufficient balance, fraud filter, deposit-day timing — and tells the customer the retry is already handled. The update link is offered, not demanded. Conversion on the update link runs 8-12% on touch 1 with this tone.
Pattern that leaks: "Your payment has failed. Click here to fix." Treats the failure as the customer's fault, demands action immediately, often in red. Touch-1 conversion on this pattern runs 3-5% — about half the soft-open rate. The reason: the customer who genuinely has insufficient funds is offended, the customer whose card just got reissued does not yet know it, and the customer whose payment will recover on the next automatic retry feels chased for nothing.
Pattern that wins back: "Here is what you will lose." Touch 3, where the consequence is specific. Not "your subscription will be paused" but "your subscription pauses Thursday and your next box ships November 15th — update by Wednesday to keep it." We have seen this single change move touch-3 conversion from 6% to 14% on the same underlying customer base.
A few smaller patterns worth stealing from the brands that perform well:
- Subject lines lead with a number, not a verb. "Your $47 renewal" outperforms "Update your card" by 20-30% on open rate.
- The CTA button text says what happens, not what to do. "Keep my subscription" beats "Update card" — same destination, different framing.
- The footer carries the support contact, not legal boilerplate. Customers who reply to dunning emails convert at 40%+ if a human responds within a few hours. Burying the support address kills that conversion path.
We covered this in more depth in our dunning email cadence breakdown — the cadence and the copy interact, and tuning one without the other rarely moves the recovery number.
The three failure modes nobody documents
Klaviyo dunning flows can look fine in the Klaviyo dashboard while leaking revenue silently. The three patterns we keep finding:
1. The flow fires on every decline, including the ones the retry layer will recover. Most brands trigger the Klaviyo flow on Stripe's invoice.payment_failed webhook. That webhook fires on the first decline, before the retry schedule has tried again. About 35-40% of those first-decline failures recover silently on the second or third retry — but the customer has already received "your payment failed" email. They update their card (which did not need updating), the retry succeeds in parallel, and now the customer has paid once and updated their card unnecessarily. CX tickets follow. The fix: trigger the flow on customer.subscription.updated with a status of past_due, which Stripe sets after the configured retry schedule has actually given up — or fire from your billing platform's "all retries exhausted" event, not the first decline.
2. The "update card" link does not pre-authenticate the customer. A magic link straight to the payment-method page recovers about 2-3× more cards than a generic "log in to your account, then go to billing" flow. The drop-off on three-step flows (log in → find billing → find card on file → update) is brutal. If your Klaviyo template links to your generic login page, you are leaving roughly half the recoverable customers on the table. Build the magic-link endpoint on the billing platform side and have Klaviyo merge it into the template via a personalization tag — most brands have this working in an afternoon.
3. Suppressed segments quietly grow. Klaviyo's deliverability tooling will eventually suppress customers who have unsubscribed, bounced, or marked dunning emails as spam. That is correct behavior for marketing email. It is wrong for transactional dunning. We see brands with 8-12% of their failed-payment population sitting in suppression lists — completely invisible from the main Klaviyo dashboard. Those customers never get touch 2 or 3, recovery rate craters on the segment, and the brand thinks Klaviyo is "underperforming" when in fact it is not running on a slice of the customer base at all. The fix is to mark dunning emails as transactional (Klaviyo supports this at the flow level) so they bypass suppression. The trade-off is real — you cannot suppress customers who genuinely hate getting these emails — which is another argument for keeping the cadence tight at four touches, not seven.
A fourth pattern, milder, worth flagging: the Klaviyo flow that A/B tests subject lines on dunning emails. Marketing instinct says test everything. Dunning is the wrong place for it. The sample sizes are small, the time pressure is real, and a 10% lift on a 5% conversion rate gets swamped by the underlying decline-code distribution shifting week to week. Pick one subject line per touch, test it for a quarter against a clean baseline, and otherwise leave it alone.
When Klaviyo dunning makes sense (and when to layer on top)
Klaviyo dunning is the right call when:
- You are already deep on Klaviyo for marketing, so the operational lift is small.
- Your AOV is low enough that paying for a specialist tool (Churnbuster, Stunning) does not clear the math.
- Your decline mix skews toward simple "card needs updating" cases rather than complex retry routing.
Klaviyo dunning is not enough on its own when:
- You are running annual subscriptions or high-AOV products where a single missed update is a $500+ mistake. Klaviyo cannot trigger pre-emptive card-update flows the way a dedicated account updater service can.
- You have meaningful
do_not_honororgeneric_declinevolume — these need decline-code routing, which lives in the retry layer, not the email layer. - You are already getting 30%+ recovery from Klaviyo and want to push toward 60-70%. The next gains are not in the email layer at all.
The four-layer recovery system that gets rates from 22% to 72% is bigger than what Klaviyo can own on its own. Klaviyo can run one of those four layers cleanly — the customer-conversation layer. It cannot run the other three, and a flow that tries to is the most common source of the leaks we audit.
Run a leak scan on your own stack
A well-tuned Klaviyo dunning flow is a real asset. A poorly-tuned one looks identical in the Klaviyo dashboard and silently leaves 15-30% of recoverable revenue on the table — usually some mix of cadence drift, suppressed segments, and trigger timing that fires before the retry layer has actually given up. Omesta scans the whole recovery surface (retry routing, dunning copy, card-update flows, BIN-level patterns) in 2 minutes, read-only OAuth, and shows you the gaps in numbers, not opinions.
Start the leak scan — Only $7 activates 30 days, $1,000+ recovered or your $7 back.