Standard Operating Procedure (SOP) Template for Word
A good SOP lets someone who has never done the task do it right the first time, and lets an auditor see who approved which version. This template is a finished five-page example for a fictional warehouse, built the way a procedure manual should be: sections that number themselves, procedures as numbered steps with lettered sub-steps, warnings that stand out, and a document control block that is a set of fill-in fields rather than loose text.
- Pages:
- 5
- Works with:
- Word for Microsoft 365, Word 2016 or later, Word for Mac (Word for the web can fill in fields)
- Updated:
Standard Operating Procedure Template.docx
Free to download. No sign-up needed. No macros.
What you can do with it
- Document control block with fill-in fields: ID, version, status dropdown, effective and review date pickers, owner
- Sections numbered by a multilevel list linked to Heading 1 and 2, with a ready table of contents
- Procedures as numbered steps with lettered sub-steps, plus Stop and Tip callouts
- Roles, definitions, exceptions and records tables, revision history and a three-person approval block

What's inside
The document has 5 pages. Each part below is a heading in the file, so you can jump to it from the Navigation Pane (View > Navigation Pane).
| Part | What it covers | What you write |
|---|---|---|
| Document control | Who owns the procedure and which version is in force | ID, version, status, dates, owner, scope of use |
| 1–5. Purpose to Safety | Why the procedure exists and what must be true before starting | Purpose, in and out of scope, roles, terms, safety rules, pre-start checklist |
| 6. Procedure | The steps, grouped by stage | Numbered steps, sub-steps, callouts, an exceptions table |
| 7–8. Records and references | What evidence the procedure leaves and related documents | Record, location, retention; linked SOPs and policies |
| 9–10. Revision history and approval | What changed and who signed it off | One row per version; approver names and dates |
Before you start
- Walk the process once with the person who does it every day and write the steps in the order they happen.
- Decide the document ID scheme (for example WH-SOP-014) and who approves procedures in your organization.
- List the records the process creates and how long you must keep them.
Step-by-step guide
Fill in the document control block
Click each gray-boxed field under the title and type over the sample: document ID (it also appears in the header), version, status, effective and next review dates, owner and where the procedure applies.
Rewrite sections 1 to 5
Keep the purpose to two or three sentences that say what goes wrong without the procedure. List what is out of scope as clearly as what is in. Put each role in the table with what it does in this procedure, not its job description.
Write the procedure as steps
Use one Heading 2 per stage. Each step starts with a verb and does one thing; put details and alternatives as lettered sub-steps (press Tab on a new numbered line, Shift+Tab to go back).
Mark hazards and tips
Put anything that could hurt someone or cost money in a Callout paragraph labeled Stop or Warning, right before the step it applies to.
Update the contents and history
Right-click the table of contents > Update Field > Update entire table. Add a revision history row describing what changed, then collect signatures in the approval block.
Publish a controlled copy
Delete the gray guidance note, save as PDF for the floor, and keep the .docx as the master. Set the status dropdown to Approved only after signatures.
Field and control map
Every content control and field in the document, in the order they appear. Gray-boxed fields in Word are the content controls.
| Name | Type | Where | Value in the sample |
|---|---|---|---|
| Document ID | Text | Header | WH-SOP-014 |
| Document ID | Text | Body | WH-SOP-014 |
| Version | Text | Body | 3.1 |
| Status | Dropdown | Body | Approved (Draft / In review / Approved / Retired) |
| Department | Text | Body | Warehouse Operations |
| Effective date | Date picker | Body | November 2, 2026 |
| Next review date | Date picker | Body | November 2, 2027 |
| Process owner | Text | Body | Dana Whitfield, Receiving Supervisor |
| Applies to | Text | Body | Dock A and Dock B, all shifts |
| Scanner charged | Checkbox | Body | checked |
| Labels stocked | Checkbox | Body | checked |
| Dock lock tested | Checkbox | Body | unchecked |
| Appointments printed | Checkbox | Body | unchecked |
| Owner name | Text | Body | Dana Whitfield |
| Signed date | Date picker | Body | 3 fields: Click or tap to enter a date. |
| Approver name | Text | Body | Marcus Lee |
| Quality approver | Text | Body | Type a name |
| Company | Text | Footer | Harbor Point Distribution |
{ TOC \o "1-2" \h \z \u } | Field | Body | contents list |
{ PAGE } | Field | Footer | 1 |
{ NUMPAGES } | Field | Footer | 5 |
{ SEQ Table \* ARABIC } | Field | Body | 1, 2, 3 |
Every field, control and style, explained
The code in each card is read straight from the .docx file (the XML Word stores, or the field code you see with Alt+F9), so it is exactly what the template contains.
<w:lvl w:ilvl="0">
<w:start w:val="1"/>
<w:numFmt w:val="decimal"/>
<w:pStyle w:val="Heading1"/>
<w:lvlText w:val="%1."/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:ind w:left="440" w:hanging="440"/>
</w:pPr>
</w:lvl>
<w:lvl w:ilvl="1">
<w:start w:val="1"/>
<w:numFmt w:val="decimal"/>
<w:pStyle w:val="Heading2"/>
<w:lvlText w:val="%1.%2"/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:ind w:left="660" w:hanging="660"/>
</w:pPr>
</w:lvl>The section numbers (1., 2., 6.1 …) are not typed. A multilevel list is linked to the Heading 1 and Heading 2 styles, so any paragraph you set to Heading 1 gets the next number and the table of contents picks it up.
Piece by piece
<w:pStyle w:val="Heading1"/>- Links list level 1 to the Heading 1 style (level 2 to Heading 2).
<w:lvlText w:val="%1."/>- Level 1 shows its counter and a period: 1., 2., 3.
<w:lvlText w:val="%1.%2"/>- Level 2 shows the parent number, a period and its own counter: 6.1, 6.2.
<w:ind w:left="440" w:hanging="440"/>- Hanging indent so wrapped heading text lines up after the number.
In the sample: 1. Purpose, 2. Scope, 3. Roles and responsibilities … (15 headings)
How it is used: To add a section, type the heading, then pick Heading 1 (Ctrl+Alt+1) or Heading 2 (Ctrl+Alt+2) on the Home tab. Numbers after it update by themselves.
How to change it: Home > Multilevel List > Define New Multilevel List to change the format (for example "Section 1"). Keep "Link level to style" set to Heading 1 and Heading 2.
Learn this: How to Plan and Structure Long Documents in Word: Outline View and Multilevel Numbering →{ TOC \o "1-2" \h \z \u }A TOC field builds the contents list from the Heading 1 and Heading 2 paragraphs. The file ships with the entries and page numbers already filled in, so it looks right the moment you open it.
Piece by piece
\o "1-2"- Include heading levels 1 to 2.
\h- Make each entry a link to its heading (Ctrl+click in Word).
\z- Hide page numbers in Web Layout view.
\u- Use the paragraph outline level, so the styles decide what is listed.
In the sample: 15 entries. First: 1. Purpose … page 2
How it is used: After you add or rename sections, right-click the contents list and choose Update Field > Update entire table.
How to change it: References > Table of Contents > Custom Table of Contents: set "Show levels" to 3 to list Heading 3 as well.
Learn this: How to Add a Table of Contents, Captions, and Cross-References in Word →Page { PAGE } of { NUMPAGES }The footer counts pages with two fields: PAGE is the current page and NUMPAGES is the total. Both recalculate when the document is printed, saved as PDF or scrolled in Print Layout.
Piece by piece
PAGE- The number of the page the field sits on.
NUMPAGES- The total number of pages in the document.
In the sample: Page 1 of 5 on the first page
How it is used: Nothing to do: add or delete pages and the numbers follow.
How to change it: Double-click the footer to edit the text around the fields. Insert > Page Number > Format Page Numbers sets the starting number.
Learn this: How to Set Up Pages in Word: Margins, Breaks, Headers, Footers, and Page Numbers →{ SEQ Table \* ARABIC }Each table caption uses a SEQ field that counts tables in order. Insert a new captioned table in the middle and every later caption renumbers.
Piece by piece
SEQ Table- A counter named "Table". Every SEQ Table field adds 1.
\* ARABIC- Show the counter as 1, 2, 3.
In the sample: 3 caption(s): Table 1 to Table 3
How it is used: Captions are what a "see Table 2" cross-reference points to (References > Cross-reference).
How to change it: References > Insert Caption adds a new one. If numbers look stale, press Ctrl+A then F9 to update all fields.
Learn this: How to Add a Table of Contents, Captions, and Cross-References in Word →<w:sdtPr>
<w:alias w:val="Document ID"/>
<w:tag w:val="document_id"/>
<w:text/>
</w:sdtPr>Names, numbers and other details people change every time are plain text content controls. Click one and type: the text replaces the sample, keeps the formatting, and the field still shows its name when selected.
Piece by piece
<w:alias w:val="…"/>- The title shown on the control’s tab when you click it.
<w:tag w:val="…"/>- A machine-readable name, useful for mail merge or code.
<w:text/>- Plain text: one line, one format, so pasted text cannot break the layout.
<w:showingPlcHdr/>- Present when the field shows gray placeholder text instead of a value.
In the sample: Document ID = WH-SOP-014
How it is used: 10 in this template: Document ID, Version, Department, Process owner, Applies to, Owner name, Approver name, Quality approver, Company. Use Developer > Design Mode to see every control at once, or the Selection Pane to jump between them.
How to change it: Developer > Properties changes the title, tag and placeholder. To show the Developer tab: File > Options > Customize Ribbon > Developer.
Learn this: How to Create Fillable Forms with Content Controls in Word →<w:sdtPr>
<w:alias w:val="Effective date"/>
<w:tag w:val="effective_date"/>
<w:date w:fullDate="2026-11-02T00:00:00Z">
<w:dateFormat w:val="MMMM d, yyyy"/>
<w:lid w:val="en-US"/>
<w:storeMappedDataAs w:val="dateTime"/>
<w:calendar w:val="gregorian"/>
</w:date>
</w:sdtPr>Dates are date picker content controls: click the arrow to pick from a calendar, or type a date in any format and Word shows it as "November 2, 2026".
Piece by piece
w:fullDate- The stored date, independent of how it is shown.
<w:dateFormat w:val="MMMM d, yyyy"/>- Display format: full month name, day, four-digit year.
<w:lid w:val="en-US"/>- Language used for month names.
<w:storeMappedDataAs w:val="dateTime"/>- Stores a real date value if the control is mapped to data.
In the sample: Effective date = November 2, 2026
How it is used: 5 in this template: Effective date, Next review date, Signed date. Pick the date from the calendar so every date in the document has the same format.
How to change it: Developer > Properties > Display the date like this, for example d MMMM yyyy or yyyy-MM-dd.
Learn this: How to Create Fillable Forms with Content Controls in Word →<w:sdtPr>
<w:alias w:val="Status"/>
<w:tag w:val="status"/>
<w:dropDownList>
<w:listItem w:displayText="Draft" w:value="Draft"/>
<w:listItem w:displayText="In review" w:value="In review"/>
<w:listItem w:displayText="Approved" w:value="Approved"/>
<w:listItem w:displayText="Retired" w:value="Retired"/>
</w:dropDownList>
</w:sdtPr>Fields with a fixed set of answers are dropdown list content controls, so everyone uses the same words (useful when you search or count documents later).
Piece by piece
<w:dropDownList>- A list the reader must pick from (no free typing).
<w:listItem w:displayText="…" w:value="…"/>- One choice: the text shown and the value stored.
In the sample: Status = Approved (Draft / In review / Approved / Retired)
How it is used: 1 in this template: Status. Click the field and choose from the list.
How to change it: Developer > Properties > Add, Modify or Remove choices. Use a Combo Box instead if people need to type their own answer.
Learn this: How to Create Fillable Forms with Content Controls in Word →<w:sdtPr>
<w:alias w:val="Scanner charged"/>
<w:tag w:val="scanner_charged"/>
<w14:checkbox>
<w14:checked w14:val="1"/>
<w14:checkedState w14:val="2612" w14:font="MS Gothic"/>
<w14:uncheckedState w14:val="2610" w14:font="MS Gothic"/>
</w14:checkbox>
</w:sdtPr>Checklist boxes are checkbox content controls: click to tick or untick. They print as ☒ and ☐.
Piece by piece
<w14:checked w14:val="…"/>- 1 when ticked, 0 when not.
<w14:checkedState w14:val="2612"/>- Symbol for ticked: U+2612 ☒.
<w14:uncheckedState w14:val="2610"/>- Symbol for unticked: U+2610 ☐.
In the sample: 2 of 4 ticked in the sample
How it is used: 4 in this template: Scanner charged, Labels stocked, Dock lock tested, Appointments printed. Click the box. Checkboxes need Word 2010 or later; very old versions show a static symbol.
How to change it: Developer > Properties > Checked symbol > Change, for example to ✓ (Wingdings 2).
Learn this: How to Create Fillable Forms with Content Controls in Word →<w:style w:type="paragraph" w:styleId="Callout">
<w:name w:val="Callout"/>
<w:basedOn w:val="Normal"/>
<w:pPr>
<w:pBdr>
<w:left w:val="single" w:color="F2A93B" w:sz="24" w:space="8"/>
</w:pBdr>
<w:shd w:fill="EEF2F8" w:color="auto" w:val="clear"/>
<w:spacing w:after="160" w:before="120"/>
<w:ind w:left="180" w:right="180"/>
</w:pPr>
<w:rPr>
<w:sz w:val="21"/>
</w:rPr>
</w:style>Notes and warnings use a paragraph style named Callout: tinted background, amber bar on the left, indented on both sides. Because it is a style, every callout matches and you can restyle them all at once.
Piece by piece
<w:shd w:fill="EEF2F8"/>- Light blue-gray background.
<w:left w:val="single" w:sz="24" w:color="F2A93B"/>- Amber bar, 3 pt wide, on the left edge.
<w:ind w:left="180" w:right="180"/>- Indented 1/8 inch on each side.
In the sample: Used for the notes, tips and warnings in the body.
How it is used: Put the cursor in a paragraph and pick Callout in the Styles gallery.
How to change it: Right-click Callout in the Styles gallery > Modify > Format > Border or Shading. All callouts change together.
Learn this: How to Use Styles and the Navigation Pane in Word →<w:trPr>
<w:cantSplit/>
<w:tblHeader/>
</w:trPr>Header rows are marked to repeat at the top of each page when a table breaks, and rows are set not to split across pages, so a long table stays readable when printed.
Piece by piece
<w:tblHeader/>- Repeat this row at the top of each page.
<w:cantSplit/>- Keep each row on one page.
In the sample: 5 of 8 tables repeat their header row
How it is used: Add rows with Tab in the last cell; the header keeps repeating.
How to change it: Click in the header row > Table Layout > Repeat Header Rows. Short tables are also set to keep with the next paragraph so they do not split.
Learn this: How to Build and Format Tables That Read Well in Word →<w:style w:type="paragraph" w:styleId="Guidance">
<w:name w:val="Guidance"/>
<w:basedOn w:val="Normal"/>
<w:pPr>
<w:spacing w:after="100"/>
</w:pPr>
<w:rPr>
<w:i/>
<w:iCs/>
<w:color w:val="6B7280"/>
<w:sz w:val="19"/>
</w:rPr>
</w:style>Instructions for whoever fills in the template use a Guidance style (gray italics). Delete them before you send the document; with a style, Find and Replace can remove them all at once.
Piece by piece
<w:i/>- Italic.
<w:color w:val="6B7280"/>- Gray text.
In the sample: One note under the title block.
How it is used: Home > Replace > More > Format > Style > Guidance finds every note.
How to change it: Right-click Guidance in the Styles gallery > Modify.
Learn this: How to Use Styles and the Navigation Pane in Word →Tips and limits
- Keep one procedure per document. If a step says "see the other process", that other process probably needs its own SOP.
- Write steps for the newest person on the team; test the draft by watching someone follow it without help.
- Section numbers and the contents list depend on the Heading 1 and Heading 2 styles. If a heading loses its number, reapply the style instead of typing a number.
- The header repeats the document ID. It is a separate field from the one in the control table, so change both.
- Word for the web can fill in content controls but cannot add new ones; use desktop Word to change the template itself.
Learn the skills behind this template
Was this guide helpful? Spot a mistake? Send feedback · admin@arumsoft.com