This article explains how recurring events work in Homeworks today, what you can and can't do with them right now, and what to do when something doesn't behave the way you expect.
We're being honest about the rough edges. Recurring events are mission-critical and we know there are places where the system doesn't behave the way most people expect. That's the truth, and we'd rather you have the full picture so you can plan around it than be surprised by it.
How recurring events work (the mental model)
A recurring series in Homeworks has two parts.
The parent recurring series stores the rule. Things like "weekly on Mondays at 9 AM, every other week, indefinitely." You don't see this on the schedule directly. It lives behind the scenes.
The child visits are the real visits that show up on your schedule, dispatch board, customer profile, and Field Force app. Each one has a real date and time.
Each one can have its own crew, notes, photos, line items, time entries, and billing data.
This matters because most of the time, you're working with the child visits (the ones on your calendar). But when you make a change that affects the recurrence, you're really editing the parent rule, and the system has to decide which child visits to update, delete, or recreate. That's where things get tricky.
The simple rule of thumb:
Editing one visit on the calendar is a small change. Editing the recurring series is a much bigger change, even if it doesn't feel like it.
What you can do reliably today
These work as expected and you can lean on them.
Create a new recurring series. Daily, weekly, monthly, and yearly all work. You can pick specific weekdays, intervals (every 2 weeks, every 3 days), and end the series on a specific date, after a specific number of visits, or leave it indefinite.
Edit a single visit. If you open one visit from the calendar or customer profile and change its date, time, crew, notes, photos, line items, or status, that change applies to that visit only. The rest of the series is not affected.
Mark visits complete, skipped, reopened, or invoiced. These actions are stable. Completed and skipped visits are protected from being deleted by parent series edits.
Add notes, photos, before-and-after media, and time entries to a visit. These persist. They are tied to the individual visit, not the series.
What works but has rough edges
These work, but you should know what to watch for.
Editing the parent recurring series
When you change the recurrence rule (frequency, day of week, interval, start date, end rule), the system uses a delete-and-recreate strategy for future visits. It identifies the future visits that are "safe to delete" (not completed, not skipped, not time-tracked, not invoiced) and replaces them with new visits from the updated rule.
What this means in practice:
Completed visits are preserved.
Visits with manual changes (custom notes, moved dates, custom crew, custom line items) may be deleted and replaced with default visits from the updated rule. Their customizations can be lost.
Recommendation: If you have future visits you've customized, take a screenshot of those customizations before you edit the parent series. If they get wiped, you'll have a record.
"Apply updates starting on" / Effective Start Date
When you edit a recurring series, there's a field that controls when the change kicks in. It's labeled something like "Apply updates to the series starting on" or "Effective Start Date."
This field is easy to misunderstand. It controls which existing visits get modified. It does NOT re-anchor the recurrence cadence to that date.
Example (real customer case):
A customer has "Every 4 Weeks on Thursday" with original start date March 20, 2025.
The natural cadence falls on Thursdays April 16, May 14, June 11, July 9, etc.
The customer sets "Apply updates starting on" to May 28 expecting the next visit to be on May 28.
The system jumps to June 11 instead, because May 28 isn't on the every-4-weeks cadence anchored to the original start.
Why this happens: "Apply updates starting on" tells the system "leave events before this date alone." The cadence itself is anchored to the original start date and won't shift.
Workarounds:
If you want a one-time shift (just move the next visit), edit that single visit on the calendar instead of editing the series.
If you want the entire pattern to shift (new cadence anchor), the cleanest way is to cancel the existing series and create a new one starting from your desired date. The downside is that the customer's profile will show both the canceled series and the new one.
Moving visits
Moving visits can mean different things in different places, and the system doesn't always handle them the same way.
Drag and drop on the calendar: Moving single visits only by drag-and-drop works well. Attempting to update the parent recurring series using the “move all future visits” option does not always produce the desired outcome.
Move Events from the dispatch board or schedule grid: Moves the selected visits only.
Editing one visit and changing its date: Moves that visit only.
"Move all future visits": Affects the whole series going forward.
Editing the parent series and changing days of week: Affects the whole series going forward, with the delete-and-recreate behavior described above.
Watch for two specific issues:
1. Multi-day series moves are ambiguous. If a series has multiple days per week (for example, Monday and Wednesday) and you move one Monday visit to Thursday, the system can interpret that several ways: Thursday only, Wednesday and Thursday, Monday and Thursday, or just a one-time exception. There is no clear UX yet for telling you which interpretation it picked or letting you choose.
Recommendation: For multi-day series, avoid bulk move actions when you can. Move visits one at a time, or contact support if you need a larger change.
2. "Move all future visits" can ignore off-season dates. When you use the move-all-future flow, the system may not respect off-seasons that are configured on the series. You can end up with visits scheduled inside an off-season window that should have been paused.
Recommendation: After using "move all future visits" on any series with an off-season, audit the schedule visually to confirm visits aren't appearing inside the off-season window. If they are, contact support.
Off-seasons
Off-seasons are intended to be "set it and forget it" but they don't always behave reliably.
What works:
Adding an off-season to a series typically prevents new visits from being scheduled inside that window.
Visits typically resume on the normal cadence after the off-season ends.
Where it gets brittle:
If you change an off-season date range after the fact, not all attached series update predictably.
Move flows can sometimes ignore off-season rules and place a visit inside an off-season window.
Multiple off-seasons on a single series can produce unexpected behavior.
Recommendation: Audit your schedule visually before and after changing an off-season to confirm visits are where you expect them. If something looks off, contact support.
Count of events end rule ("end after X visits")
If you choose "end after X visits" when creating a series, the system calculates the date of the Nth visit and stores that as an end date. After creation, the series behaves like a date-ended series.
What this means:
If visits get moved later (weather, customer request, holidays), the end date does NOT shift to preserve the original count. You may end up delivering fewer visits than the customer paid for.
Editing the series later may show "End date" instead of "Count of events" because the system has already converted it.
Recommendation: If a count is important (especially for service packages), check the visit count after any move or schedule change. If you're delivering 10 visits and one got pushed past the end date, you'll need to add the missing visit manually.
Indefinite series and the "generation horizon"
For indefinite series, the system doesn't generate visits forever. It generates visits a few years into the future and extends the schedule as time goes on through background jobs.
Most of the time you won't notice this. But if you ever look very far ahead on the calendar (years out) and see visits stop appearing, that's almost certainly the generation horizon, not a broken series.
Recommendation: If visits are missing several years in the future, contact support. We can extend the generation manually.
What you can't do today (limitations)
These are not just rough edges, these are gaps. There's no clean way to do these in the product right now.
You can't shift the recurrence anchor by editing the series. If your every-4-weeks cadence is on Wednesdays and you want to move it to a different Wednesday that isn't on the existing cadence, the only path is to cancel and recreate the series. (See the Effective Start Date example above.)
You can't bulk-edit only specific future visits without affecting the rest of the series. If you want to move the next 3 visits but leave the rest alone, you have to move each one individually.
You can't reliably bulk-move a multi-day series. If your series runs more than one day per week (for example, Monday and Wednesday), bulk move actions don't have a clear way to ask you what your intent is. The result can be unpredictable. Move visits individually if you need a clean result.
You can't reliably bulk-move a series with an off-season. The "move all future visits" flow can ignore off-season dates, which means visits can land inside an off-season window that should have been paused. Audit the schedule visually after any bulk move on a series with an off-season.
You can't see ahead of time which future visits have customizations before editing the parent series. The system protects completed and skipped visits from deletion, but it does not surface which future open visits have your customizations on them. Take screenshots before you make series-level edits.
You can't preserve a count-based series count when visits get moved. If you sold a 10-visit package and visits get pushed later, the series will end on the original calculated end date, not after the 10th visit.
You can't easily preview what a parent series edit will do before applying it. There's no "show me what changes" before save. Today, the safest approach is to be cautious and take screenshots.
You can't have the system warn you before a destructive change. If editing the series will delete and recreate future visits, you don't see a warning. This is on the list to fix.
Common scenarios (Q&A)
Q: I want to move just one visit to a different date. Will it mess up my series?
A: No. Edit that single visit from the calendar or customer profile and change its date. The rest of the series stays intact.
Q: I want to change the day of the week for all future visits in a recurring series.
A: Edit the parent recurring series from the recurring events page. Change the day of the week. Set the "Apply updates starting on" date carefully. Be aware that any future visits you've customized may get replaced with default visits from the new rule. If you have customizations to preserve, screenshot them first.
Q: I'm trying to move my series to start on a specific date, but the system is jumping to a different date. Why?
A: The cadence is anchored to your original start date. If the date you picked isn't on that cadence, the system jumps to the next valid one. The clean fix is to cancel the existing series and create a new one starting from your desired date. Your customer's profile will show both, but the new series will follow your intended cadence.
Q: I want to skip a single visit (customer is on vacation that week).
A: Open that visit and mark it as skipped. The rest of the series continues as scheduled.
Q: I want to pause a series for the off-season and have it resume in spring.
A: Add an off-season to the series with the date range you want to pause. The series should automatically skip visits in that range and resume after. Verify on the calendar that visits look correct after you set it up.
Q: I sold a customer 10 visits but the schedule has shifted and now they only have 9 left. What happened?
A: Count-based series get converted to date-ended series after creation. When visits move, the end date doesn't shift to preserve the count. You'll need to add the missing visits manually. We're aware this is a gap and have it on the list.
Q: I edited my recurring series and lost the custom notes I'd added to next week's visit.
A: Editing the parent series can delete and recreate future visits, including their customizations. We don't currently warn you before this happens. Going forward, screenshot any customized future visits before editing the parent series. If you've already lost data, contact support and we'll see if we can recover from backups.
Q: My visits aren't showing up several years in the future.
A: That's the generation horizon. Contact support and we can extend it manually.
Q: I used "move all future visits" and now visits are showing up inside my off-season window.
A: Known issue. The "move all future visits" flow doesn't always respect off-season dates. Contact support and we'll help you clean up the schedule and avoid recurrence in the meantime, recommend moving visits individually for series that have an off-season set.
Q: My series runs Monday and Wednesday. I moved one Monday visit to Thursday using "move all future visits" and now my whole series is messed up. What happened?
A: Multi-day series moves are ambiguous and the system can interpret a move several different ways (Thursday only, Wed and Thu, Mon and Thu, etc.). The current UX doesn't let you choose. For multi-day series, move visits one at a time to keep predictable behavior. Contact support if you need help unwinding the change.
Q: I changed an off-season and now visits are appearing during the off-season window (or not resuming after).
A: This is a known issue. Off-season changes don't always propagate cleanly to all attached series. Contact support and we'll help you sort it out.
When to contact support
Contact us if:
You've made a change to a recurring series and visits look wrong or are missing
You think you've lost custom data from future visits
An off-season isn't behaving the way you set it up
Visits aren't generating where you expect them
You have a complex multi-day series and need help with a change
Anything else feels off
When you contact us, share:
A screenshot of the schedule before the issue
A screenshot of the schedule after
The customer name and series in question
A short description of what you tried to do and what actually happened
The more detail you give us up front, the faster we can sort it out and route it to engineering if it's a deeper bug.
What we're working on
We know recurring events are one of the most important parts of Homeworks and one of the areas where the system doesn't always behave the way it should. Active work in flight includes:
Better warnings before destructive series edits
Clearer behavior for "Apply updates starting on" and the cadence anchor
More reliable off-season behavior across all flows, including in bulk move actions
Preserving count-based series counts when visits move
Clearer handling of multi-day series moves, including a way to tell the system what you actually intended