Selling, billing and actually servicing a recurring maintenance plan: enrollment funnel, entitlement tracking, visit scheduling and dunning.
Bring your stack to a call and we will scope it against how your business actually runs.
Book a callEvery home services owner who has read a book about business knows they should have a service plan. Recurring revenue smooths the winter trough, a plan member calls you instead of searching, and a maintained system fails less often and generates fewer angry call-outs. So most of them launch one. A surprising number of those plans are, within eighteen months, a spreadsheet with forty names on it, a handful of standing orders nobody reconciles, and a quiet agreement in the office never to mention it to new customers.
The failure is almost never the offer. It is the servicing. A plan is a promise to do something on a schedule, and nothing in a typical trade business is built to remember a promise eleven months out. The included annual visit does not get booked unless the customer rings to ask for it, which the conscientious ones do and the rest do not. Six months in, a member who has paid every month and received nothing cancels, and they are right to. Meanwhile the member who does ring gets treated exactly like a stranger, because the person answering the phone has no way of knowing they are a member until they say so, and even then has no way of knowing what they are entitled to.
The money leaks in three directions at once. Involuntary churn: a card expires, the payment fails, and nobody finds out for two months because failed-payment emails go to an inbox nobody owns. Unfulfilled entitlement: the visits that were sold and never delivered, which is both a liability and the direct cause of voluntary churn. And unrealised upsell: members are the warmest list a trade business will ever own, and most businesses cannot even produce a clean list of them. This build makes the plan an object the system understands. A tier, a subscription, an entitlement count, a visit schedule, a renewal date and a status, so that the promise gets kept automatically and the failures surface the day they happen rather than the quarter after.
Two pipelines, because selling a plan and servicing a plan are different jobs with different owners.
Plan Enrollment: the sales side:
Member Servicing: the delivery side, where every active member lives for as long as they are a member:
BO carries most member service contact, and the guardrails here are tighter than anywhere else in these builds because BO is talking about a contract.
Trigger: Job Debrief submitted, or a daily scan of customers with a job completed in the last ninety days and no plan.
Conditions and branches: exclude anyone with Plan Status other than None, anyone tagged plan-not-suitable, and anyone offered a plan in the last six months. Branch on equipment age to pick the recommended tier: newer equipment fits Essential, older or multiple appliances fit Protect, and a property with three or more covered items fits Protect Plus.
Actions in order:
Stop and exit conditions: three messages maximum, then silence for six months. Stops on enrollment, on a consultation booking, on any reply declining, or on plan-not-suitable being applied. Never runs on a contact with service-recovery-open.
Trigger: Plan Enrollment form submitted on the order form.
Conditions and branches: branch on whether the first payment succeeded. Branch on Billing Frequency. Branch on whether the equipment listed is within eligibility rules.
Actions in order:
Stop and exit conditions: exits once Plan Status is Active and the servicing record exists. If the payment never succeeds, hands to workflow 3.
Trigger: Plan Status is Pending Payment for more than fifteen minutes.
Conditions and branches: branch on the processor's decline reason. An authentication failure needs a different message from an insufficient-funds decline.
Actions in order:
Stop and exit conditions: stops on payment success, which returns to workflow 2. Two automated messages and one human task, then close.
Trigger: daily scan of active members where Next Visit Due falls within sixty days and Visits Used This Year is below Visits Included Per Year.
Conditions and branches: branch on whether a visit is already scheduled. Branch on whether the window is about to close. Branch on Plan Tier for slot length.
Actions in order:
Stop and exit conditions: three member messages, then a human task, then an internal escalation. Stops on booking or on the plan ceasing to be active. Never sends while payment-failed or cancellation-requested is present.
Trigger: daily scan where Payment Method Expiry Month falls in the current or next month, or the processor flags an upcoming invoice with an expiring method.
Conditions and branches: branch on whether the processor's automatic card updater has already replaced the method. If so, exit silently and send nothing.
Actions in order:
Stop and exit conditions: stops on update, on the updater handling it, or on cancellation. Two messages and one task maximum. Preventing the failure is always cheaper than recovering it.
Trigger: payment-failed webhook from the processor.
Conditions and branches: branch on Last Payment Failure Reason: insufficient funds gets different timing and wording from an expired card or a hard decline. Branch on Dunning Attempt Count. Branch on tenure: a member of three years gets a phone call earlier than a member of three weeks.
Actions in order:
Stop and exit conditions: stops instantly on successful payment or on the member canceling. Four messages across two weeks, then human ownership. Members in dunning are excluded from every campaign, every review request and every upsell for the duration.
Trigger: daily scan where Plan Renewal Date falls in forty-five days.
Conditions and branches: branch on whether the terms are changing at renewal. Branch on whether the member actually received their entitled visits. A member who received nothing must not be sent a summary claiming value.
Actions in order:
Stop and exit conditions: the formal renewal notice sends regardless of engagement, because it is a compliance artefact rather than marketing. Stops on cancellation. Upgrade messaging is suppressed for anyone in dunning, at risk, or with an open complaint.
Trigger: Cancellation Request form submitted, inbound message BO classifies as a cancellation request, or the processor reporting a customer-initiated subscription cancellation.
Conditions and branches: branch on Cancellation Reason. Branch on whether the member received their entitled visits. Branch on whether a complaint is open. If so, skip every save attempt and go straight to a human.
Actions in order:
Stop and exit conditions: cancellation always completes within the contractual notice period, regardless of save outcome. One save attempt, by a human, logged. No automated message ever attempts to talk a member out of canceling.
Trigger: win-back-eligible applied, or Plan Status set to Lapsed thirty days earlier.
Conditions and branches: branch on Cancellation Reason: complaints, service failures and opt-outs are permanently excluded. Branch on whether their equipment is still within eligibility.
Actions in order:
Stop and exit conditions: two messages, ever. Stops on any booking, on opt-out, or on a reply asking to be left alone. Permanently excluded for anyone whose cancellation reason was a service failure or complaint.
The plan stops being a spreadsheet and becomes a state machine. Plan Status is authoritative, written only by automation, and read by the phone system, the calendars, every campaign's suppression logic and every report. That single piece of discipline is what makes everything else possible: whoever answers the phone knows who they are talking to, and the business can produce a clean member list on demand.
The entitlement gets delivered. Before this build, the included visit happened if the customer remembered to ring. Afterwards, the scheduling window opens on a date the system calculated, the member is invited three times, and if the window closes unfulfilled the record lands in Visit Overdue where it is visible as an unmet obligation rather than quietly becoming a cancellation three months later. Running a plan without that stage is running an unmeasured liability.
Involuntary churn largely disappears, which is the fastest financial win in the build. Expiring cards get caught before they fail. Failures that do happen get a structured retry and message sequence instead of an email to an unwatched inbox. And a member is never canceled by silence: a person decides.
Finally, cancellation becomes information. A reason from a fixed list, captured every time, tells you whether people leave because the plan stopped feeling worth it, because they never got a visit, because they moved house, or because of one bad experience. Those are four completely different problems and before this build they all looked the same.
Metrics to watch:
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