Skip to main content
All schedule & jobs articles

Maintenance reminders — recurring revenue without a contract

Cadence-based SMS + email to past customers when service is due. Auto-suppressed if they're already on the calendar.

Updated 2026-05-01

Every contractor has services that should repeat: annual furnace tune-up, biannual AC service, quarterly drain treatment, twice-yearly chimney inspection. Most contractors lose half that revenue because the customer simply forgets it's due. Maintenance reminders fix that without forcing the customer into a contract.

How it differs from contracts

Service contractsCustomer signs up for recurring scheduled visits. We auto-create the appointments. Some modes auto-bill. Found at /portal/contracts.
Maintenance remindersNo contract. Cadence rule fires SMS + email when ANY past customer with a matching service is approaching due. Customer chooses to book or ignore. Found at Settings → Maintenance reminders.

Setting up a rule

  1. 1
    Pick a service

    Either from your service-types catalog (Settings → Services) or via free-text match against the appointment's service field. Catalog match is preferred — it's exact and survives label changes.

  2. 2
    Set frequency

    How often customers expect this service. Annual = 12, biannual = 6, quarterly = 3. Months, not days.

  3. 3
    Set lead days

    How far before the due date to start sending. 30 = nudge ~1 month before due. 0 = wait until exactly due. Industry default: 30 for annual services, 14 for biannual.

  4. 4
    Save

    The cron picks up the rule on its next 9 AM Mountain run and starts evaluating customers.

How customers get picked

For each rule, the cron looks at every customer whose MOST-RECENT matching appointment was completed between (frequency × 30 − lead days) and (frequency × 30 + 30) days ago. The +30 upper bound means a customer who's 30 days past due gets one final nudge, then we stop nagging. The lead-window lower bound means we start nudging early enough that they can actually schedule before they're past due.

Auto-suppression

If the customer ALREADY has a future appointment for the same service — they're on the calendar — we skip them entirely. No double-nag. The check uses customer_id when available, falling back to phone-number match for legacy customers without a hard customer record.

What the SMS says (default)

Plumb Vine: Hi John, it's been about 11 months since your last AC tune-up. Want to schedule the next one? Reply YES and we'll text you a few times that work.

Custom templates coming with Phase 3I

The rule supports per-rule custom messages today (via the API), but the editing UI for them ships with the email-template wizard (3I in ROADMAP.md). For now, the defaults are good enough — they incorporate business name + first name + months-since.

Don't enable too many rules at once

If you turn on annual AC + annual furnace + biannual drain treatment + quarterly fire-extinguisher all on the same customer, they could get four pings in a year. Industry data: more than 3 reminders per customer per year tips into spam territory and increases STOP rates. Start with one or two of your highest-margin recurring services and add more once you see the response rate.

Ready to try this in the actual product?

14-day free trial, no card charged for 14 days, cancel anytime.

More schedule & jobs articles