Service and recall reminders that fire on whichever comes first, time or usage, by estimating each vehicle's mileage between visits.
Bring your stack to a call and we will scope it against how your business actually runs.
Book a callNearly every service reminder in the industry is sent on a calendar. Six months after the last visit, everyone on the list gets the same email. It is simple to build and it is wrong for most of the list. The retired customer who drives 3,000 miles a year gets told their oil is due when it is not, learns the reminders are noise, and stops reading them. The delivery driver who covers 2,500 miles a month blew past the service interval in week nine and never heard a word. The reminder that would have earned the booking arrived four months late.
Manufacturer intervals are written as a pair: every twelve months or every 10,000 miles, whichever comes first. Almost nobody's reminder system models that pair, because modeling it requires knowing something the shop does not routinely capture: how fast this particular vehicle accumulates miles. That number is sitting in the data. If you recorded the odometer at the last two visits and the dates of those visits, you have a daily usage rate, and from the rate you can project the date each vehicle will cross its next mileage threshold. The shop stops guessing and starts forecasting.
The same gap breaks safety recalls and time-bound items. A recall notice posted by the manufacturer goes to the registered keeper and the shop has no idea who on its own list is affected, so the work goes to whoever happens to open the letter. Brake fluid, coolant and cabin filters are time-based regardless of mileage, and tires age out on date rather than tread. Without a model that tracks both axes per vehicle, those items are only ever caught opportunistically, during a visit that happened for another reason. This build replaces the single six-month blast with a per-vehicle projection, a dual-axis trigger, and a separate recall and campaign track that targets exactly the affected vehicles. It is rated Advanced because the mileage estimation, the per-vehicle interval table and the recall matching all need to be designed deliberately, not switched on.
A dedicated pipeline, Service Due, separate from the booking pipeline. An opportunity is created here the moment a vehicle is projected into a due window, and it either converts into a booking or closes.
Run a parallel pipeline, Recall and Campaign, with four stages: Affected Identified, Notified, Scheduled, Completed. Recalls need their own board because completion is a compliance record, not a sales outcome.
This build lives or dies on its fields. Create all of them before writing a single workflow.
BO handles the inbound replies this build generates, and there will be many: mileage numbers, “I sold it”, “not due yet”, “what does this cover”. BO may read a number from a reply and write it to current_mileage after a sanity check, confirm the service type due, offer slots from the Due-Window Booking Page, process a snooze request, and record a vehicle as sold.
Guardrails: BO must never quote a price for the due service, never state that a recall is or is not safety-critical beyond the manufacturer's own wording, and never argue with a customer who says the vehicle is not due. If a customer disputes the projection, BO accepts it, asks for the current odometer reading, and lets the recalculation settle it. BO must reject implausible mileage readings (lower than the previous reading, or implying a daily rate above 400 miles) with “Just to check I've got that right. Can you read it off the dash again?” and must escalate to a human on the second failure rather than writing bad data. On any recall conversation BO's script is fixed text supplied by the shop, quoting the manufacturer's own description, with a handoff offer on every message.
One vehicle, from the odometer reading taken at its last visit to the booking eleven months later.
Eight workflows. Workflow 8 is the governor. Build it first, because every other workflow in this build defers to it. Every SMS action everywhere carries the same suppression set: not sms-opted-out, not reminders_paused, not reminder-snoozed, inside quiet hours, and inside the frequency cap.
Trigger: current_mileage changed, by any route: Shop Arrival Check-In form, Mileage Check-In form, BO writing a value from a reply, or an inbound sync from the shop management system.
Conditions and validation, in order:
Actions:
Exit: fields written, or two validation failures.
Trigger: scheduled daily at 2:00am.
Conditions: vehicle_status is Active and reminders_paused is unticked.
Actions:
Exit: sweep completes. Stateless, re-runs nightly.
Trigger: opportunity created in Projected Due.
Conditions: passes the governor in workflow 8.
Actions:
Exit: appointment booked (move to Booked, hand to Service Bookings), snooze taken, opt-out, or the ladder completes and workflow 5 takes over.
Trigger: tag rate-unknown or mileage-stale applied, or monthly on the 3rd for the standing population of both.
Conditions: no Service Due opportunity currently in an active reminder stage, so this never collides with workflow 3.
Actions:
Exit: a reading received, vehicle marked sold, or the 30-day step completes.
Trigger: today is past projected_due_date and the opportunity is not Booked.
Actions:
Exit: booking made, vehicle marked sold, opt-out, or lapsed applied.
Trigger: scheduled weekly on Tuesday at 9:00am, evaluating the date fields.
Conditions: each item has its own interval, and the workflow runs independently of mileage entirely.
Actions:
Exit: item date updated at a visit, or the item is booked.
Trigger: a recall record is loaded by the service manager, or the recall feed delivers a new bulletin.
Actions:
Exit: recall completed, vehicle marked sold, or the record is escalated to postal notice.
Trigger: runs as a condition set every other workflow checks, plus a daily 1:00am pass.
Rules it enforces:
Exit: never. This workflow is permanent infrastructure.
The size and state of the existing odometer history is the single biggest variable in this build, followed by whether the shop management system can be integrated. Book a call at bookings.appbo.io to scope it against your data.
Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.
Book a call