All articles

Custom CRM

Repeat Business From Past Customers: 2-Year Clock

59% of home service pros say repeat work and referrals are their top lead source. Here is the recurrence clock that decides what your repeat rate can be.

Om Patel 16 min read
Photo: Buddha Elemental 3D / Unsplash

The short answer

Repeat business is a timing problem, not a discipline problem. Every trade has a recurrence interval set by the equipment it installs, and that interval caps your realistic repeat rate. Contact past customers on the asset's clock rather than a newsletter schedule, and note that in Canada implied consent to email them expires two years after their last purchase.

The reason your past customers hire someone else is almost never that they were unhappy. It is that you contacted them on a schedule that had nothing to do with when they needed anything.

Here is the answer up front: repeat business runs on the clock of the thing you installed, not on your marketing calendar. A water heater is a six to twelve year clock. A garage door opener is ten to fifteen. A 3-tab asphalt roof is twenty. Pull those dates out of your job history, put them in a field, and let them fire. That single change beats every quarterly newsletter you will ever write.

The one number that decides everything: your recurrence interval

Before you write a single message, work out how often your work actually needs doing again. Every piece of generic retention advice on the internet assumes the answer is "soon." For most trades it is not.

InterNACHI publishes a standard estimated life expectancy chart for homes that home inspectors use to age a property. Read it as a marketing calendar instead and it tells you, per trade, when your past customer becomes a live opportunity again.

ComponentService life (years)What the second job actually is
Toilet tank components5Small service call, high frequency
Carbon monoxide detectors5Replacement, easy add-on
Sump pump7Replacement before a wet basement
Water heater (conventional)6 to 12Replacement, often urgent
Exterior paint7 to 10Full repeat of the original job
Air conditioner (central)7 to 15Replacement, high ticket
Garage door opener10 to 15Replacement, then the door later
Heat pump10 to 15Replacement, high ticket
Faucets and spray hose15 to 20Service or upgrade
Asphalt driveway15 to 20Full repeat
Furnace15 to 25Replacement, high ticket
Wood fencing20Full repeat
Asphalt shingles (3-tab)20Full repeat, once
Garage doors20 to 25Full repeat, once
Asphalt (architectural)30Effectively never, for you

Source: InterNACHI's Standard Estimated Life Expectancy Chart for Homes.

Now the uncomfortable part. If you install architectural shingles, the customer you roofed in 2024 will need you again in 2054. No follow-up cadence, loyalty discount or seasonal email changes that. A retention article that tells a roofer to target a 70% repeat rate is selling arithmetic that does not exist.

Watch out

The trades most aggressively sold "customer retention" software are frequently the ones with the longest recurrence intervals. Roofing, window replacement and full HVAC changeouts have the highest ticket and the lowest natural repeat frequency. That combination is exactly what makes the pitch appealing and the results disappointing.

Four recurrence tiers, four different mechanisms

Once you know your interval, the right mechanism is basically determined. Pick the wrong one and you will work hard at something structurally incapable of paying off.

Tier 1, sub-annual (cleaning, lawn, pest, pool, snow). Your work repeats inside a year. The mechanism is a subscription or a route: recurring scheduling, auto-renew, and pricing that assumes the relationship continues. Reactivation here means noticing a cancelled route stop within one cycle, not a campaign.

Tier 2, annual (HVAC tune-ups, chimney, gas safety, alarm monitoring, backflow testing, septic). The mechanism is a maintenance agreement. The customer has a recurring need, they just do not track it. You do.

Tier 3, five to fifteen years (water heaters, openers, sump pumps, driveways, exterior paint, HVAC equipment). This is where the asset clock does the work. You are not staying top of mind for a decade with newsletters. You are setting a date on the file and hitting it. A message that says "your water heater turns nine this March, here is what usually goes first" outperforms everything else you could send that quarter, because it is the only message that is about them.

Tier 4, fifteen years and up (roofs, windows, garage doors, siding, fences). You will not get a second job from most of these customers. Stop pretending otherwise and mine the two things that do pay: referrals, and adjacent work you are already qualified to do. The roofer who installed in 2024 will not need a roof, but they will need gutters (20 to 40 years for aluminum, so also once) and, more usefully, they know six neighbours with roofs the same age as theirs, because subdivisions get built at the same time.

That last point is the one operators miss. In a tract subdivision, recurrence interval and street address are correlated. If you replaced a 1999 build's furnace this year, the identical furnace is failing in every house on that street. Your past customer list is a map, not just a contact list.

