Ply tracks jobs based on their last modified date, not their original creation date. When a closed or old job is edited in your FSM, even slightly, that change syncs to Ply, the job gets treated as recently active, and any materials tied to it can resurface in inventory views.
➡️ How the FSM Sync Works
Ply integrates in real time with your FSM (ServiceTitan, Housecall Pro, or Jobber). Whenever a job is updated in your FSM, that change is pushed to Ply. Ply then determines job activity based on the last modified date of the synced job, not when it was originally created.
A job created 6 months ago in ServiceTitan that was never touched again → stays inactive in Ply.
A job created 6 months ago but edited yesterday in your FSM → syncs to Ply and is treated as a recent, active job.
When a job becomes recently active via sync, the materials assigned to it are included in Ply's inventory calculations and reports, which is why they may be showing up unexpectedly.
➡️ Common Reasons a Closed Job Gets Re-triggered
These are the most frequent scenarios we see:
A team member edited the old job in the FSM:
Someone on your team, a technician, dispatcher, or admin, opened an old job in ServiceTitan, Housecall Pro, or Jobber and made a change — as simple as updating a note, changing a job status, adding a tag, or modifying a custom field. Any edit in the FSM counts as a modification, triggers a sync to Ply, and resets the job's last-modified timestamp in Ply.
A material was added to the old job in the FSM: A material or line item was assigned or reassigned to a closed job directly inside your FSM (e.g., a tech added a part in ServiceTitan after the job was already completed). When that job syncs to Ply, the material comes along with it and gets reflected in your inventory.
An automated workflow updated the job: Some FSMs have automated rules or workflows (e.g., auto-status changes, invoice generation, follow-up triggers) that can update old jobs without anyone actively editing them. If an automation touched the job, it counts as a modification and can trigger a sync.
The change doesn't need to happen in Ply for this to occur. Any update made to the job in your FSM, no matter how small, will sync to Ply and can bring materials with it.
➡️ How to Fix It
Depending on your situation, here are the recommended actions:
Remove the material from the job in your FSM: Open the job, go to the Materials tab, and remove the material that shouldn't be there. The inventory will update to reflect the change in Ply.
Correct the job in your FSM: If a wrong material or incorrect edit was made in ServiceTitan, Housecall Pro, or Jobber, fix it at the source. Otherwise, the next sync will overwrite your changes in Ply. Remove the incorrect line item or revert the edit in your FSM first.
⚠️ Exception for ServiceTitan/Posted invoices: if the job's invoice has already been Posted in ServiceTitan, ST treats the job as closed and won't accept further changes, including removing a line item. In that case, you'll need to unpost/reopen the invoice in ServiceTitan first (subject to your ST permissions and accounting process) before you can correct it there. See Why a Purchase Order may fail to sync to ServiceTitan.
Prevent future edits to closed jobs in your FSM: Most FSMs allow you to lock or restrict editing on completed/invoiced jobs. Enabling this setting in ServiceTitan, HCP, or Jobber is the most effective way to stop old jobs from being accidentally modified and re-synced.
⚠️ Could this affect my replenishment automations?
If the re-triggered job actually changes stock quantities at a location (not just how it looks in a report), and that drop crosses a configured minimum threshold, it could get picked up by your Replenishment List or, on the next scheduled run, by Rolling Replenishment, which could generate an unnecessary picklist or PO. This isn't instant or retroactive; it would only surface on Rolling Replenishment's next scheduled run.
💡 Tip in the meantime: if you spot a re-triggered job, it's worth checking your Replenishment List for that location before your next scheduled Rolling Replenishment run, just in case.
➡️ Best Practices to Avoid This in the Future
Train your team on FSM discipline. Make sure technicians, dispatchers, and admins know not to edit closed or invoiced jobs in the FSM unless absolutely necessary; any edit will re-trigger a Ply sync.
Lock completed jobs in your FSM. ServiceTitan, Housecall Pro, Jobber, and FieldEdge all support this (in FieldEdge, editing is only possible while a work order is in "working" status; see Using Ply Inventory in Your FieldEdge Workflow).
Check FSM automations periodically. Review any automated workflows in your FSM that could be touching old jobs (status changes, invoice triggers, follow-up sequences) and ensure they're scoped to active jobs only.
Audit your inventory regularly using Ply's Reports section to catch unexpected changes early. See the Reports guide for more details.
When something looks off in Ply's inventory, always start by checking your FSM. Since Ply mirrors your FSM data, the source of truth for job changes lives there, not in Ply.
➡️ Related feature requests worth voting on
"I'd like Housecall Pro to stop pulling in old, historical job data on sync in the first place."
There's an open feature request to add a date filter to the HCP sync, so historical job data isn't pulled in unnecessarily — you can add your vote here: HCP Sync: Option to set a date filter to avoid pulling in historical job data.
"I want a report showing materials still assigned to finished jobs that were never transferred back to the warehouse."
This would help catch cases like the ones described in this article before they cause confusion. There's an open feature request for this — you can add your vote here: Report/Filter: Materials Still Assigned to Finished Jobs Not Returned to Warehouse.
Still need help?
We're happy to dig into it with you.
