Recurring Work

Maintenance agreements, weekly routes, monthly invoices, on autopilot.

Recurring work turns one-off jobs into a predictable revenue base. Three features cover it: Recurring Jobs, Recurring Invoices, and Service Contracts.

The three layers

Layer What it generates Why
Recurring Jobs A real job on a schedule (weekly clean, monthly HVAC checkup, quarterly pest). You're doing the work on cadence.
Recurring Invoices A standalone invoice on a schedule (subscription, retainer). You're billing on cadence.
Service Contracts The agreement over both. Renewal tracking, the contract-attach KPI, portal visibility of "what's included."

You often combine all three. A "Gold maintenance plan" might be a Service Contract (12-month term, renewal tracked), a Recurring Invoice billing monthly, and a Recurring Job generating a tune-up each season.

Setting up a Recurring Job

  1. Sidebar -> Operations -> Recurring.
    • New schedule.
  2. Pick the customer.
  3. Pick a Job Template (or build the job by hand).
  4. Cadence: Weekly, Biweekly, Monthly, Quarterly, or Annually, plus the first run date.
  5. Default tech (optional). Set it and every generated job auto-assigns; leave it blank and jobs land unassigned.
  6. End rules (optional but smart): an end date, a max occurrences cap, or both.
  7. Save. The next run date is computed.

What happens day-of

Manuall checks active schedules on a regular background cycle. When a run is due it generates the job, assigns the default tech (if set), bumps the occurrence count, computes the next run date, and marks the schedule Ended if an end rule is hit. You can also add blocked dates (holidays) so a due occurrence slides forward instead of booking on a closed day.

Setting up a Recurring Invoice

Same shape, but it generates an invoice. Sidebar -> Money -> Recurring Invoices -> + New schedule: customer, line items, tax, cadence (Monthly, Quarterly, or Annually), end rules.

Each schedule has an Auto-send toggle. Off (the default), the generated invoice lands in Draft for you to review. On, it emails the customer automatically.

Pause and resume

A customer pauses service (vacation, off-season, billing dispute). Don't delete the schedule, pause it.

  1. Open the schedule (job or invoice).
  2. Click Pause, enter a reason. The reason is logged.
  3. It stops generating; the list shows status Paused.
  4. Resume recomputes the next run date from now plus the cadence.

A paused schedule blocks Generate one now and Skip next with a clear "schedule is paused" error, so you can't accidentally push past the pause.

Skip the next one

Holiday week, equipment waiting on parts: open the schedule -> Skip next. The next run date advances by one cadence and no job is generated. Call it twice to skip two.

Generate one now

A customer wants their tune-up brought forward because they're hosting a party. Open the schedule -> Generate one now. The job is created immediately; the schedule's next run date is unaffected.

Status badges

  • Active: generating on schedule.
  • Paused: suspended with a reason.
  • Ended: an end rule was reached.
  • Inactive: toggled off.

In Analytics

  • Customer Relationship -> Contract Attach Rate: what share of active customers carry a contract. A leading indicator of recurring revenue.
  • Customer Relationship -> Contract Renewal Rate: at renewal time, what share renew. A lagging indicator of service quality.

Common scenarios

Customer wants to switch from quarterly to monthly.
End the existing schedule (set the end date to today), create a new one with the new cadence. The occurrence count on the old schedule preserves the history.
The recurring job needs a different tech each time.
Leave the default tech blank. Generated jobs land unassigned and your dispatcher picks the tech per visit.
The customer's card expired and their recurring invoices are failing.
If the customer is on auto-pay, Manuall charges the saved card off-session when the invoice generates, and a failed charge emails them to update it in the portal. If they're not on auto-pay, the invoice still generates and they self-pay from the portal.
I want to bill quarterly but visit monthly.
Recurring Job cadence = Monthly, Recurring Invoice cadence = Quarterly, both on the same customer. They see three jobs and one invoice per quarter.

What to read next