Maintenance Plans

Review accepted maintenance-option plans, their generated visits, rollover, and cancellation in current V2.

Intermediateownermanagersales repUpdated 2026-09-24

Maintenance Plans

Current Clean Estimate V2 creates a maintenance plan in four ways: when a customer accepts the maintenance-plan option on a signed estimate, when a signed-in portal customer joins Suds Club through the optional invoice payment offer (see Optional payment offers), when an eligible residential customer joins the server-priced Suds Club plan from a protected completed-job card on Work, and when the office clicks Build maintenance plan on a saved commercial estimate with quarterly or semi-annual zones (see Commercial quote to maintenance plan). Open Field > Plans to review those agreements and the jobs generated for their planned visits.

V2 does not have Admin > Maintenance Plans, a New Plan button, or a standalone plan builder. Office-authored plans start with the single-screen estimate: include the maintenance option and send the immutable proposal to the customer for acceptance.

A membership joined from an invoice or post-job offer appears in the same Plans workspace named by its own plan label (there is no newly accepted source estimate to name it). It shows Signup pending until Stripe confirms the customer's signup payment, and its visits stay payment-gated until then. Cancelling a post-job Checkout returns the customer to the same Work offer. A retry resumes the same accepted plan and safely reuses its payable session or rotates a provider-confirmed expired session rather than creating a duplicate membership. An unfinished invoice-offer signup retains its existing provider-verified expiry and reclamation behavior.

Plans list

The refreshed Plans workspace keeps the V1 list behavior that current V2 data can support without inventing records. Use search for a customer, property, office, or accepted option. Filter by status or visible office, sort by recent activity, customer, annual value, or next rollover, and move through stable 25-plan pages. Summary cards show total plans, active plans, accepted value normalized per contract year, and plans whose current-year visits are settled and ready to roll. If you change a filter while a lifecycle action is saving, the finished action refreshes the current view rather than restoring the older filter. Acceptance and rollover dates use the service office timezone; an invalid legacy timezone falls back safely until the office setting is corrected.

Desktop uses a full plan table and smaller screens use plan cards with the same contract and lifecycle context, including the service office and deposit requirement. A true empty workspace explains that plans begin with customer acceptance; a search or filter with no match has a separate no-results state.

Each saved plan shows its customer, service location, property, status, contract year and term, billing cadence, annual value, next rollover, and visit count. Open a plan to review:

  • Customer and service location
  • Contract term and current contract year
  • Billing cadence, signed total contract value, and the accepted value normalized per contract year, with cents preserved on contract and visit amounts
  • The accepted option, source estimate, acceptance date, and deposit state; a signed estimate with no deposit requirement is labeled No deposit required rather than appearing unpaid
  • The immutable service cadence grouped by contract year
  • Every generated visit with its linked job, status, appointment or unscheduled target month, crew, and value

Suds Club and any other monthly membership with a persisted Stripe Billing schedule must complete their hosted signup so Stripe can create the signed installments. The job-board Deposit received and Waive actions cannot replace that signup. This rule does not apply to a commercial maintenance agreement whose saved billing terms do not include hosted Stripe signup. If a scheduled membership installment fails, upcoming visits remain payment-gated until every delinquent or refunded installment is resolved; an already active visit continues without interruption.

Start from a template