Your list has an expiry date, and most owners do not know it

This is the part no US retention article covers, and it decides what you are legally allowed to send.

Canada's Anti-Spam Legislation gives you implied consent to send commercial electronic messages to people you have an existing business relationship with. That consent is not permanent. The Act defines the relationship as arising from the purchase or lease of a product, goods, a service, land or an interest in land "within the two-year period immediately before the day on which the message was sent." An inquiry that never became a job gives you six months.

Read that against your shoebox of past jobs. If you last invoiced someone in 2022, your implied consent under CASL is gone. You need express consent, or you need a channel CASL does not cover, such as a phone call or a piece of physical mail.

Two practical consequences:

  1. Every transaction resets the clock. A repair visit in year four of a ten-year water heater buys you two more years of implied consent, which happens to bridge you to the replacement conversation. Small paid service calls are not just revenue, they are consent renewal.
  2. Collect express consent while you are on site. A single checkbox on the job completion form ("send me service reminders for this equipment") converts a two-year timer into consent that does not expire until they withdraw it. It costs nothing and it is the highest-leverage line on your paperwork.

For US operators, the equivalent trap is the FCC's TCPA consent revocation rule, effective April 11, 2025. Consumers can revoke consent by any reasonable means, you must honour it within ten days, and you get exactly one confirmatory text containing no marketing content. If they do not reply to that confirmation, their silence counts as revoking consent for all automated commercial calls and texts. A reactivation blast sent from a platform that only recognises the literal word STOP is not compliant.

Most of this is a data problem, not a marketing problem. Pavado builds custom CRM systems for trades that store the asset alongside the customer, fire the reminder on the install date, and track consent so you know which part of your list you can legally email today.

Book a free CRM demo

Store the asset, not just the customer

Everyone tells you to "use your CRM." Nobody tells you what fields to put in it, which is why the advice never survives contact with a Tuesday.

An HVAC contractor on r/hvacadvice, u/Yanosh457, described what a workable record looks like when explaining how to structure a service agreement: list all equipment covered by serial number or unit number, list what you will do to them, and list at what interval. That is the schema. Applied to your whole customer base rather than just agreement holders, it looks like this:

FieldWhy it exists
Equipment make, model, serialLets you recall, warranty-claim and quote accurately without a site visit
Install or last-service dateThe trigger. Everything else is decoration without it
Expected service lifeSet from the InterNACHI chart at install, adjusted by what you saw
Next-due dateComputed, not typed. This is what the automation reads
Warranty expiryThe single most credible reason to make contact
Quoted but not doneThe fastest revenue in the whole database
Consent status and dateCASL two-year timer, or express consent on file
Referral givenTells you who to call first, and who to thank

The "quoted but not done" field deserves its own paragraph. Every shop has a pile of estimates the customer approved in principle and never scheduled: the second bathroom, the panel upgrade they deferred, the unit they patched instead of replacing. Those are not cold leads. They are documented, priced, already-wanted work sitting in a folder. If you do nothing else in this article, pull that list. We wrote separately about how to follow up on a quote without being pushy, and the same cadence applies to estimates that went cold months ago.

Another operator in the same thread, u/JodyB83, flagged the failure mode: "The biggest thing is having a system in place that keeps track of when their visits are. You don't want to collect money, then never do the work." Selling recurring commitments you cannot administer is worse than not selling them.

What maintenance agreements actually earn

For Tier 2 trades this is the highest-retention instrument available, and the honest version of the pitch is more useful than the marketed one.

u/Upset_Analyst5518, describing typical structures on r/hvacadvice, laid out plans running one, three or five years with a lowered diagnostic fee, 10 to 20% off parts and a credit toward a new unit, priced so longer terms are cheaper per year: roughly $190 for two visits on a one-year plan, about $300 for a three-year plan. The selling moment they described is worth stealing: introduce the agreement while you are already writing a $700 diagnostic and repair, because the 15% member discount saves the customer money on today's invoice. The plan effectively pays for itself before they have signed it.

Then the candid part: "Service agreements aren't necessarily money makers but the rapport is worth it."

