How to Manage Program Rounds (Add, Edit, Generate Visits)
Last updated July 6, 2026 · Admins and office staff
Rounds are the steps of a program — each with a date window that controls when its visits happen (e.g., “Round 1 – Early Spring Pre-emergent”, Mar 15 – Apr 15). This guide covers adding, editing, and deleting rounds, how round statuses advance, and generating visits for one round or the whole program. For the full first-time setup flow (season → program → rounds → jobs → visits), see Set Up Seasons and Programs.

Before you start
- A program created under Work > Programs. All round management happens on the Program Summary page — open it by clicking the program in the Programs list.
- To generate visits you also need:
- At least one active job linked to the program (Job Summary > Link to Program).
- The program’s season set to Active — generation is skipped for Planned, Suspended, or Ended seasons. See Season Lifecycle.
- If you started the program from a template, its rounds are already filled in — you can edit them like any other round.
Steps
Add a round
- On the Program Summary, click Add Round (in the Program Rounds card header, in Quick Actions, or in the empty state if there are no rounds yet).
- Fill in the Add Round dialog:
- Round Number (required, 1 or higher) — controls the order visits are generated in.
- Round Name (required) — e.g., “Round 1 - Early Spring”.
- Description (optional).
- Window Start and Window End (required) — the end date must be on or after the start date. Visits for this round are placed inside this window.
- Notes (optional) — soil temps, weather rules, application details.
- Status — leave as Not Started for a future round (see statuses below).
- Sort Order (optional) — rounds are listed by sort order first, then round number.
- Click Add Round. You’ll see “Round added successfully!” and the round appears in the Program Rounds table.
Edit a round
- In the Program Rounds table, click Edit on the round’s row.
- The same dialog opens pre-filled (“Edit Round”). Change what you need — including manually setting the Status — and click Update Round.
Delete a round
- Click Delete on the round’s row and confirm the prompt.
- The round is removed. (Deleting the whole program also deletes all of its rounds — the delete confirmation reminds you.)
Round statuses — and how they advance automatically
| Status | Meaning |
|---|---|
| Not Started | The round’s window hasn’t opened yet. |
| In Progress | The window is open, or some visits are done. |
| Completed | All the round’s visits are done, or the window has closed. |
Statuses advance automatically overnight: rounds whose window has opened move to In Progress, and rounds move to Completed when every visit is done or the window end date has passed (a past-window round is closed out even if some visits weren’t completed). You can also set the status by hand in the Edit dialog — for example, to re-open a round or close one early.
Generate visits — one round vs. the whole program
For a single round: click Generate (the calendar button) on the round’s row and confirm. One visit is created for every active job linked to the program.
For the whole program: click Generate All Visits in Quick Actions (also offered at the top of the page) and confirm. This does every round that isn’t already Completed, in one pass.
How generation places visits:
- One visit per job per round, defaulting to 8:00 AM, 2 hours.
- The visit lands on today’s date if today is inside the round’s window; otherwise on the window start date.
- Company blackout dates are skipped — the visit moves to the next available date in the window.
- No duplicates: jobs that already have a visit for that round are skipped, so re-running generation is safe.
- Rounds whose window is entirely in the past are skipped with a notice — the system won’t create back-dated visits.
The confirmation message tells you how many visits were generated, plus any per-round notices (inactive season, past windows, blackout conflicts).
Invoice completed rounds
Once a round shows Completed, an Invoice Round button appears on its row — it creates one invoice per customer for the round’s work. Invoice Completed Rounds in Quick Actions does the same for every completed round at once, skipping rounds that were already invoiced.
What happens next
Generated visits appear on Schedule > Calendar, ready to assign to crews and organize with the route planner (Schedule > Routes). As crews complete visits, round statuses advance on their own, and completed rounds become invoiceable.
Tips & best practices
- Plan all rounds up front (or start the program from a template) rather than adding them mid-season — renewals copy the whole round structure into next year.
- Test with one job first. Link a single job, generate one round, and check the dates on the calendar before enrolling your full customer list. Re-running generation won’t duplicate anything.
- Make windows realistic for weather and crew capacity — visits are only ever placed inside the window.
- Don’t fight the overnight automation. If you manually set a past-window round back to In Progress, the nightly sweep will complete it again. Extend the window end date instead if the round genuinely needs more time.
Troubleshooting
- “Round window start and end dates are required” / end-date warning — both window dates are required, and the end must be on or after the start. The dialog also warns immediately if you pick an end date before the start.
- “No active jobs found for this program” — visit generation needs at least one active job linked to the program. Check the job’s status and its program link on the Job Summary.
- “Season ‘…’ is not active — visit generation skipped.” — the program’s season is Planned, Suspended, or Ended. Activate it first (Season Lifecycle), then generate again.
- “Round ‘…’: window … has already passed — visit skipped.” — the round’s window is entirely in the past. This usually means you’re on last year’s program; renew it into the new year instead (Annual Renewal), or extend the round’s window if the dates were simply wrong.
- “No new visits were generated. Visits may already exist for this round.” — every eligible job already has its visit. Nothing to do.
- A round jumped to Completed even though visits weren’t finished — the window end date passed, so the overnight sweep closed it out. Completed rounds are excluded from “Generate All Visits”; extend the window and re-open the round via Edit if the work is still happening.
- Rounds are listed in a strange order — the table sorts by Sort Order first, then Round Number. Set Sort Order to 0 on all rounds to order purely by round number.
Related articles
- Set Up Seasons and Programs (New Company Guide) — the end-to-end setup flow, including program templates
- Season Lifecycle — why the season must be Active before visits generate
- Manage Program Types and Season Types — the categories used on the program form
- Roll Seasons and Programs into a New Year — carrying rounds forward with year-shifted windows
- Renewal Reminders and the Renewal Wizard — renewing the jobs enrolled in a program