win-back campaign sent to accounts that renewed last week: cancellation list not refreshed before send
Fixes a win-back campaign sent to accounts that renewed last week because the cancellation list was not refreshed before send, by rebuilding list refresh and send-time checks. Use when a campaign hit clearly wrong recipients. Not for a small number of edge timing cases within one day.
TL;DR
The list was right when someone exported it and wrong when the email went out. Win-back audiences built from a cancellation export age immediately, because accounts renew, reactivate, and are saved by CSMs every day, so a list that sits for a week before send guarantees renewed customers get an email telling them to come back. Rebuild the audience at send time, add a final suppression check against live billing status, apologise to the wrongly mailed accounts, and the campaign stops insulting your best customers.
win-back campaign sent to accounts that renewed last week: cancellation list not refreshed before sendUse this when
- Renewed or active accounts received the win-back email and complained or replied in confusion
- The audience was exported days or weeks before the send date
- The campaign tool and the billing system are not connected, so the list is a manual file
Not for this skill when
- A handful of accounts renewed within hours of the send, an unavoidable timing edge rather than a stale list process
- The email went to cancelled accounts only but with wrong content, a creative problem instead of an audience problem
Steps
- Quantify the mistake precisely. Join the sent list against current billing status and identify every recipient who was active or renewed at the moment of send, with their renewal dates, and separate them from accounts who renewed after the send and were legitimately cancelled at send time. Stakeholders need the real number, and support needs the exact list. Verify: the wrongly mailed accounts are listed with renewal dates proving status at send time
- Trace the lists lifecycle. Record when the cancellation export was taken, who transformed it, what suppressions were applied at build time, and how long it waited before send, including approvals and creative delays. The gap between export and send is the defect, and every handoff that held the file is part of it. Verify: the export to send timeline is documented with the ageing gap named
- Handle the customer impact now. Have account owners or support contact the wrongly mailed customers with a short correction and an apology, prioritising enterprise accounts, and check none of them were offered win-back terms that conflict with the renewal they just signed, because a discount offer sitting in a renewed customers inbox creates a renegotiation you must get ahead of. Verify: every affected account has an owner, a contact decision, and any offer conflict is flagged
- Rebuild the audience process around send time truth. Generate the cancellation audience from the billing system as close to send as the tooling allows, ideally an automated sync or a same day export, and apply suppression against live subscription status again at the moment of send, so an account renewed that morning is excluded automatically. Verify: a test send to a seed list excludes an account renewed after audience build
- Add a permanent pre-send gate. Require a freshness check that reports audience age and the count of recipients whose current billing status is active, with the send blocked above zero, plus a small internal seed send that includes one recently renewed test account that must be suppressed for the gate to pass. Verify: the pre-send gate blocks a test send containing an active account
- Review every other campaign using exported lists. Onboarding, downgrade, and dunning adjacent campaigns often share the same export habit, so audit their audience age and suppression steps now, while the lesson is fresh, rather than waiting for the next wrong recipient to write in. Verify: the audit of sibling campaigns is completed with freshness fixes scheduled
Why it happens
Cancellation is a state, not a permanent identity, and it changes daily as saves and renewals land. A campaign audience is a snapshot that begins decaying immediately, and creative and approval cycles guarantee a gap between snapshot and send. Without a send time check against live billing status, the process mathematically guarantees wrong recipients whenever the gap spans renewal activity, which for a win-back campaign is precisely the population most likely to renew.
Compatibility: Email campaign platforms, billing subscription status from Stripe or Chargebee as the suppression source, and campaign approval workflows, in current versions.
Variants and edge cases
win-back email sent to renewed customers stale list
['The direct phrasing. Status at send time is the standard, build the whole investigation and the apology list on that definition.']
campaign audience not refreshed suppression failed
['The process variant. Suppression at build time is not suppression, audiences must be checked again at send time against the system of record.']
cancelled list export old email mistake SaaS
['The export variant. Manual exports are sometimes unavoidable, so cap their allowed age in the campaign checklist and stamp the export time on the file itself.']
Edge cases to work through before you close the incident:
- Timing edges of a few hours are unavoidable and acceptable. Judge the process on the gap size and the absence of a send time check, not on a single same day renewal.
- Suppression files can themselves go stale or be misapplied by segment. Verify suppression actually ran by seeding test records, not by reading the campaign settings.
- Keep the wrongly mailed list. Legal, support, and the renewal team may each need it, and reconstructing it later from memory will not match the send records.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_0a-hpWdrSwGOLdFN8TUmJQ