Renewal season rolls around and you send the same agreement you send every year. The customer emails back with one line: "What did we actually get this year?" You pull the file, and there it is. Two visits promised, one delivered. The spring tune-up happened. The fall one never got on the board.
Now you're on defense. The customer paid for two stops and got one, so from where they sit they paid double for half the work. Doesn't matter that July was chaos and your crew was buried. They remember the invoice, not your summer.
Here's the thing worth fixing. You already sold the visits and you already billed them. The only job left is making sure each one lands on the board before the season closes, so the renewal sells itself and you're not eating a free callback on a unit nobody ever got to inspect.
Why the spring and fall stops are the ones that slip
Emergency work always wins. When it's 99 outside and three restaurants have no cooling, a routine filter-and-coil check on a healthy unit goes to the bottom of the pile. That's the right call in the moment. The trouble is the moment barely lets up between May and September.
So the planned maintenance (the PM, the visits your contract promises) gets pushed a week, then a month, then it's October and everyone forgot. Nobody decided to skip it. It just never got scheduled, and a visit that isn't on the board may as well not exist.
The customers who feel it most are the quiet ones. An account that never breaks down is exactly the account whose tune-ups slide, because there's no failure forcing a truck out there. Then at renewal they look at what they paid, count the visits they actually got, and start shopping.
Build the list of what you already owe
You don't need software with a login screen and a monthly fee to start. A single spreadsheet does the job. One row per contract, and a handful of columns that answer the only questions that matter.
- Customer and site, because one customer can have four locations and each needs its own visits tracked separately.
- Visits included per year, usually two or four.
- Last visit date, the real date a tech was on site, not the date it was "due."
- Next visit target, a month or a window, not an exact day.
- Renewal date, so you can see how much runway is left before the customer decides.
Once that list exists, the gaps jump out. Sort by last visit date and the accounts that haven't seen a truck since March float to the top. That's your fall PM call list, and you built it in an afternoon.
Make the tracker nudge you before the season closes
A list you have to remember to check is just one more thing that slips. The part that actually saves you is the nudge, and this is where a little automation earns its keep. You want the tracker raising its hand on its own.
The rule is simple to describe. If a contract includes a spring and a fall visit, and the last visit was more than about five months ago, and the season's window is closing, flag it. A spreadsheet formula can color those rows red. A cheap automation tool can email your dispatcher a short list every Monday: these six accounts are due, book them this week.
Point the same logic at the customer and it works even harder. A short note that reads "Your fall maintenance is included in your agreement, here are two weeks that work, reply with what's easiest" turns a chore into a booked appointment. You're not selling anything. You're delivering what they already bought, and it reads that way.
Keep the cadence boring and predictable:
- A Monday-morning list to the dispatcher of every visit due in the next 30 days.
- A customer email or text when their included visit is ready to book.
- A second flag to the dispatcher for anything still unbooked 30 days out from renewal.
What this tracker won't do, and shouldn't
Be straight with yourself about the limits so you don't over-build it. A tracker knows dates and counts. It doesn't know the rooftop unit at the Westheimer location is on its last legs and needs a longer visit. That judgment stays with you and your techs.
It also won't fix a contract that was priced wrong. If two visits a year don't cover your cost to serve that account, no amount of clean scheduling saves it. The tracker just makes sure you honor what's on paper, which is a different problem from whether the paper made sense.
And it won't chase a customer who's gone dark. Automation can send the nudge, but a site contact who never replies still needs a phone call from a real person. Treat the automated note as the first ask, not the whole conversation.
Worth doing this week
You can stand up the bones of this in a couple of hours, and it starts paying you back at the very next renewal.
- Pull every active service contract and write down visits included, last visit date, and renewal date. One row each.
- Sort by last visit date. Any account past five months with a fall visit still owed is your call list for this week.
- Set one formula or filter that flags a contract as due, so the list updates itself when you enter a completed visit.
- Pick a day (Monday works) for the dispatcher to read the due list and book whatever's open.
- Draft one short customer message for included visits and reuse it every single time.
Do that and the next renewal conversation changes. Instead of explaining why a visit got missed, you're pointing at two stops delivered on a contract that promised two. That's the whole game. If you'd rather have someone set the tracker and the nudges up alongside you, that's the kind of thing we help Houston shops put in place.