Changelog
Product updates and shipped features
- ImprovedIntegrations
Look up parts by barcode and adjust stock from the API
Building a barcode kiosk or a custom integration? The FreeMaint API now handles inventory directly. Look up a part by its scanned code — barcode, QR code, part number or reference — with the new part query, and change its stock with the new adjustStock mutation. Every adjustment is atomic and recorded in the part's stock-movement history. Available on Business and up, over both REST and GraphQL: create a key in Company Settings → API and find ready-to-paste curl, JavaScript and Python examples in the docs under “API & GraphQL”.
- NewWork Orders
Add parts to a work order even when stock shows zero
Sometimes a spare part is physically on the shelf but the system still shows 0 in stock — a miscount, or a delivery that wasn't logged. That used to block technicians from adding the part to a work order, even though they can't adjust stock themselves. Admins can now enable “Allow adding parts with no stock to work orders” in Settings → System. Once on, the technician adds the part after a quick confirmation, and the stock goes negative so the discrepancy is flagged for a physical recount. Maintenance work is never held up by an inventory record error. Off by default, and free on every plan.
- ImprovedWork Orders
Filter a work order's asset list by customer
When you link an external customer to a work order, the asset picker now shows only that customer's equipment — no more scrolling past other clients' assets or picking the wrong machine by mistake. It also works in reverse: pick a customer-owned asset first and the Customer field fills in automatically. Available in both the searchable list and the hierarchy view, when creating or editing a work order.
- NewAssets
Associate one asset with several equipment
You can now link a shared sub-assembly — like a removable test fixture used on more than one machine — to several pieces of equipment at once, without forcing a single parent. Open the asset, edit it, and use the new "Associated equipment" field in the Structure section to pick every machine it can be used on. The link is two-way, so each machine also shows the shared item under its own "Associated equipment" — and it never affects your asset hierarchy or cost roll-ups.
- ImprovedAnalytics
Asset costs now split Preventive vs Corrective
The "Cost Analysis by Asset" report now breaks down each asset's spend into Preventive (planned) versus Corrective (reactive) work, so you can see at a glance how much an asset costs you in planned maintenance versus reactive repairs. Labor, parts, and additional costs on each work order roll up to the matching side automatically. Open it under Reports then Assets.
- NewRequests
Department-head approval for requests
Requests can now be reviewed by the requester's own department head before they reach the maintenance team — a simple way to cut unnecessary requests and keep every job authorized by the department it came from. It even works for requests sent through the public QR-scan form, by people without an account. Turn it on in Company Settings → System, then apply the two-step "department head, then section" approval template under Company Settings → Workflows → Requests.
- ImprovedAccess & Permissions
See a user's team memberships on their profile
The User Details page now shows a Teams section listing every team a person belongs to, so you can check their team assignments at a glance without opening the Teams page. Each team is clickable and takes you straight to it. Open any user from People → Users to see it, right next to their assigned assets and qualifications.
- NewWork Orders
Assign a technician to many work orders at once
You can now assign a technician — or a whole team — to several work orders in one action, instead of opening each one. Select the work orders in the list, click Assign in the bar that appears at the top, choose one or more technicians (or a team), and confirm. It's especially handy for the unassigned work orders that preventive maintenance generates, and you get a summary of how many were assigned.
- ImprovedInventory
Part numbers now shown across inventory
Part numbers now appear on the inventory list, right under the reference, the same way assets display their serial number. You will see it in the card, table and mobile views. Parts without a part number simply do not show the line.
- ImprovedRequests
Requests inbox now focuses on active requests
The requests list now opens on your active requests by default (pending, under review, approved, in progress) instead of mixing in everything that is already finished. Completed, closed, rejected and cancelled requests are one click away via the status filter, and your filter choice is remembered for next time.
- NewWork Orders
See purchase requisitions and orders on a work order
You can now see the purchasing tied to a work order at a glance. Open a work order, go to the Parts tab, and the new Purchase Requisitions section lists every requisition raised for that job, plus the purchase orders they generated, each with a direct link. Linking a requisition to a work order was already possible from the requisition form (the "Linked work order" field) - now that link is visible from the work order side too.
- NewPreventive Maintenance
Schedule maintenance on specific dates
Preventive maintenance can now run on an explicit list of calendar dates instead of a fixed interval — ideal for seasonal or irregular work such as pest control, HVAC season prep, or grounds upkeep. Choose "Specific dates" as the schedule type, add each date, and they repeat automatically every year. Each date creates its own work order, and completing or skipping one visit never moves the others.
- ImprovedHSE
OSHA-ready injury & incident reporting
Injury and incident reports now capture the structured detail required for OSHA recordkeeping and worker's-compensation claims — exact timing, location specificity (building, work area, department), equipment involved, mechanism of injury, body part affected, nature of injury, and OSHA classification. Recordable status is determined automatically (29 CFR 1904), and you can open an OSHA 300 Log with the annual 300A summary and export OSHA 301, 300 and 300A PDFs. Find it under HSE → Incidents.
- ImprovedInventory
Buy in packs, get the per-unit cost automatically
Purchase a part in a larger pack — a drum of oil, a box of bolts, a spool of cable — and let the system do the math. Set a purchase unit and pack size on the part (e.g. 1 drum = 400 liters), then on a purchase order switch the line to "Order by pack": enter the number of packs and the price per pack, and the cost per stock unit is recorded automatically while the per-pack total is kept for your records. A new "Calculate from total" helper on the Unit cost field also turns any total price and quantity into a unit cost — no more reaching for a calculator. Available on every plan.
- ImprovedPreventive Maintenance
Create maintenance plans for many assets at once
Managing many machines? You no longer have to create one preventive maintenance plan per asset by hand. In the plan’s equipment field, pick several assets and choose between one shared plan covering them all, or one independent plan per machine. You can also select machines straight from the Assets list and click “Create PM”, use the “Without PM plan” filter to spot uncovered equipment, or import many plans at once from a CSV/Excel template. A new help article walks you through it.
- ImprovedAssets
Link assets to customers
You can now link an asset to the customer it belongs to — ideal for service shops and contractors who maintain equipment for external clients. Pick the customer on the asset form, and assets will show their customer, you can filter the asset list by customer, and each customer page lists the assets you maintain for them. Available on the Starter plan and above.
- ImprovedRequests
Hide the asset list on public location QR pages
When someone scans a location’s QR code to report a problem, they no longer have to scroll past the full asset list to reach the report button. Admins can now hide the asset list on public location QR pages from Company Settings → Intervention Request form → Public QR landing page (the same card also lets you toggle the meter list shown on individual asset QR pages). On top of that, the red "Report a problem here" button now stays pinned to the bottom of the public location page, so it’s always within reach.
- ImprovedInventory
Search vendors by description — and see it as a column
You can now find a vendor by the notes in its Description, not just its name, email or phone — the search box matches the description text. The Description also appears as a column in the Vendors list on wider screens, so you can scan your suppliers at a glance. Add or edit a description any time in the vendor form.
- NewWork Orders
Require requester sign-off and an e-signature before closing a work order
You can now have the person who requested a job formally accept it before it is closed. In Company Settings → Workflows, add a Work Order step that requires your custom closure form and a captured e-signature, and set the approver to the work order creator (the requester); a manager then performs the final closure. You can also lock a custom field so only the requester can fill it — in Company Settings → Custom Fields, turn on "Editable by creator/requester only". Ideal for quality acceptance and audit trails.
- ImprovedWork Orders
Log past maintenance straight from a PM plan
When you record a maintenance that was already performed, you can now link it to a preventive maintenance plan and the work order is created with the plan’s full task checklist (already marked as completed) and its planned parts — no more rebuilding the job by hand. Open any PM plan and use the new “Log Past Maintenance” button to pre-fill the plan and the asset in one click, then just set the completion date and save.