Recurring service agreements that bill on their own and schedule themselves ahead of each season, instead of waiting for the customer to remember.
Bring your stack to a call and we will scope it against how your business actually runs.
Book a callAlmost every home services business sells some version of a maintenance plan, and almost none of them run it as a system. The agreement is signed, the customer is charged, and then the obligation to deliver it sits in a spreadsheet that someone is supposed to work through in spring. In practice the spring tune-ups get booked in June, the autumn ones in November, and a meaningful share never get booked at all - which means the business has taken money for work it did not perform and has no idea how often that happens.
That is the operational failure. The commercial failure is larger. A maintenance plan is the only thing in a home services business that produces predictable revenue, fills the dead weeks between peak seasons, and creates a reason to be inside a customer's home twice a year - which is where replacement work is discovered. Run badly, it does none of that. The calendar still collapses into two frantic peaks with two dead troughs. Plans lapse quietly because a card expired and nobody chased it. Customers who paid for two visits and received one do not renew, and they do not say why.
And the seasonal timing itself is the part automation is actually good at. Nobody wants a furnace tune-up in January; they want it in September, which means the booking conversation has to start in August, which means it has to start without anyone remembering. Businesses that chase it manually always start too late, because the moment they should be filling September is the moment they are busiest with summer emergencies. This build makes the plan bill itself, schedule itself ahead of each season, and surface the ones that did not get delivered while there is still time to fix it.
Two pipelines, because selling a plan and delivering a plan are different jobs with different failure modes.
Plan Enrollment - the sales side:
Maintenance Visits - the delivery side. One opportunity per entitled visit per season, created automatically, so an undelivered visit is a visible object rather than an omission:
BO runs the season booking conversation and the payment-failure conversation, and neither of those is a sales conversation.
One customer across a full plan year, from the moment the plan is offered to the moment it renews.
Eight workflows. Workflow 2 is the one that makes the build work - if visit obligations are not created as objects at enrollment, every other workflow is guessing.
Trigger: a job reaches Work Complete, or a completed-job tag is applied.
Conditions: exit if the contact already carries plan-active, if they carry a detractor tag from the job, or if job_type was Warranty. Never sell to someone whose repair just went badly.
Exit: enrollment completed, declined, opt-out, or sequence end.
Trigger: Plan Enrollment form submitted with payment authorization successful.
Exit: welcome sent and visit obligations created.
Trigger: the season window start date is reached, for every Maintenance Visits opportunity with matching season_window at Due This Season.
Conditions: exit if plan_status is anything other than Active - a plan in Payment Failed or Paused does not get offered visits until it is resolved. Spread the trigger across the first two weeks of the window rather than firing every contact on day one, or the booking replies will arrive faster than the office can absorb them.
Exit: booked, deferred, window closed, or opt-out.
Trigger: maintenance appointment on a season calendar.
Exit: visit completed and report sent, or appointment canceled.
Trigger: daily, checking every Maintenance Visits opportunity against its season window end date.
Exit: visit booked or delivered, or the miss recorded and escalated.
Trigger A - payment failure reported by the processor.
Trigger B - card_expiry is 30 days away. Apply card-expiring and send one email with the update link. Wait 14 days; if unchanged, send one SMS. Preventing the failure costs one message; recovering from it costs five.
Exit: payment resolved, or plan lapsed and owner notified.
Trigger: 60 days before plan_renewal_date.
Conditions: exit if plan_status is Lapsed or Canceled. Branch the whole sequence on whether visits_delivered_this_term equals visits_entitled_per_year - you cannot ask for a renewal the same way when you under-delivered.
Exit: renewed, changed, or handed to a human.
Trigger A: plan-lapsed applied.
Trigger B - priority response: an emergency request arrives from a contact with priority_response set and plan_status Active.
Exit: request dispatched, or win-back sequence complete.
The plan stops being a promise and becomes a product. Every entitled visit exists as a record from the day of enrollment, so the question "have we delivered what we sold?" has an answer rather than a shrug. The season booking conversation starts when it should - weeks before the weather turns - and it starts without anyone in the office having to remember during the busiest month of the year.
The calendar flattens. Because season calendars open the quiet weeks first and stay closed during peak emergency periods, maintenance work fills the troughs it was always supposed to fill. That changes the economics of the whole business: technicians stay busy in the shoulder weeks, and peak capacity stays available for the work that pays most.
Revenue stops leaking quietly. Expiring cards get caught before they fail, failures get a calm factual sequence rather than silence, and lapses get a reason attached. Renewals lead with a delivery record rather than an invoice, and under-delivered plans are routed to a human instead of being asked to renew by email - which is the difference between a renewal conversation and a complaint.
And the equipment record becomes an asset. Two visits a year, each updating make, model, age and condition, produces the most valuable list a home services business can own: properties with equipment approaching end of life, flagged by a technician who was standing in front of it. That list is handed to a person, not to a campaign.
Effort depends on the number of tiers, how many service types each covers, the state of existing equipment records, and whether billing has to integrate with an accounting system already in use. Book a call at bookings.appbo.io to scope it against the plan the business actually wants to sell.
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