That is the correct way to think about it. The plan fee is close to break-even once you have paid a technician to make two visits. The return is that you are the default vendor for the next failure, and that two annual visits on the equipment surface repairs nobody would have called you about. An owner in the same subreddit, u/Mediocre_Fee_4784, described running handshake maintenance plans with customers who had been loyal for five to twenty years and wanting to formalise them, which is the right instinct: the relationship already existed, it was just undocumented and therefore unsellable and untransferable.

If you are Tier 3 or Tier 4, do not force this. A roofer selling an "annual roof maintenance plan" to a homeowner with a five-year-old roof is selling a visit that finds nothing. An annual inspection offer after a major storm is a different and much better product.

Segment before you send, or do not bother

The single most common mistake is blasting one message to the whole list. A commenter on r/smallbusiness, u/Difficult-Beyond5764, put the fix concisely: split the list into recent customers and lapsed ones, because "a customer who came in last week and one who hasn't shown up in eight months need completely different messages, and the second group is where the actual money is." Their other recommendation was to make the lapsed message look like a person wrote it, plain text, no branded template, no coupon in the subject line, because every inbox is already full of branded blocks.

Adapted for a trade, the four segments that matter:

  1. Active, under 12 months. They know you. This group gets service reminders and review requests, not offers.
  2. Lapsed, 12 to 24 months. Still inside CASL implied consent. This is your reactivation group. One plain message referencing the specific work you did.
  3. Aged out, over 24 months. Outside implied consent for email. Phone, mail, or a re-permission ask through a channel you have express consent on.
  4. Quoted, never booked. Highest intent in the database regardless of age. Call these, do not email them.

And set expectations honestly. u/Fortestingporpoises, describing texting inactive clients with big discounts, said: "It may work for 1 out of 100 but that's something." That is the realistic shape of a cold blast to an aged list. Eight hundred contacts is not eight hundred jobs. It is a handful of jobs, which is still an excellent return for an afternoon of work, but only if you budgeted an afternoon rather than a retainer.

Expect the first send to an old list to be ugly in one specific way. As u/Acrobatic_Car9413 noted on the same thread, "at first you will likely find a lot of folks unsubscribing because the list is so old and many people move." Bounces and unsubscribes on send one are the list cleaning itself, not a verdict on the strategy.

Measure booked jobs, not opens

Whatever you send, do not judge it by open rate. Stripo's 2026 B2B benchmark study, built on roughly 15 billion emails across 939 companies and 46 industries, found that 49.29% of every tracked open is Apple Mail Privacy Protection fetching the tracking pixel on a schedule of Apple's choosing, not a human reading anything. The same study puts true human open rates at 15 to 25% while dashboards report 35 to 55%.

A commenter on r/smallbusiness, u/highwaymarketingco, described the workaround for a local business better than most analytics vendors do: put one redeemable thing in every send, a code word or an offer that only ever goes out by email, and count how many people mention it. For a trade that translates to a distinct booking link or a phrase the office asks about on the phone. Then the only metric you need is jobs booked in the 14 days after the send, attributed to the send.

If you have never done this, our guide to tracking where your leads come from covers the attribution plumbing.

By the numbers

Jobber's 2026 Home Service Trends Report surveyed 1,050 US home service business owners in December 2025 (±3 percentage points at 90% confidence). 59% named referrals and repeat work as their top source of leads. The same survey found 74% of these businesses have no FAQ section on their site, 65% do not show business hours and 43% do not clearly list their service areas. The channel they rely on most is the one they invest in least.

A 30-day run you can actually finish

Not a strategy. A list of things to do, in order, that ends with jobs on the board.

Week 1, build the file. Export every job from the last five years into one sheet: name, address, phone, email, job date, what you installed, and whether you have consent on record. Add a column for expected service life from the InterNACHI chart. Add a computed next-due date. This is tedious and it is the whole job.

Week 2, work the three warm lists. Call everyone in "quoted, never booked." Call everyone whose equipment is inside two years of its expected end of life. Call every customer whose warranty expires in the next 90 days. These are phone calls, not emails, and they are the highest-yield hours in the month.

Week 3, send one plain message to the 12 to 24 month segment. Reference the actual job. No template, no discount in the subject line, one specific reason to reply. Include a redeemable phrase so you can count it.

Week 4, close the loop so this never becomes a project again. Put install date, serial, warranty end and next-due into whatever system you use, add a consent checkbox to the job completion form, and set the reminder to fire automatically. If your current tool has no field to put an install date in, that is your answer about whether the tool fits the work. Our signs you have outgrown your CRM post covers when to stop patching around it.

