Back to all articles
Automation

What to do with an old customer list that has gone cold

Your dormant list is mostly unfinished, not dead. Here is how to reactivate it in throttled waves without burning your number or your sending domain.

Written by
The AppBO Team
Published
September 25, 2026

Somewhere in your system there are a few thousand records nobody has touched in over a year. Old inquiries that never booked. Customers who came once and never came back. Leads from a campaign that ran before your current setup existed. Quote requests that went quiet. The standing assumption about all of them is that they are dead, which is a convenient belief, because it means nobody has to do anything about them. Meanwhile the business keeps buying fresh clicks at full price.

Most of that list is not dead. It is unfinished. The overwhelming majority of those people never said no. They said nothing, which is a very different thing. They got busy, the timing was wrong, they used someone else for that one job, or they simply forgot. The reason the list looks dead is that the last thing you sent was a marketing email asking them to buy, from a sender they did not recognize, to an address they do not read. Nothing in that message invited a reply, so no reply came, and the silence got filed as proof of death.

What a dormant list is actually worth

These contacts have already been paid for. The ad spend, the referral effort, the hour someone spent on the phone with them two years ago. That acquisition cost is sunk and irrecoverable. The marginal cost of one more conversation is close to nothing. That is the entire economic argument, and it is a strong one, because almost no other channel in your business starts from a cost base of zero.

Worth knowing before you get excited: the value is not evenly distributed. Past customers who bought once and went quiet behave completely differently from inquiries that never converted, and a six-month-old lapsed customer behaves differently from a two-year-old one. Reply rates between these groups commonly differ by several multiples. If you merge them into one list and send one message, you learn nothing about which part of the asset is actually valuable, and you waste the warmest records on copy written for the coldest.

The mistake almost everyone makes on their first attempt

The one time most businesses do touch the old list, they blast all four thousand records in a single afternoon. What happens next is predictable and expensive:

  • Carrier filtering kicks in partway through, so a large share of the messages are silently never delivered, which looks identical to a broken workflow.
  • The complaint rate spikes, because a chunk of those records have no documented consent and no memory of you.
  • The sending domain takes damage that reaches your transactional mail too, so appointment confirmations start landing in spam.
  • Thirty replies arrive inside an hour, nobody is available to answer them, and the people who did engage get silence, which is worse than never having messaged them.

A recoverable asset becomes a permanently poisoned one, and the business concludes the list was worthless after all. The fix is the opposite of a blast: small throttled waves, one human question at a time, every reply routed, and a compliance floor that is not negotiable.

What good looks like: waves, not blasts

A reactivation campaign built properly has these properties.

  1. Exclusions are built before inclusions. You define who cannot be messaged first, and apply that as the entry condition.
  2. One segment per wave. Separate copy, separate reporting, never combined.
  3. A hard daily cap. Start small, step up only while delivery and opt-out rates stay healthy.
  4. A pilot batch. The first batch is tiny and nothing else sends until a human has read the results.
  5. A three-touch ceiling. Three messages, ever, with the third one explicitly releasing the person.
  6. A circuit breaker. Automatic pause on defined thresholds, requiring a human to review before it can resume.
  7. A separate pipeline. So a campaign does not contaminate your real inbound conversion reporting.

Notice how much of that is restraint rather than reach. The throttling is not timidity; it is what keeps the asset usable for the next wave.

How to run a database reactivation campaign

The complete specification (every field, segment definition, workflow and circuit-breaker threshold) is in the Database Reactivation Campaign build guide. Work through it in this order.

Step 1: Audit consent record by record

This is the gate for the whole project. For every record you intend to message, you need to know on what basis you may contact them, when that basis was established, and where it came from. If you cannot answer those three questions for a record, it does not go in the wave. A large list with no consent provenance is not an asset, it is a liability, and no amount of clever copy or careful throttling makes it safe. Where the basis is weak but the email address is good, use the email track and a short re-opt-in page to rebuild consent properly instead of assuming it.

Step 2: Fix the last-activity date and clean the data