Start from template on the plans list builds a plan without an accepted estimate. Pick the template, the location, the client, and the property, give the plan a label, check the per-visit price and first-year total the dialog shows (change the Per-visit price ($) if the template's starting price is not right for this customer), and V2 creates the plan with the template's cadence, billing mode, and agreement years. Every workspace starts with a system set (Residential Basic Annual, Residential Seasonal, Residential Premium Multi-Year, Commercial Quarterly Maintenance, Commercial Multi-Site Maintenance) adapted to V2's four season slots.

Skip or reschedule a visit

Each visit on the plan page has two row actions while it is still open:

  • Skip asks why the visit is being skipped and marks it skipped. A

skipped visit is never billed or reminded, and the plan rolls over past it the same way it passes a cancelled visit. A visit that already has an invoice cannot be skipped.

  • Reschedule takes a new date, start time, and reason and moves that one

visit through the normal job scheduling. The plan timeline records the move only when the date actually changed.

Visit and renewal caps

  • Visit cap is the plan's visit-count end condition, the same rule V1's

recurring templates used: visit generation stops when the cap is reached, manual skips count toward it, and a renewed plan starts with a fresh cap. Monthly-billed plans cannot take a visit cap, because their payment schedule runs the full term.

  • Renewal cap is the most successors a renewal chain may have. Manual

renew refuses past it, auto-renewal leaves a capped chain alone, and no renewal notice goes out for it. Both caps are set on the plan page. Leave a cap blank for no limit.

Roll over an active plan

When every visit in the current contract year is complete or cancelled, use Roll over next year. V2 advances the agreement and creates the next contract year's visit jobs exactly once. A year with no planned visits can advance without placeholder jobs. The action stays unavailable while a required deposit is pending, while current-year visits are unscheduled, scheduled, or in progress, or when the next contract year is too far ahead of the calendar. If another office user changes or ends the plan first, refresh guidance replaces an internal lifecycle code.

For an older estimate-backed agreement that predates saved plan properties, rollover resolves the exact customer-approved estimate property before it creates new visits and pins that property directly to each new job. Out-of-scope, cross-customer, or conflicting property lineage stops the rollover without advancing the year or creating work. If neither the historical plan nor its estimate ever recorded a property, the existing nullable legacy behavior remains available only when the plan, estimate, and job still belong to the same customer.

After every contract year has been created, the plan explains whether visits remain or the final service year is still underway. Once the final service year has passed and every visit is settled, use Complete plan to close the term.

Pause, resume, extend, and renew

Life happens between seasons. Pause flags an active plan: its existing visit jobs stay exactly as they are (crews can still finish scheduled work), but the term will not roll over to the next contract year until you press Resume. Paused plans appear under their own status filter on the list.

Extend term appends one to three whole contract years to an unfinished agreement. The added years clone the final contract year's seasons and visit scope, and they materialize through the same guarded rollover as every other year — open visits, calendar timing, and deposit gates all still apply.

Once a plan reaches its final contract year — or completes — Renew plan creates a successor for a fresh term. The renewal starts after the source's last real service year, reuses the accepted cadence shape, materializes its first-year visits immediately, and links back to the original so the office can always see which agreement it continued. The source plan is never modified. Renewal replaces V1's duplicate action: continuing an identical program into a new term IS the duplication that mattered.

A per-visit successor is a separate term and may proceed while a required deposit on the prior acceptance is still unpaid. The original visit remains payment_pending and blocked from scheduling until that deposit is resolved; renewal does not transfer, settle, waive, or release the prior balance. A monthly successor still requires its own signup checkout.

Renewal applies the same legacy-property protection to every newly materialized visit. The historical source remains untouched, while each new job is pinned to the validated service property that belongs to the linked estimate, customer, and office.

Auto-renewal

Every active or paused agreement carries an Auto-renew toggle on its detail page (requires Manage plans; each change is recorded with the acting teammate). It defaults off. A monthly membership billed through a hosted Stripe schedule — including a Suds Club membership joined through the invoice payment offer — cannot turn it on: automatic renewal cannot set up the next term's provider billing yet, and Suds Club's customer-facing terms promise no renewal without the customer's say-so.

With auto-renew on, a daily scheduled task renews the agreement automatically once its term has elapsed and its final contract year's visits exist: the successor uses the same accepted cadence and price as a manual Renew plan, starts in the term year where the source's term actually ends, links back to the source, and keeps auto-renew on so the program continues year over year. The daily run works through every due agreement — one plan's problem never delays the rest. A paused plan never auto-renews (pausing is the office's "do not advance my term"), and a term already renewed manually is left alone. Customer-facing renewal notices are not sent yet; each automatic renewal is recorded for the office.

Renewal notice

Thirty days before an auto-renewing plan's term ends, the customer gets one notice through the workspace's normal message path ("<plan> is set to renew soon at your current price and schedule. Reply if you have questions.") and the plan timeline records that it went out. Plans with auto-renewal off are never notified, and a plan is notified once per term.

Cancel a plan

Use Cancel plan, enter the required reason, and confirm. V2 cancels future unscheduled and scheduled visit jobs while preserving completed work and the agreement history. A plan cannot be cancelled while one of its visits is in progress; finish that visit first so active field work never sits under a cancelled agreement.

For a monthly membership with a Stripe Billing schedule, V2 must stop the future provider charges before it records the local cancellation. If Stripe cannot confirm that stop, the plan and visits remain active and the page shows an error. Verify the organization's Stripe connection, resolve the provider error, and retry Cancel plan; do not treat the membership as cancelled until the action succeeds.

Plan permissions

Every web teammate with access to a plan's service location can review it. Roll over next year, Complete plan, Pause, Resume, Extend term, Renew plan, and Cancel plan require that teammate's individual Manage plans permission. Owners and manager-level teammates shown as admin in V2 receive it by default. An in-scope teammate with Manage team permission can open Settings > Team, select Permissions on a teammate, and grant or remove plan lifecycle access. The server enforces the saved permission even if someone constructs a mutation request manually.

Clean Estimate V1 maintenance-plan reference

V1 included a standalone plan builder with draft activation, multiple services, residential and commercial multi-site plans, fixed and open-ended terms, per-service schedules, specific dates and RRULEs, year scoping, fixed/per-service/hybrid pricing, templates, editable occurrences, drag-to-reschedule, pause/resume, duplicate, renew, extend, and manual New Plan creation under Admin > Maintenance Plans.

Current V2 already preserves useful commercial plan design inside the single-screen estimate builder: multi-property and per-service inclusion, weekly through custom visit frequency, per-service visits and timing, per-year cadence overrides, one-to-five-year terms, billing cadence, program savings, annual escalation, and live per-visit, annual, and full-term totals. Those shipped estimate controls are not part of the missing parity list.

The refreshed catalog and signed-plan detail do not remove the remaining V1 capabilities. Standalone manual plan authoring and draft activation, reusable templates and create-from-template, post-acceptance plan metadata/site/service/schedule changes through a new customer-approved estimate revision, open-ended terms, exact specific-date and RRULE schedules, occurrence skip/delete/drag/status editing, and plan-specific proposal/PDF actions remain required parity. (Pause/resume, renew, and extend have now shipped as described above; V1's duplicate action is covered by renewal, which continues the same program into a successor term.)

Future V2 authoring parity work must still create a new estimate draft or revision for customer acceptance rather than mutating the immutable signed plan snapshot. The shipped Renew plan action above already covers V1's duplicate action and is the deliberate exception: it continues the customer's already accepted cadence into a successor agreement without modifying either immutable record or requiring a new customer approval. Current V2 deliberately starts from the accepted maintenance proposal so the customer-approved option, price, signature, deposit state, and generated work stay tied to the same protected estimate record.

Was this article helpful?

Still need help? Contact support