Win Back Lapsed Customers: Sync Guide
Win Back Lapsed Customers: Sync Guide
Win back lapsed customers by syncing cancellation, login, and engagement signals onto one record in your email tool. Step-by-step setup, no CDP.
No credit card required
Free 100k syncs every month
You can write the perfect email to win back lapsed customers and still never send it, because the signal that someone lapsed is sitting in a tool your email platform can't see. Stripe knows the subscription got canceled. Your product database knows nobody has logged in for 40 days. The email tool only knows that opens went quiet. None of those three facts live on the same record, so the campaign never fires.
Every win-back guide skips this part. They cover the discount trap, the 5x-cheaper math, and the sunset rules, then assume the disengagement data already sits unified on a customer profile. For a team under 200 people, it doesn't. This guide is about the plumbing the others skip: which lapse signal lives in which tool, how to get all of them onto one record, and what thresholds actually define "lapsed." For the lifecycle context behind all of this, start with lifecycle marketing without a CDP and come back here when you're ready to wire it up.
Which signals tell you a customer has lapsed
A customer rarely lapses in one place. They cancel in billing, then go dark in the product, then stop opening email. Each of those events lands in a different system, and the value of a win-back program comes from seeing them together.
Here's where each signal actually lives:
Billing tool (Stripe, Chargebee, Recurly): subscription canceled, downgrade, failed or declined payment, trial expired without conversion.
Product database (Postgres, your app DB): last login date, sessions per week trending down, a feature that used to fire daily and now doesn't.
Support tool (Zendesk, Intercom): an unresolved escalation, a frustrated thread, a refund request that never got a follow-up.
Email tool (Mailchimp, Braze, ActiveCampaign): open rate below threshold, no clicks in N sends, an unsubscribe from one list but not all.
The product-usage signal is the one most teams underweight. A canceled subscription is a customer who already left. A 40-day login gap on an active subscription is a customer who is about to leave, and they're the most winnable of the group because the relationship is technically still alive.
None of this is useful while it's scattered. The whole job is getting these four signals onto the one record your campaign tool reads.
Setting the thresholds that define a lapsed customer
Before you sync anything, decide what "lapsed" means as a number. Vague definitions produce vague segments, and a win-back campaign that fires on a fuzzy definition will hit people who never actually left.
Pick a concrete threshold per signal:
Lapse signal | Source tool | A reasonable "lapsed" threshold |
|---|---|---|
No product login | Product database | 30+ days since last login |
Subscription canceled | Billing tool | Status flips to |
Email disengagement | Email tool | Open rate under 1% over the last 10 sends |
Failed payment | Billing tool | First failed charge, before the dunning window closes |
Support escalation | Support tool | Open ticket older than 7 days with no reply |
These numbers are starting points, not gospel. A weekly-use SaaS product treats a 30-day login gap as a five-alarm fire. A tool people open quarterly should not. Set the thresholds against your own usage rhythm, then revisit them after the first campaign cycle when you see who actually converted.
One honest caveat: thresholds catch correlation, not cause. A 30-day login gap plus a past_due status is a far stronger lapse signal than either alone, which is exactly why getting both onto one record matters more than tuning either number perfectly.
Step-by-step: sync churn signals to win back lapsed customers
This is the part the competitor guides assume is already done. With Oneprofile, each signal becomes a field on the customer record in your email tool or CRM. You do it once, then it maintains itself.
Connect your source tools. Add your billing tool, product database, and support tool as sources in Oneprofile. Authenticate with API keys or OAuth. For the database, Oneprofile reads your schema at connect time, so the
usersoraccountstable and itslast_login_atcolumn show up without any modeling.Connect the destination that runs the campaign. Add your email tool or CRM as the destination. This is where the lapsed-customer record needs to live, because it's the tool that actually sends the sequence.
Pick the matching key. Use
emailas the primary key so a Stripe customer, a database user, and a Mailchimp contact resolve to the same person. Where you have a stablecustomer_id, use that instead and fall back to email.Map each lapse signal to a destination field. Stripe
subscription.statusto asubscription_statusproperty. Databaselast_login_atto alast_loginproperty. Support escalation count to anopen_ticketsfield. When a destination property doesn't exist yet, Oneprofile creates it with the right type instead of failing the sync.Choose sync mode and schedule. Use Update or Create so existing contacts get enriched and any missing ones get added. Run it every 15 minutes. Property-level change tracking means a
canceledstatus reaches the email tool within minutes of the cancellation, not on the next nightly batch.Run the first sync and verify. The initial run backfills every customer's current state. Spot-check three records you already know are lapsed and confirm the fields landed. If one didn't, it's flagged for review with the reason, not silently dropped.
That's the entire data layer. From here, building the segment is a query on fields that are now sitting in one place.
Build the segment that re-engages inactive customers
With all four signals on the record, the reactivation segment is a filter, not a data project. You define it in your email tool or CRM using the properties you just synced.
A solid starting segment to re-engage inactive customers:
last_loginmore than 30 days ago ANDsubscription_statusisactiveorcanceled(skippast_dueif dunning is still running) ANDemail_opt_inis true.
Tighten or loosen from there. Layering signals is what makes the segment trustworthy: a customer who canceled and hasn't logged in for 40 days is a different message than one who's quietly active in the product but never opens email. Because the fields update on every sync, the segment is self-maintaining. A customer who logs back in tomorrow drops out automatically, so you stop messaging people who already came back on their own.
This is also where the win-back program stays honest. You're not blasting a "we miss you" to your whole list. You're targeting a defined set of dormant customers whose lapse you can actually point to in the data.
Winback marketing sequences: timing, offers, and channel mix
Once the segment exists, the strategy fundamentals apply, and the established win-back playbooks are genuinely good on this part. The short version of what works in winback marketing:
Timing: reach out fast. Response rates fall sharply after the first 30 days of inactivity, and a canceled subscription warrants faster outreach than a quiet-but-active account.
Offers: lead with value, not a blanket discount. Discounts work when the customer left over price. Offer them by default and you train people to cancel and wait for the deal.
Channel mix: send on the channel where each customer last engaged. A synced
last_engaged_channelfield lets you route email-responsive customers to email and in-app-responsive ones to a product nudge.Reason-aware copy: the synced cancellation reason or last support topic lets you split the sequence. "The feature you asked about shipped" is a different email than "here's what's new since you left."
The point of the sync work is that every one of these decisions now runs off a field on the record instead of a guess. You don't need a predictive-score black box to know someone canceled and went dark. You need the cancellation and the login gap on the same row.
When to stop: sunset rules for lapsed customers
A win-back program needs an exit, or it quietly wrecks your deliverability. Sending forever to people who will never come back gets the rest of your mail flagged as spam, which costs you the customers who do want to hear from you.
Set sunset rules against the same synced fields:
No open or click after the full win-back sequence, with the record already past 90 days of inactivity.
Email open rate under 1% across the sequence sends.
A hard unsubscribe or repeated opt-outs.
When a record crosses those, move it to a low-frequency nurture list rather than deleting it. An occasional product-launch email is a softer landing than suppression, and people do sometimes come back a quarter later. For anyone who explicitly opts out, suppress and stop. Because the lapse fields keep syncing, a sunset customer who unexpectedly logs in again can re-enter the active segment on the next run instead of staying buried.
What changes after you can win back lapsed customers on autopilot
The before-and-after isn't a better email. It's that the email actually gets sent to the right person at the right moment, because the trigger condition finally exists in the tool that fires it.
The Monday-morning CSV pull from billing disappears. A cancellation in Stripe reaches your email tool in minutes, so the win-back sequence starts while the customer still remembers why they signed up. A login gap crossing 30 days adds someone to the dormant segment without anyone touching a spreadsheet. And when a sync fails on a field-type mismatch or a rate limit, the record is surfaced for review instead of vanishing, so your segment doesn't quietly rot.
If your win-back numbers have been flat, it's worth checking whether the problem is the copy or the plumbing. In our experience it's almost always the plumbing. The signal was there the whole time. It just never made it to the tool that needed it.
What data do I need to win back lapsed customers?
How do I define a lapsed customer?
Do I need a CDP to run a win-back campaign?
How fast does a churn signal reach my email tool?
How do I avoid emailing customers who already came back?
When should I stop a win-back campaign?