Free Maintenance Work Order Template (Excel)
A work order is the simplest unit of maintenance management: something is wrong, someone needs to fix it, and you need a record that it happened.
Most teams handle this with a phone call, a text message, or a scribbled note. Which works fine until you're in an audit asking "who fixed the pump on the 14th and what did they do?" and nobody can answer.
This template gives you a structured work order system in Excel — simple enough for a technician to update on their phone, complete enough to give you an audit trail and a picture of your reactive workload.
Download the Template
Enter your email to download the free Excel work order template. We'll also send a copy via email.
Free download. No spam. Unsubscribe anytime.
What a Work Order Needs to Capture
Strip it back to the essentials. A work order is a record of a job — who asked, what's wrong, who's fixing it, and what happened.
Must-have fields:
- WO# — unique reference number
- Asset ID — what's being worked on (links to your asset register)
- Issue — what's wrong, in plain language
- Priority — High / Medium / Low
- Assigned To — one person, not a team
- Status — Open / In Progress / Complete
- Date Created — when it was logged
- Date Completed — when it was closed
Useful additions once you're running:
- Labour Hours — time spent, for cost tracking
- Parts Used — what was consumed
- WO# prefix by year —
WO-2026-001instead ofWO-001so numbers stay meaningful across years
Setting Up the Spreadsheet
Auto-numbering WOs
Rather than manually typing WO numbers, use a formula that generates them based on row position:
="WO-"&TEXT(ROW()-1,"000")
Paste this in cell A2 (your first data row, assuming row 1 is headers). It produces WO-001, WO-002, WO-003. Drag down as you add rows.
If you want year-prefixed numbers:
="WO-"&YEAR(TODAY())&"-"&TEXT(ROW()-1,"000")
Priority and Status dropdowns
Dropdowns prevent the inevitable drift from "High" to "HIGH" to "high priority" that makes filtering useless.
Select the Priority column → Data → Data Validation → Allow: List → Source: High,Medium,Low
Do the same for Status: Open,In Progress,Complete,On Hold,Cancelled
Flag overdue high-priority jobs
Add a conditional formatting rule to highlight rows where a job is High priority, still Open or In Progress, and was created more than 24 hours ago:
Formula: =AND($D2="High", OR($F2="Open",$F2="In Progress"), $G2<TODAY()-1)
Set to red fill. This gives you an instant view of what needs chasing.
Filter view for each technician
If you have multiple technicians sharing the spreadsheet, create saved filter views (Data → Filter Views → Create new filter view) so each person can see only their assigned jobs. This avoids the "I didn't see that" excuse.
The Discipline That Makes It Work
The template is the easy part. The hard part is getting everyone to use it consistently.
Log the work order before starting the job, not after. "I'll add it when I'm done" turns into "I'll add it later" turns into it never getting added. The log is most useful when it captures what was known at the start — the fault description, the priority, who it was assigned to.
Close work orders the day they're completed. An open work order list full of completed-but-not-closed jobs is noise. Every Monday morning, someone should filter for completed jobs and close them.
One work order per job. Don't bundle three separate faults into one WO because they're on the same asset. You'll lose the individual completion dates and the audit trail becomes ambiguous.
Keep the Issue description useful. "Broken" is not a useful description. "Coolant pump making grinding noise on startup, worse over past 3 days" gives a technician and an auditor something to work with.
Connecting Work Orders to Your PM Schedule
Work orders and PM tasks are related but separate. A work order is reactive — something broke. A PM task is proactive — something is scheduled.
The connection point is the asset. When you close a work order, check whether the fault was something a PM task should have caught. If yes, add or adjust a PM task in your PM schedule.
Over time, your work order history becomes your argument for where PM resources should go. Assets generating the most work orders are the ones with the highest PM ROI.
For the full connected system — asset register, work orders, PM schedule, and maintenance log — see the complete CMMS Excel template.
Where This Breaks Down
Multiple people updating simultaneously. Excel's last-write-wins model means concurrent updates cause data loss. If two technicians try to close work orders at the same moment, one of them loses their update silently.
No notifications. Work orders get assigned but technicians only know if they check the spreadsheet. In practice, they don't — especially on the shop floor.
Mobile use is painful. A technician standing next to a failed pump, on a phone with dirty hands, trying to update a spreadsheet cell is not a workflow that sticks.
No photo attachment. Work orders should have photos — before and after. Excel can embed images but it's clunky and makes the file huge.
When these friction points are costing you time, the 5 signs you've outgrown spreadsheets is worth a read.
Related Templates
- Full CMMS Excel Template — the complete four-sheet system
- PM Schedule Template — preventive tasks alongside reactive work orders
- Maintenance Log Template — the permanent audit trail of every job done
Work orders that reach your technicians
AssetOS assigns work orders with push notifications, lets technicians close jobs from their phone, and auto-logs everything to the asset record — without the spreadsheet.
Shane Price
Writing about maintenance management, CMMS implementation, and the real challenges operations teams face.