The objection worth taking seriously

Not every shop should do this, and pretending otherwise is dishonest.

On r/Plumbing, u/Furrealyo observed that "there are way more customers than there are plumbers so a lot of plumbers just don't care about repeat business." Another commenter, u/thekid13100, described working for a shop running roughly 100% margins: "He rarely had repeat customers but he got enough money off them the first time that it didn't matter. Terrible way to do business but he's been going for 15 years now."

They are describing something real. In a market with excess demand and a high enough average ticket, a single-transaction model works. It is not the business most owners want to run, and it is fragile the moment demand softens or a competitor with a database starts calling your customers on their equipment's clock. But it does work, and if you are turning down jobs today, retention is not your binding constraint. Capacity is, and keeping the crew busy in the slow season is a different problem with different answers.

The case for building the file anyway is that it is the only marketing asset you own outright. Ad platforms change, lead sellers resell your leads, Google reshuffles the map pack. A list of 900 households, with the make and model of the equipment in each one and the date it goes bad, is yours. It compounds with every job you finish, it costs nothing to maintain once the fields exist, and it is the single largest line item in what your business is worth when you eventually sell it.

Most owners already have the raw material. It is sitting in invoices, in a filing cabinet, in a phone's text history. The work is not acquiring it. The work is putting a date next to it.

Frequently asked questions

How do I get repeat business from past customers?
Contact them on the clock of the thing you installed, not on a generic quarterly schedule. Pull every past job, record the install date and expected service life of the equipment, and set the outreach date from that. A water heater installed six years ago and a furnace installed six years ago are two completely different messages, and sending the same newsletter to both is why most past-customer campaigns produce nothing.
What is a realistic repeat customer rate for a contractor?
It depends almost entirely on how often your work needs doing again. Pest control, cleaning and lawn care can run above 60% because the service repeats within a year. Plumbing and electrical service sit lower because the next call is unpredictable. Roofing and window replacement will never post a high repeat rate, because InterNACHI puts 3-tab asphalt shingles at 20 years and architectural at 30. For those trades the return on a past customer is a referral or an adjacent job, not a second roof.
Is it legal to email or text past customers in Canada?
Under CASL you have implied consent from an existing business relationship, but it expires. The Act defines that relationship as arising from a purchase or lease 'within the two-year period immediately before the day on which the message was sent,' and six months for an inquiry that never became a job. A customer you last invoiced three years ago is outside implied consent, so you need express consent or a different channel.
How often should I contact past customers?
Twice a year is a reasonable floor for a general check-in, but the messages that actually book work are the ones tied to a date on that specific customer's file: a warranty expiry, an annual service due, an install anniversary that puts their equipment near the end of its service life. Volume is not the lever. Relevance is.
Do maintenance agreements actually make money?
Not usually on the plan fee itself. An HVAC operator on r/hvacadvice described typical structures as roughly $190 for two visits on a one-year plan and about $300 for a three-year plan, and said plainly that service agreements 'aren't necessarily money makers but the rapport is worth it.' The money is in being the default vendor when something breaks, plus the repairs found during the visits.
What is a good response rate for a reactivation campaign?
Lower than the vendors selling reactivation software suggest. One operator on r/smallbusiness who texts inactive clients with large discounts described it as working 'for 1 out of 100, but that's something.' Treat a list of 800 past customers as a source of a handful of jobs per send, not 800 jobs, and price the effort accordingly.
Why is my email open rate useless for measuring this?
Because roughly half of it is a machine. Stripo's 2026 benchmark study, covering 939 companies and about 15 billion emails, found 49.29% of tracked opens are Apple Mail Privacy Protection prefetching the pixel rather than a person reading. Count booked jobs in the 14 days after a send instead, tagged to the send.
What should I track in my CRM to make repeat work automatic?
The asset, not just the contact. Record equipment make, model and serial, install or last-service date, warranty expiry, next-due date, and what you quoted but did not do. An HVAC contractor on Reddit put it directly: list every unit by serial number, what you touch, and at what interval. Without those fields there is no trigger to fire and outreach stays a manual chore nobody does.
Bespoke pipelines, automations, 360° customer records and real-time reporting, a CRM built around how your team actually works, connected to your entire stack.
Book a free CRM demo

Free tools

Find out what your site is costing you.

Enter your address and we check the real page. Scores are free and the itemised report lands in your inbox. No account, and we change nothing on your site.