Your segments are built on a single field: when this contact was last active. If that field is wrong, you will message active customers as though they had vanished, which is the most embarrassing failure available here. Deduplicate, validate number formats, and run a number lookup across the list to identify landlines and disconnected numbers before they cost you deliverability.

Step 3: Build the exclusion list first

Exclude, with a written reason on the record, anyone who has: no consent basis or no consent timestamp, an opt-out or do-not-contact flag, a non-cell number for the text track, a hard email bounce, an open dispute or unresolved complaint, a future recontact date, any activity in the last ninety days, an open opportunity anywhere in any pipeline, or a duplicate already in the wave. That last-ninety-days rule matters more than it looks, treating a live contact as dormant reads as carelessness to the one person who was already paying attention.

Step 4: Cut the list into segments and run them separately

Build unconverted inquiries from the last year, unconverted inquiries from one to two years back, past customers quiet for six to eighteen months, past customers quiet for longer, and abandoned or partial bookings. Run the abandoned bookings first as your pilot. They are small and very warm. Then the past customers, who are the highest-value group because the barrier to a second purchase is near zero.

Step 5: Write one short message with one question in it

The message goes out from a named real person at the business, contains no offer, no link, no emoji, no capitals and no price, and asks exactly one question: about them, not about buying. Something in the shape of "you came to us for that job a while back, did you get it sorted in the end?" works because it is answerable in two words and genuinely curious. Links in a first touch depress deliverability and raise complaint rates, so earn the link with a reply. Where you have a record of what they previously bought, reference it. Where you do not, send the general variant and never fabricate a history.

Step 6: Throttle hard and pilot smaller than feels necessary

Divide each wave into daily batches at or below a strict send cap, and sort the batches so the warmest records go first. A bad first batch tells you the copy is wrong while it is still cheap to fix. Start at a few dozen messages a day per number for the first three days, and step up only if delivery and opt-out rates stay healthy. Keep sends inside a narrow window, weekday mornings and afternoons only. A reactivation message on a Sunday evening reads exactly like spam, because it is behaving exactly like spam.

Step 7: Route every reply, and bias toward escalation

A batch can produce a dozen replies in twenty minutes, which no human can triage live. BO, the AI assistant, reads each reply and classifies it into one of five buckets (interested, not now, negative, wrong person, or unclear) then handles the straightforward paths and hands the rest to a person. Interested replies get a short acknowledgement, one clarifying question, and two concrete times. Negative replies get one graceful line and permanent suppression, with no rebuttal and no counter-offer. Anything ambiguous goes to unclear and straight to a human, because a misread "no" treated as a "yes" is the worst outcome available. Build a dead-thread guard too: any inbound message unanswered for fifteen minutes escalates regardless of classification.

Step 8: Turn "later" into a date

The not-now path is quietly the highest-yield part of the build. When someone says "maybe after the summer", ask one question to pin down a month, write that date to the record, confirm you will check back then, and send absolutely nothing until it arrives. A dated deferral is a real pipeline entry and converts far better than a cold re-approach six months later. Allow a record round that loop at most twice; on a third "not now", stop asking.

Step 9: Wire the circuit breaker before the first send

Compute delivery rate, reply rate, opt-out rate, negative share and complaint count hourly during an active wave, and pause the whole wave automatically if any of them breaches a threshold you set in advance. A paused wave requires a human to review the copy, the segment and the consent basis before it resumes, not a restart. This workflow is why the campaign is safe to run at all: without it, a bad segment keeps sending for three days before anyone notices, and by then both the number and the domain are damaged.

Mistakes that burn your number and your domain

Mistake 1: Sending from a brand-new number

A number whose first ever traffic is a reactivation wave is the worst possible start. Use an established number with sending history, or warm a new one on transactional messaging for a couple of weeks first. Complete your A2P 10DLC brand and campaign registration before anything sends, register the campaign honestly as what it actually is, and submit sample messages that match the real copy. A mismatched registration gets throttled mid-wave.

Mistake 2: Mailing the campaign from your main domain

