The Quarterly Customer List Review SOP
Purpose
To convert the shop's service history into a short, ranked list of customers who are drifting away, before they are gone, and to assign that list to a named person with a fixed weekly time budget. A customer list left unreviewed does not stay flat, it silently ages: every quarter a slice of it crosses from "will call us again" to "has found somebody else," and the shop finds out only when new-call volume drops two seasons later. This review exists so the shop finds out on a Tuesday in the quarter it happens.
Scope
Applies to the full customer record set, including one-time customers, excluding recurring-plan members whose visits are already scheduled. Runs once per quarter, takes about three hours of owner or manager time plus the review meeting, and produces a single deliverable: the quarter's call list with an owner and a weekly quota.
This SOP covers the review and the bucketing. It does not cover the content of the outreach, which is a separate skill, or the design of a recurring-service program, which is a separate decision.
Roles and responsibilities
| Role | Responsibility |
|---|---|
| Owner or manager | Runs the review, sets the interval definitions, approves the do-not-contact list, holds the quarter's target |
| Office or dispatch | Pulls the records, produces the bucket counts, works the call list to quota, logs every outcome |
| Lead technician | Reviews the top of the call list for property-specific context and known reasons a customer went quiet |
| Bookkeeping or admin | Flags accounts with unresolved balances so they route to collections, not to outreach |
Procedure
1. Set or confirm the expected interval per service type
Before any customer can be called overdue, the shop has to say what on time means. Do this once, then confirm it each quarter rather than rebuilding it.
Write a single interval per service type: the number of months after which a customer of that type should have been seen again under normal conditions. Derive it from the work itself, not from how often you would like to sell. A seasonal service has an obvious annual or semiannual interval. A wear-part replacement has the part's service life. A one-off repair on a system with no maintenance need may honestly have no interval, and those customers belong in a separate bucket rather than being called overdue for something they never owed you.
If a service type genuinely has no interval, mark it "no interval" and exclude it from the recency buckets. Forcing an interval onto it is how a shop ends up calling people who have no reason to hear from them, which is the fastest way to train a list to ignore you.
2. Pull the record set and stamp each customer with months since last job
One row per customer. Four columns is enough: name, last job date, service type of that last job, months elapsed. Everything downstream is a sort on that fourth column against the interval from step 1.
Do this from service history, not from an invoice list. Invoices miss no-charge warranty returns and estimate visits, both of which are real contact and both of which reset the clock in the customer's mind even when they do not reset it in your accounting.
3. Bucket every customer into one of four recency states
Use the customer's own expected interval as the unit, so a six-month-interval customer and an eighteen-month-interval customer are judged on the same scale.
| Bucket | Definition | What it means |
|---|---|---|
| Current | Within one interval | On schedule, no action |
| Slipping | Between one and two intervals | Late but still inside normal drift, highest-yield outreach |
| Dormant | Between two and four intervals | Probably went elsewhere or the need went away |
| Cold | Over four intervals | Treat as a list to be audited, not called |
The Slipping bucket is the entire point of the review. A customer one interval late is late for an ordinary reason: they were busy, nothing broke, they forgot. A customer three intervals late has usually made a decision, and the message that works on them is a different message entirely.
4. Remove everyone who should not be contacted
Do this before the list is sized, not after, or the quota gets spent on names that were never callable.
Pull out: anyone who has asked not to be contacted, anyone with an open balance in collections, anyone the shop has decided not to serve again, any record with no working contact method, and any address you can confirm has changed hands. Route the open-balance names to whoever handles collections. Route the bad-contact names to a data-cleanup pile.
Keep the removal reasons in the record. A do-not-contact flag with no reason attached will be quietly overridden by the next person who works the list.
Then apply the legal scrub, which is a separate pass from the internal one above and is the pass most shops skip because their internal list feels thorough. Three gates, each with its trigger:
- A company-specific do-not-call request must be honored regardless of any business relationship. This is what your internal flag is already doing; naming it as the legal requirement is what stops the next person treating it as discretionary.
- For outbound telemarketing calls, scrub against the National Do Not Call Registry unless an established business relationship applies, which generally runs 18 months from the customer's last transaction or 3 months from their inquiry. Note what that does to this SOP's own buckets: on any service interval of a year or more, your Dormant and Cold names have usually aged past the 18-month window, so the audit those buckets already require is where this check belongs.
- For the email channel, honor opt-outs within 10 business days, and give the outcome codes a value for it so an opt-out is recorded rather than remembered.
Registry and relationship rules change and state law can be stricter than federal, so confirm the current windows for where you operate rather than treating these as settled.
5. Size the quarter's work against actual available hours
This is the step that separates a review that changes behaviour from a review that produces a spreadsheet nobody works.
Take the weekly hours the shop can genuinely commit to outreach, multiply by a realistic touch rate, multiply by 13 weeks. That number is the ceiling. If the Slipping bucket is larger than the ceiling, do not stretch the ceiling, rank the bucket and work down it. Ranking factors, in order: total past jobs with the shop, whether a named next need is on file, and property proximity to routes you already run.
6. Assign the list, the quota, and the log
One named person, a weekly count rather than a quarterly count, and a required outcome code on every touch. Weekly quotas survive contact with a busy office; quarterly targets get pushed to week 12 and abandoned.
The outcome codes need to distinguish "booked," "not now, call back in a stated month," "no longer needs this service," "moved or sold," and "no answer, attempt N." The middle two are the ones that pay off later. A "call back in March" is next quarter's warmest name, and a "no longer needs this service" permanently removes a name from every future list, which is worth as much as a booking.
7. Close the loop at the next review
Open the next quarterly review by reading last quarter's outcome codes before pulling any new data. Three numbers matter: how many of the assigned touches actually happened, the booking rate on the Slipping bucket, and how many records got a permanent disposition. A review that never reads its own results will keep recommending outreach that does not work.
The worked example
A shop with about 900 active customer records ran its first review. After stamping months-since-last-job and applying per-type intervals, the buckets came out: Current 310, Slipping 240, Dormant 210, Cold 140. Those sum to the full 900, which is the first thing to check, because records that fall out of the bucketing are usually records with a missing or unparseable last-job date, and those are exactly the customers a shop loses track of.
Removals took 31 names out of the Slipping bucket: 9 open balances routed to collections, 14 with no working phone or email, 5 confirmed property sales, and 3 flagged do-not-serve. Slipping dropped from 240 to 209.
Capacity: the office committed 2 hours a week. At roughly 12 outbound touches an hour, allowing for notes and voicemail, that is 24 touches a week, and across 13 weeks, 312 touches. The Slipping bucket at 209 names fits inside 312 with room for second attempts, so the whole bucket got assigned rather than ranked and truncated. Quota set at 16 names a week, which leaves headroom for the weeks the office loses to a busy season.
Results at the next review: 209 names assigned, 178 actually touched at least once, and 38 booked. Read that carefully, because both denominators are meaningful and they say different things. Against names touched, the booking rate was 38 of 178, or 21%. Against names assigned, it was 38 of 209, or 18%. The gap between those two is the 31 names that were never touched, and chasing that gap is cheaper than improving the script.
The permanent dispositions were the quieter win: 22 records came back as "no longer needs this service" or "moved," and 17 came back as "call back in a stated month." The 22 came off every future list, shrinking next quarter's work. The 17 went to the top of next quarter's ranked list and, when the shop checked a year later, had booked at a materially higher rate than cold Slipping names, which is what you would expect from a customer who told you when to call.
The Dormant bucket at 210 and the Cold bucket at 140 were deliberately not worked this quarter. That is the discipline the sizing step enforces: 209 Slipping names at a 21% booking rate on touched names is better use of 26 hours than spreading the same hours across 559 names at a much lower rate. The Dormant and Cold buckets get their own treatment, which is an audit before any outreach rather than outreach directly.
Verification
At the end of each quarter, three checks, in this order.
Did the buckets sum? Every record in the source set must land in exactly one bucket or one removal reason. Records that vanish between the pull and the buckets are the shop's blind spot, and they are usually the oldest and most incomplete records, which is to say the ones most likely to be genuinely lost customers.
Did the touches happen? Compare assigned to touched. Under about 80% touched means the quota was set above real capacity, and the correct fix is a smaller quota, not a reminder to try harder. A quota that is missed every week stops functioning as a quota by about week five.
Did anything get a permanent disposition? A quarter that produces bookings but no dispositions means the office is only logging the good outcomes. That list will get slowly heavier every quarter until it is unworkable, and the shop will conclude the review does not scale when what actually failed was the logging.
References
- U.S. Federal Trade Commission, for CAN-SPAM and the Telemarketing Sales Rule including the National Do Not Call Registry
- U.S. Federal Communications Commission, for the TCPA. The TCPA is an FCC instrument, not an FTC one, and shops routinely attribute it to the wrong agency when they go looking for the rule
- Trade-standard practice for service-interval definition and deferred-work tracking
- See related: The Dormant List Audit SOP
- See related: How to Write a Win-Back Message That Gets Answered
- See related: What It Costs to Replace a Customer Versus Keep One