Recurring Schedules on Agreements
The schedule is the engine of a service agreement. It's what turns "Bob Jim is on the Bronze HVAC Plan" into "tomorrow morning, a job appears on the dispatch board with Bob Jim's name on it, billable to his agreement."
This article covers how schedules work, the rules that define them, how exceptions and skip-dates are handled, and what triggers job/invoice auto-creation when a tick comes due.
When you'd use this
- You're configuring a new agreement and need to set up its recurring schedule.
- Jobs aren't appearing on the dispatch board when you expected them — and you need to figure out why.
- You want to understand the difference between scheduled visits and recurring billing.
- A customer asked to skip a specific cycle (vacation, business closure) and you need to handle the exception.
What a schedule is
A schedule is a recurring rule attached to an agreement. Each rule has:
- A start date — when this recurrence first activates.
- An interval — every N days, weeks, months, or years.
- An interval type — what unit ("days", "weeks", "months", "years"); combined with the interval gives the cadence ("every 3 months", "every 2 weeks").
- What it produces — a job, an invoice, or both, when each tick comes due.
- Auto-book setting — whether the produced job is auto-scheduled on the calendar or just created as unscheduled work for someone to dispatch later.
- A status — open (active), closed (no longer producing), or cancelled.
- An exclusions list — specific dates skipped (vacation, holidays, customer-specific blackout dates).
An agreement can have one schedule or several. A pool plan that includes monthly cleanings and a quarterly chemical balance might use two schedules side-by-side, each producing different work on its own cadence.

How each cycle becomes a job (or invoice)
Each night, Suprata checks every active schedule. If the next due date has arrived, the system creates the work for that cycle and rolls the schedule forward to the next date.
What gets created depends on the schedule's configuration:
- A job-producing schedule creates a job on the customer's account. The job type, location, and billable items come from the agreement. If auto-book is on, the system also drops an appointment on the calendar (using the default time and tech you set). If auto-book is off, the job sits unscheduled and waits for a dispatcher to slot it.
- An invoice-producing schedule creates an invoice for the items on the agreement. For subscription-style agreements, that's the only thing that happens — no job.
- Both — many maintenance plans do both: a tune-up job and an invoice for that visit.
Once the cycle produces its work, the schedule's next due date rolls forward by the interval, and the system picks up where it left off the next night.
Setting up a schedule — the rules
Cadence
Pick the simplest cadence that matches the program. Common patterns:
- Twice yearly — every 6 months. Used for HVAC spring/fall tune-ups, pool open/close, etc.
- Quarterly — every 3 months. Pest control, equipment inspections.
- Monthly — every month. Pool service, alarm monitoring billing.
- Weekly — every 7 days. Lawn care, intensive cleaning programs.
- Custom intervals — e.g., every 14 days, every 9 months — supported but less common.
Start date
The start date anchors the recurrence. If you set a start date of April 1 with a quarterly cadence, the cycles land on April 1, July 1, October 1, and January 1.
Watch out: if you set a start date in the past, the system may immediately catch up by producing every cycle that was "missed" all at once. That's usually not what you want. Set the start date to the first cycle you actually want to produce.
Auto-book
Auto-book = "schedule the job on the calendar at the cadence". Off = "create the job as unscheduled work; a human dispatches it."
Recommended default: off for most service plans. It gives your dispatcher control over when the work fits into the route and customer's availability. Auto-book is best for highly-predictable recurring visits where the timing doesn't really matter (e.g., lawn care every Tuesday morning at 8am).
What it produces
Configure whether the schedule generates a job, an invoice, or both. Three patterns:
- Job only — the customer is on a prepaid plan; work is owed but no per-cycle billing.
- Invoice only — pure subscription; bill them every period, no per-cycle work.
- Both — the most common; each cycle produces a tune-up job AND an invoice for that visit's portion of the plan.
Exceptions and skip-dates
Real schedules have real-world exceptions:
- Customer is on vacation during a scheduled cycle.
- Holiday closure at a commercial customer.
- Weather suspension for a seasonal service.
- Pause for non-payment (paused at the relationship level, not as a date).
The right way to handle these is the schedule's exclusions/skip-dates list. Add the date to be skipped; the system sees the exclusion and either skips the cycle entirely or moves it to the next eligible date (depending on configuration).
Don't handle exceptions by editing the schedule's start date or interval. That changes the cadence permanently, not for one cycle. Use exclusions for one-off skips.
What about the whole agreement needing to pause?
If the customer is on indefinite hold (financial difficulty, extended absence), changing the agreement's status temporarily — pausing all schedules — is the right move. When ready to resume, reactivate. Only open schedules are processed, so a paused or closed agreement produces nothing.
Reading the agreements queue
The agreements queue is your at-a-glance view of every active agreement and what's scheduled to come up next. Use it to:
- See what's due tomorrow / this week.
- Spot agreements approaching their end date (renewal candidates).
- Identify schedules that haven't produced anything in a while (something might be wrong).
- Catch agreements about to auto-close so you can renew before they lapse.
Make checking the queue a weekly habit. The five minutes you spend on Monday morning prevents the missed-cycle phone calls that come from agreements drifting unsupervised.
Multi-schedule agreements
Some plans need two or more schedules in parallel. Pool service that includes weekly cleanings and monthly chemical balance is naturally two schedules: one weekly, one monthly. Each fires on its own cadence; each can produce its own job; they coexist on the same agreement.
This is supported and works fine, but a few notes:
- Each schedule has its own status and its own exclusions list.
- When closing or renewing an agreement, all schedules under it close/renew together.
- For reporting, the agreement is one row but has multiple schedule lines underneath.
If you're considering three or more schedules on one agreement, ask whether you'd be better served by two separate agreements. Often the answer is yes — cleaner reporting, easier renewal handling.
What Suprata handles for you, and what it doesn't
A reasonable mental model of what's automatic and what isn't:
Suprata handles automatically:
- Finding active schedules whose next cycle has arrived.
- Creating the job or invoice based on the agreement.
- Applying the auto-book setting (calendar slot + tech assignment, or unscheduled work).
- Rolling the schedule forward to the next cycle.
You still handle manually:
- Notifying the customer that a visit is coming. (That's done by appointment confirmations — see Confirmations and reminders (forthcoming) — and is configured separately.)
- Collecting payment. The invoice goes out; payment happens whenever it happens.
- Real-world hiccups (the customer's address changed, the gate code expired, the dog isn't friendly today). The system can't know about those.
- Renewing the agreement when it ends. See Agreement renewals.
Common mistakes
- Setting a start date in the past and getting six surprise jobs at once. Set it to the first cycle you want produced.
- Treating the schedule as the customer's calendar. The schedule produces the work; appointment confirmation/notifications are configured separately. Don't assume "the customer was notified" because the job appeared.
- Editing schedule cadence to handle a one-off skip. That changes the cadence permanently. Use the exclusions list for one-off skips.
- Ignoring auto-book. A monthly schedule with auto-book on, set to "8am Tuesday default", will land jobs on the calendar at 8am Tuesday whether anyone's available or not. Either turn auto-book off or own the consequences.
- Multi-schedule when one would do. A weekly cleaning schedule that also tries to bill monthly via the same schedule entry doesn't work — those are different cadences. Use two schedules.
- Forgetting that schedules don't renew themselves. When an agreement closes, its schedules close with it. New cycles only happen if a new agreement (or renewal) creates new schedules. See Agreement renewals.
- Not watching the queue. A schedule that quietly stops producing work — often because something on the customer's account is incomplete (missing tax category, archived service location) — can sit unnoticed for weeks. Reviewing the queue weekly catches these.