Authenticate the sending domain with SPF, DKIM and DMARC, and seriously consider a subdomain for campaign mail so a problem cannot contaminate your appointment and confirmation email. Warm the volume over several days rather than opening at full rate.

Mistake 3: Importing a bought or scraped list into the same build

Do not. It is a different activity with a different legal character, and it will destroy the sending assets this campaign depends on. The whole premise here is records you already have a relationship with.

Mistake 4: Having nobody available on send days

Model the reply spike before you launch: a fifty-record batch at a modest reply rate is roughly eight live conversations, several of which need a person. If nobody is available during your send window, reduce the batch size rather than hoping.

Mistake 5: Treating "how did you get my number" as a question

It is an opt-out. Answer it once, politely, then suppress the record account-wide. Honor every opt-out mechanically, across every channel, and make sure no import or bulk edit can ever clear it.

Mistake 6: Returning an interested reply to the automated ladder

Once someone has engaged, they are a conversation, not a sequence. An interested reply that does not book within a day or two is a phone call, not another text.

How to measure a reactivation wave

  • Reply rate per segment. The only number that tells you where the value actually is. Expect large differences between groups, which is exactly why you never merge them.
  • Reply-to-booking conversion. Strong replies with weak bookings means the problem is the booking step or the calendar, not the campaign.
  • Sentiment mix. A high unclear share means the copy is ambiguous. A high wrong-person share means the data is older than you thought.
  • Opt-out rate per thousand delivered, tracked per batch rather than per wave. This is your primary safety metric, and per-batch tracking is what lets you catch a problem on batch two instead of batch eight.
  • Delivery and undelivered rates per batch. A sudden drop means filtering has started; pause before the cap does it for you.
  • Cost per booked appointment for the wave, compared with your paid acquisition cost for the same outcome. This is the comparison that justifies running the next wave.
  • Show rate for reactivated bookings versus fresh inbound. Reactivated leads reliably no-show more. If the gap is large, strengthen the reminder sequence rather than expanding the campaign.
  • Recontact-date conversion. Of the not-now records, the share that book when their date arrives. Measure it a quarter later; it is usually the best-performing cohort in the whole build.
  • Share of the database still untouched, so you know how much asset is left and do not accidentally re-run a wave over the same people.

Frequently Asked Questions

How old is too old to message?

Age is not really the test: consent is. A three-year-old record with a documented, timestamped marketing opt-in is defensible. A six-month-old record with no consent provenance is not, no matter how warm it feels. Several jurisdictions also impose a time limit on the existing-relationship basis, so a two-year-old customer may fall outside it. Confirm that rather than assuming your list is fair game, and none of this is legal advice.

How many messages should a reactivation sequence send?

Three, maximum, and then stop permanently. The first is the question, the second a few days later acknowledges the timing might be off, and the third explicitly releases them: "last one from me, if anything changes this number reaches me directly." That third message is both decent and the reason the opt-out rate on a well-built wave stays low. There is no fourth "just checking".

Should I lead with a discount to get attention?

No. An offer in a first touch turns a conversation into a promotion, which changes how it registers with recipients, with carriers, and in some cases with regulators. It also anchors the relationship on price before anyone has scoped what the person actually needs. The campaign exists to start a conversation; what things cost belongs in that conversation.

What do I do with the records that never reply?

Move them to a no-response stage with a long recontact date rather than deleting them, and leave them alone until it arrives. The list also gets cleaner as a by-product of every wave. Wrong numbers, dead addresses and genuine refusals all get identified and marked, which improves everything else you ever send. If you want a wave scoped against your own consent position and segment sizes, book a call to work through it, because this is the one build where that review is genuinely load-bearing.

Keep going
Read the full build

Every article on this blog sits on top of a build guide in the AppBO library. It is the same system, written out end to end: the problem it solves, the architecture behind it, every workflow with its triggers and conditions, and what measurably changes once it is live. If this piece made the case, the build guide shows you the wiring.

Open the build library

Want this running in your business?

Bring us how your business actually runs today and we will tell you which system to put in first, what it will take, and what it should change.

Book a call