Win back expiring service memberships before they lapse
Every morning, customers whose maintenance plan is about to expire get a personal renewal email that points to the work they already received.
Every morning at 7am, find the service memberships that are about to lapse and win them back before they expire. Membership renewals are the highest margin retention lever we have, and most lapses happen simply because nobody reached out in time.
Start in ServiceTitan with "List Memberships" and pull the active memberships whose expiration date falls within the next 30 days. Immediately drop any membership that is already set to renew automatically, since those customers are not at risk of losing anything. For each membership that remains, work out how many days are left until it expires, and only take action when that number is 30, 14, or 7. That way each customer hears from us three times across the final month instead of every single day. If a run was missed and a membership slipped just past one of those marks without having been contacted for it, treat it as due and send once rather than skipping the window entirely.
For every membership that is due for contact, use "List Membership Types" to get the plan's proper name and its renewal price, so the email can state both exactly rather than vaguely.
Then use "List Jobs" filtered to that customer and to the span of the membership term to see what they actually received while they were covered: the completed tune-ups, seasonal inspections, priority service calls, and any other work orders that were finished. This is the single most important input to the email. The pitch is not "your plan is expiring," it is "here is what this plan already did for you." If the term genuinely had no completed visits, do not invent any. Instead lean on what the plan covers and what is still available to them, and use that as a reason to get a visit booked before the term runs out.
Use "List Customers" to get the customer's name and details, then "List Customer Contacts" to find a usable email address for them.
Send the renewal note with Gmail "Send a Message". Write it personally to that one customer: greet them by name, name their plan, state the renewal date and the renewal price plainly, and point to the concrete value delivered during the term by referencing the actual visits that were completed, such as the number of tune-ups and when the inspection happened. Keep the tone warm and appreciative rather than pushy, and close with a clear, easy next step to renew. Adjust the urgency to the window: at 30 days it is a friendly heads up, at 14 days it is a reminder that the date is coming, and at 7 days it is a last call that makes the lapse date unmistakable. Never send if there is no email address on file for the customer.
Finish with a digest to Slack using "Send a Message". List who was emailed, and for each one give the customer name, plan, renewal date, renewal price, and which of the three windows it was. Then list separately, under a clear heading, the customers whose membership is expiring but who have no email address on file, including their phone number and renewal date, so a CSR can call them instead. Note how many auto renewing memberships were skipped. If there was nothing to act on that morning, post a single short line saying so rather than an empty report.
Example output
What does this prompt do?
- Checks every morning for maintenance memberships set to expire in the next 30 days
- Reaches out at the 30 day, 14 day, and 7 day marks instead of pestering the same customer every single day
- Builds each email around what that customer actually got during their term, naming the tune-ups, inspections, and service visits that were completed
- Leaves memberships that already renew on their own alone, so nobody gets a renewal pitch for something they are not losing
- Posts a Slack recap of who was emailed and which customers have no email on file, so a CSR can phone those ones instead
What do I need to use this?
- A ServiceTitan account with memberships and service history in it
- A Gmail account to send the renewal emails from
- A Slack workspace and a channel for the daily recap
How can I customize it?
- Change the reminder windows: 30, 14, and 7 days is the default, but 45 and 15 works just as well for annual plans
- Move the send time off 7am, or switch it to weekdays only so nothing lands on a Saturday
- Decide whether memberships already set to renew automatically should be included or skipped
- Point the recap at a different Slack channel, or send it to the CSR who makes the calls
FAQs
Will customers get an email every single day until they renew?
What happens when a customer has no email address on file?
Does this pester people whose plan renews automatically?
What if we did not actually perform any visits during the term?
Can I change how the emails are written?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.
Every Thursday, rank your team's upcoming flights by how likely they are to run late, and email the fixes while changes are still cheap.
Each month, spot the saved cards about to expire, email the customers still on recurring billing, and rank the revenue at risk in Slack.
Stop letting good memberships quietly lapse.
Recurring maintenance agreements are the most profitable customers you have, and most of them churn simply because nobody reached out in time.