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 contracts | Customer signs up for recurring scheduled visits. We auto-create the appointments. Some modes auto-bill. Found at /portal/contracts. |
| Maintenance reminders | No 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
- 1Pick 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.
- 2Set frequency
How often customers expect this service. Annual = 12, biannual = 6, quarterly = 3. Months, not days.
- 3Set 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.
- 4Save
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.
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.
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.