Recurring Job Templates
Create reusable service contracts that auto-generate future jobs for recurring commercial, fleet, residential, or holiday-light work.
Recurring Job Templates
Recurring templates let you define a standing service agreement once, then generate future jobs from that template on a schedule.
Navigate to Admin > Jobs > Templates to open the recurring template library.
The template library and template detail page both calculate contract value from the actual recurring visit total. If maintenance pricing is enabled, the per-visit and annual values reflect the maintenance multiplier instead of the original one-time estimate total.
Template load, save, generate, and occurrence actions now show plain-language admin errors instead of raw database text, while the detailed failure context still goes to server logs.
What A Template Stores
Each recurring template includes:
- Template name and service type
- Linked client and service property
- Reusable line items and per-visit pricing
- Optional maintenance pricing multiplier
- Frequency, preferred day, and preferred time window, including weekends and after-hours windows
- Skip months for seasonal contracts
- Contract start date and optional end date or visit count
- Default crew and truck assignments
- Lead time for when future jobs should be generated
Templates are ideal for quarterly building washes, monthly fleet work, biweekly storefront cleaning, and similar standing service agreements.
Creating A Template
- Open Admin > Jobs > Templates.
- Click New Template.
- Enter the template identity and select the service type.
- Search for the client, then choose an existing property or enter one manually.
- Add the recurring line items and confirm the per-visit total.
- Set frequency, preferred day, time window, skip months, and contract term.
- Choose default crew and truck assignments if you want dispatch defaults. Template truck defaults now use the same dispatch truck records as job scheduling.
- Save the template.
The template detail page opens after save so you can review projected occurrences and generate the next job immediately if needed.
Creating A Template From An Accepted Estimate
On accepted Commercial Building and Fleet estimates, the estimate detail page includes Create Recurring Template.
That shortcut pre-fills:
- Client record
- Property address
- Service type
- Line items from the accepted estimate
- Maintenance pricing enabled by default for follow-on contract work
When the accepted estimate already has canonical quote-core line items, that shortcut now prefers those normalized rows over the older compatibility JSON snapshot. The new template also keeps the source estimate id attached behind the scenes so later recurring-template automation and reporting can trace the template back to the quote it came from.
Recurring templates created from accepted estimates now also show that source quote link on the template list and template detail page, so the office can jump back to the originating quote without hunting through the estimates workspace first.
You only need to finish the schedule and contract settings before saving.
Residential maintenance agreements now create their recurring template series automatically when the customer accepts the maintenance offer. CE Pro stores one linked recurring template per repeating seasonal visit pattern in the maintenance agreement, which lets the office review, pause, or retime those future visits from the same recurring-template library without recreating the seasonal service mix by hand.
When that maintenance agreement is resynced later, CE Pro now only ends the recurring templates that are still active and no longer belong to the current agreement shape. Historical templates that were already ended keep their original ended timestamps instead of being re-ended on every later agreement sync.
Accepted maintenance agreements now stay in sync after office edits too. If the team updates the services, visit mix, or other maintenance-plan details on an already accepted estimate, CE Pro resyncs the linked recurring templates from the updated canonical quote data instead of leaving the recurring schedule on the older agreement shape.
Template Detail Page
The template detail page has two main areas:
- Configuration panel: Edit the template settings, pricing, schedule, and default dispatch assignments.
- Occurrence schedule: View every projected visit in the series, not just the jobs that have already been generated.
This matters because jobs are only written to the jobs table when the occurrence enters the lead window. Future visits still appear in the occurrence table as projected rows so you can manage the full series from day one.
Occurrence Statuses
| Status | Meaning |
|---|---|
| Projected | Future occurrence that has not generated a job yet |
| Scheduled | Job exists and is on the calendar |
| In Progress | Crew is en route, on site, or actively working |
| Complete | Generated job has been completed |
| Skipped | The occurrence was skipped before or after job generation |
| Rescheduled | The generated job date was changed for that occurrence only |
| Cancelled | The generated job was cancelled |
Skipping One Occurrence
Use Skip from the occurrence row when you want to remove one visit without ending the full contract.
- If the job has already been generated, the job status becomes Skipped.
- If the occurrence is still projected, CleanEstimate Pro stores a skip record and the generator ignores that date later.
- The overall series continues normally after the skipped visit.
- Manual skips still count toward a visit-based contract cap. Seasonal skip months do not count toward the visit cap because they are part of the schedule definition, not an ad-hoc skipped visit.
Deleting One Occurrence
Use Delete from the occurrence row when you want to remove that visit from the series entirely.
- Projected occurrences are removed from future generation.
- Generated future occurrences are removed from the schedule and excluded from regeneration.
- Completed or invoiced visits stay in history and cannot be deleted from the template page.
Rescheduling One Occurrence
Use Reschedule on a generated occurrence to move only that one job.
- The underlying recurring series does not shift.
- The job keeps its template linkage and occurrence number.
- The occurrence row shows the moved date and keeps the original date for reference.
How Auto-Generation Works
Templates use a lead window to decide when to create the next job. For example:
- A quarterly template with 14 lead days creates the next job two weeks before service.
- A template with auto-generate off stays in the library until someone clicks Generate Now.
When a job is generated, CleanEstimate Pro:
- Copies the template line items
- Applies the maintenance multiplier if enabled
- Assigns the default crew and truck when set
- Links the new job back to the template and occurrence number
Pausing And Ending Templates
- Pause stops future generation without deleting projected history.
- Resume restarts the template from its current next scheduled date.
- End closes the template and cancels future generated jobs that have not been completed yet.
Deleting A Template
Use Delete Template when the recurring agreement should be removed completely.
- Future generated jobs tied only to that template are removed.
- Completed history stays attached to the client and job records.
- If you only want generation to stop, use Pause or End instead.
Templates with a visit-count end condition stop exactly at the configured visit cap. Generated visits, manually skipped visits, and already-generated occurrences that the template is catching up to all count toward that cap; built-in skip months do not.
Next Steps
- Review the Jobs guide to see how generated jobs appear in the job list and job detail views.
- Use the Schedule guide to manage dispatch once recurring jobs land on the calendar.
Related articles
Was this article helpful?
Still need help? Contact support