The first page of the document DocMake makes from the sample values on this page.
Operations
Permit to Work
A permit to work is a formal recorded process for controlling work identified as potentially hazardous, and a means of communication between the people running the plant and the people about to work on it. HSE puts the limit of it plainly in HSG250: issuing a permit does not by itself make a job safe. Only the people preparing, supervising and carrying out the work do that, and the precautions come out of the task risk assessment done beforehand.
HSG250 lists what a permit form should carry, and notes that a form missing those elements is unlikely to be achieving its purpose: title, reference number with cross references to related permits and isolation certificates, job location, plant identification, a description of the work and its limitations, hazard identification including residual hazards, the precautions necessary and the emergency actions with a signature that the precautions have been taken, and the protective equipment required.
Then come the stages, which are the reason a permit is a process rather than a form. Issue records the isolations made and precautions taken along with the duration of the permit, plus a second authorising signature for high hazard work. Acceptance is the performing authority confirming that the work, hazards and precautions were understood and explained to everyone working under it. Extension and shift handover give a new expiry time and brief the incoming performing authority. Hand back certifies the work complete and the plant fit to recommission, and cancellation closes it. Nobody issues a permit to themselves, and a suspended permit stays live, which is how isolations remain in force under a permit nobody is currently working to.
The numbers are jurisdictional and belong in the data rather than printed into the form. Confined space entry under the US rule needs oxygen between 19.5 and 23.5 percent and flammables below 10 percent of the lower flammable limit, tested in that order; carbon monoxide and hydrogen sulphide thresholds and retest intervals come from your own site and exposure limits. Fire watch after hot work is at least half an hour under the OSHA general industry rule, a sufficient period of time under its construction rule, and an hour plus up to three further hours of monitoring in NFPA 51B from the 2019 edition. HSG250 is guidance written for the petroleum, chemical and allied industries, not law and not a general construction standard, so have your own competent person set the values before any of this reaches a gate.
Blanks to fill
| permit_number | Permit number |
| permit_type | Permit type |
| valid_from | Valid from |
| valid_to | Expires |
| permit_title | Permit title |
| work_description | Description of work |
| job_location | Job location |
| plant_identification | Plant identification |
| work_limitations | Limitations on the work |
| risk_assessment_reference | Task risk assessment |
| related_permits | Related permits and isolation certificates |
| retest_interval | Retest interval |
| gas_detector_reference | Detector used and its calibration |
| ppe_required | Protective equipment required |
| emergency_actions | Actions in an emergency |
| issuing_authority | Issued by |
| issue_datetime | Issued at |
| issuing_authority_role | Issuing authority role |
| requires_second_authorisation | High hazard work, second authorisation required |
| authorising_manager | Authorised by |
| authorisation_datetime | Authorised at |
| acceptance_statement | Acceptance statement |
| performing_authority | Accepted by |
| acceptance_datetime | Accepted at |
| performing_company | Company |
| handback_statement | Hand back statement |
| work_complete_by | Work complete, signed by |
| work_complete_datetime | Work complete at |
| isolations_removed_by | Isolations removed by |
| plant_ready_by | Plant ready for recommissioning, signed by |
| plant_ready_datetime | Plant ready at |
| cancellation_note | Cancellation note |
| cancelled_by | Cancelled by |
| cancellation_datetime | Cancelled at |
| retention_note | Retention |
| company_name | Company |
| hazards[] | One per item, so a row is added for every item in the list |
| precautions[] | One per item, so a row is added for every item in the list |
| isolations[] | One per item, so a row is added for every item in the list |
| atmospheric_tests[] | One per item, so a row is added for every item in the list |
| workers[] | One per item, so a row is added for every item in the list |
| extensions[] | One per item, so a row is added for every item in the list |
The data behind the preview
This is the exact JSON that produced the document above. Change the values, POST them to the API, and you get your version back as DOCX or PDF. Lists grow and shrink with your data; the layout adapts.
- 01 Sign up free and duplicate this template into your workspace.
- 02 Adjust the wording and branding in the visual editor.
- 03 Fill it in the app, share it as a form link, or call the API.
{
"company_name": "Larkfield Foods Ltd",
"permit_title": "Hot work on the boiler house north wall",
"permit_type": "Hot work, with a supporting isolation certificate",
"permit_number": "HW-2026-0217",
"related_permits": "Isolation certificate ISO-2026-0311 for steam main SM-02 and condensate return CR-02. Working at height permit WAH-2026-0189 for the same task and the same window. No confined space entry associated with this work.",
"job_location": "Boiler house, level 1, north wall, grid reference B4 to B6",
"plant_identification": "Steam main SM-02, condensate return CR-02, wall steelwork STL-B4. The redundant 50 mm condensate stub off CR-02 is the item being cut.",
"work_description": "Weld two pipe support brackets to the north wall steelwork at 2.1 m above floor level, then cut back and cap the redundant 50 mm condensate stub off CR-02.",
"work_limitations": "Welding and cutting only at the two positions marked in yellow on the wall. No work on live pipework. No hot work below the grating while the drain trap is open. Work stops if the boiler house is returned to service, if the gas detector alarms, or at expiry, whichever is first.",
"risk_assessment_reference": "RA-ENG-2026-041, hot work in the boiler house, revision 3 dated June 2, 2026",
"hazards": [
{
"hazard": "Ignition of combustible material by sparks and hot slag",
"note": "Cable trays and lagging within 6 m. Sparks travel further than expected from height."
},
{
"hazard": "Residual hydrocarbon or process vapour in the condensate stub",
"note": "Line drained and purged, but the stub is a dead leg and is treated as suspect until tested."
},
{
"hazard": "Stored energy in the steam main and condensate return",
"note": "Both isolated and drained, but the isolation stays live until the permit is cancelled."
},
{
"hazard": "Work at height from a mobile tower",
"note": "Covered by WAH-2026-0189, tower inspected and tagged the same morning."
}
],
"precautions": [
{
"precaution": "Combustible material removed or covered with fire blankets to 11 m radius, including the cable trays",
"carried_out_by": "Tomas Reiner, Maintenance",
"confirmed_at": "August 26, 2026 at 07:40"
},
{
"precaution": "Two 9 kg dry powder extinguishers and a charged hose reel positioned at the work face",
"carried_out_by": "Tomas Reiner, Maintenance",
"confirmed_at": "August 26, 2026 at 07:45"
},
{
"precaution": "Fire and smoke detection in the boiler house inhibited, and the inhibit logged with the control room",
"carried_out_by": "Control room operator",
"confirmed_at": "August 26, 2026 at 07:50"
},
{
"precaution": "Fire watch briefed and assigned for the duration of the work and the post work period set below",
"carried_out_by": "Marcus Hale, assigned fire watch",
"confirmed_at": "August 26, 2026 at 08:05"
}
],
"isolations": [
{
"point": "Valve SM-02-V14, boiler house inlet",
"energy": "Steam, 8 bar",
"method": "Closed, chained and locked, downstream vented and drained",
"tag": "LOCK-0441",
"by": "Tomas Reiner"
},
{
"point": "Valve CR-02-V07, condensate return",
"energy": "Hot condensate",
"method": "Closed and locked, spade fitted downstream, line drained to the pit",
"tag": "LOCK-0442",
"by": "Tomas Reiner"
},
{
"point": "Trace heating circuit TH-B4",
"energy": "Electrical, 230 V",
"method": "Breaker off, locked off at the panel, proved dead at the work face",
"tag": "LOCK-0443",
"by": "Daniel Okafor, authorised electrician"
}
],
"atmospheric_tests": [
{
"parameter": "Oxygen",
"reading": "20.9 percent",
"acceptance": "Not below 19.5 and not above 23.5 percent",
"time": "08:10",
"by": "Tomas Reiner"
},
{
"parameter": "Flammable gas or vapour",
"reading": "0 percent LFL at the stub and at the weld position",
"acceptance": "Below 10 percent of the lower flammable limit",
"time": "08:12",
"by": "Tomas Reiner"
},
{
"parameter": "Carbon monoxide",
"reading": "0 ppm",
"acceptance": "Site value from the boiler house entry standard",
"time": "08:13",
"by": "Tomas Reiner"
},
{
"parameter": "Flammable gas, retest after the lunch break",
"reading": "0 percent LFL",
"acceptance": "Below 10 percent of the lower flammable limit",
"time": "12:50",
"by": "Tomas Reiner"
}
],
"retest_interval": "Before work restarts after any break, and at least every two hours while cutting on the stub. Set by the site safety adviser, not by any single published rule.",
"gas_detector_reference": "Portable four gas detector DET-0117, bump tested at 07:35 on August 26, 2026, calibration valid to November 30, 2026",
"ppe_required": "Welding helmet with the correct shade, flame retardant coveralls, welding gauntlets, safety boots, eye protection under the helmet when grinding, hearing protection while cutting, and a full body harness with a fixed lanyard when working from the tower.",
"emergency_actions": "Stop work and make safe. Site alarm is a continuous tone. Muster at point M1 outside the boiler house east door. Raise the alarm from the boiler house call point or on the site radio. Detection is inhibited for the duration of this permit, so any fire must be reported by a person, not left to the system.",
"issuing_authority": "Nadia Fischer",
"issuing_authority_role": "Engineering Manager and issuing authority. She is not part of the working party and did not accept this permit.",
"issue_datetime": "August 26, 2026 at 08:15",
"valid_from": "August 26, 2026 at 08:15",
"valid_to": "August 26, 2026 at 16:00",
"requires_second_authorisation": "Yes. Hot work beside a live steam main is high hazard work under the site rules, so the site manager authorised it as well as the issuing authority.",
"authorising_manager": "Sanne Kuipers, Site Manager",
"authorisation_datetime": "August 26, 2026 at 08:18",
"performing_authority": "Tomas Reiner",
"performing_company": "Larkfield Foods Ltd, maintenance",
"acceptance_statement": "I have read this permit, I understand the work, the hazards and the precautions, and I have explained all of them to everyone working under it. I accept that this permit covers only the work described and only within the times shown.",
"acceptance_datetime": "August 26, 2026 at 08:22",
"workers": [
{
"name": "Tomas Reiner",
"company": "Larkfield Foods Ltd, maintenance",
"briefed_at": "08:22"
},
{
"name": "Marcus Hale",
"company": "Larkfield Foods Ltd, maintenance, fire watch",
"briefed_at": "08:22"
},
{
"name": "Daniel Okafor",
"company": "Kestrel M&E, electrical support",
"briefed_at": "08:25"
}
],
"extensions": [
{
"new_expiry": "August 26, 2026 at 18:00",
"checks": "Work face inspected, isolations and tags verified in place, atmosphere retested at 15:45 at 0 percent LFL, combustibles still covered, fire watch handover briefed",
"by": "Nadia Fischer, issuing authority",
"datetime": "August 26, 2026 at 15:55"
}
],
"work_complete_by": "Tomas Reiner, performing authority",
"work_complete_datetime": "August 26, 2026 at 17:20",
"handback_statement": "Work is complete, tools and equipment removed, the area cleared and cleaned. Fire watch maintained until 18:20, one hour after the last hot work, with a further walk round at 20:20. Detection reinstated with the control room before the permit was cancelled.",
"isolations_removed_by": "Tomas Reiner for LOCK-0441 and LOCK-0442, Daniel Okafor for LOCK-0443, all removed after the hand back signature",
"plant_ready_by": "Nadia Fischer, issuing authority",
"plant_ready_datetime": "August 26, 2026 at 20:35",
"cancelled_by": "Nadia Fischer, issuing authority",
"cancellation_datetime": "August 26, 2026 at 20:40",
"cancellation_note": "Steam main and condensate return returned to production control. Detection reinstated and the inhibit closed at 20:30. No incidents and no near misses reported under this permit.",
"retention_note": "Held at site by the issuing authority for at least thirty days after completion, then archived with the task risk assessment and the isolation certificate."
} Generate this document via the API
One template plus changing data is the whole point. The list of blanks above is the contract, and every new set of values comes back in the same layout: fill it in the app, hand someone a form link, or POST the JSON and get the file straight back.
The request below carries this page's own values, so it runs as soon as the template exists in your workspace. Swap the values for yours and the response is your document.
curl -X POST https://app.docmake.io/api/v1/render \
-H "Authorization: Bearer $DOCMAKE_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--output permit-to-work.pdf \
--data-binary @- <<'JSON'
{
"template_id": "tmpl_your_template_id",
"format": "pdf",
"data": {
"company_name": "Larkfield Foods Ltd",
"permit_title": "Hot work on the boiler house north wall",
"permit_type": "Hot work, with a supporting isolation certificate",
"permit_number": "HW-2026-0217",
"related_permits": "Isolation certificate ISO-2026-0311 for steam main SM-02 and condensate return CR-02. Working at height permit WAH-2026-0189 for the same task and the same window. No confined space entry associated with this work.",
"job_location": "Boiler house, level 1, north wall, grid reference B4 to B6",
"plant_identification": "Steam main SM-02, condensate return CR-02, wall steelwork STL-B4. The redundant 50 mm condensate stub off CR-02 is the item being cut.",
"work_description": "Weld two pipe support brackets to the north wall steelwork at 2.1 m above floor level, then cut back and cap the redundant 50 mm condensate stub off CR-02.",
"work_limitations": "Welding and cutting only at the two positions marked in yellow on the wall. No work on live pipework. No hot work below the grating while the drain trap is open. Work stops if the boiler house is returned to service, if the gas detector alarms, or at expiry, whichever is first.",
"risk_assessment_reference": "RA-ENG-2026-041, hot work in the boiler house, revision 3 dated June 2, 2026",
"hazards": [
{
"hazard": "Ignition of combustible material by sparks and hot slag",
"note": "Cable trays and lagging within 6 m. Sparks travel further than expected from height."
},
{
"hazard": "Residual hydrocarbon or process vapour in the condensate stub",
"note": "Line drained and purged, but the stub is a dead leg and is treated as suspect until tested."
},
{
"hazard": "Stored energy in the steam main and condensate return",
"note": "Both isolated and drained, but the isolation stays live until the permit is cancelled."
},
{
"hazard": "Work at height from a mobile tower",
"note": "Covered by WAH-2026-0189, tower inspected and tagged the same morning."
}
],
"precautions": [
{
"precaution": "Combustible material removed or covered with fire blankets to 11 m radius, including the cable trays",
"carried_out_by": "Tomas Reiner, Maintenance",
"confirmed_at": "August 26, 2026 at 07:40"
},
{
"precaution": "Two 9 kg dry powder extinguishers and a charged hose reel positioned at the work face",
"carried_out_by": "Tomas Reiner, Maintenance",
"confirmed_at": "August 26, 2026 at 07:45"
},
{
"precaution": "Fire and smoke detection in the boiler house inhibited, and the inhibit logged with the control room",
"carried_out_by": "Control room operator",
"confirmed_at": "August 26, 2026 at 07:50"
},
{
"precaution": "Fire watch briefed and assigned for the duration of the work and the post work period set below",
"carried_out_by": "Marcus Hale, assigned fire watch",
"confirmed_at": "August 26, 2026 at 08:05"
}
],
"isolations": [
{
"point": "Valve SM-02-V14, boiler house inlet",
"energy": "Steam, 8 bar",
"method": "Closed, chained and locked, downstream vented and drained",
"tag": "LOCK-0441",
"by": "Tomas Reiner"
},
{
"point": "Valve CR-02-V07, condensate return",
"energy": "Hot condensate",
"method": "Closed and locked, spade fitted downstream, line drained to the pit",
"tag": "LOCK-0442",
"by": "Tomas Reiner"
},
{
"point": "Trace heating circuit TH-B4",
"energy": "Electrical, 230 V",
"method": "Breaker off, locked off at the panel, proved dead at the work face",
"tag": "LOCK-0443",
"by": "Daniel Okafor, authorised electrician"
}
],
"atmospheric_tests": [
{
"parameter": "Oxygen",
"reading": "20.9 percent",
"acceptance": "Not below 19.5 and not above 23.5 percent",
"time": "08:10",
"by": "Tomas Reiner"
},
{
"parameter": "Flammable gas or vapour",
"reading": "0 percent LFL at the stub and at the weld position",
"acceptance": "Below 10 percent of the lower flammable limit",
"time": "08:12",
"by": "Tomas Reiner"
},
{
"parameter": "Carbon monoxide",
"reading": "0 ppm",
"acceptance": "Site value from the boiler house entry standard",
"time": "08:13",
"by": "Tomas Reiner"
},
{
"parameter": "Flammable gas, retest after the lunch break",
"reading": "0 percent LFL",
"acceptance": "Below 10 percent of the lower flammable limit",
"time": "12:50",
"by": "Tomas Reiner"
}
],
"retest_interval": "Before work restarts after any break, and at least every two hours while cutting on the stub. Set by the site safety adviser, not by any single published rule.",
"gas_detector_reference": "Portable four gas detector DET-0117, bump tested at 07:35 on August 26, 2026, calibration valid to November 30, 2026",
"ppe_required": "Welding helmet with the correct shade, flame retardant coveralls, welding gauntlets, safety boots, eye protection under the helmet when grinding, hearing protection while cutting, and a full body harness with a fixed lanyard when working from the tower.",
"emergency_actions": "Stop work and make safe. Site alarm is a continuous tone. Muster at point M1 outside the boiler house east door. Raise the alarm from the boiler house call point or on the site radio. Detection is inhibited for the duration of this permit, so any fire must be reported by a person, not left to the system.",
"issuing_authority": "Nadia Fischer",
"issuing_authority_role": "Engineering Manager and issuing authority. She is not part of the working party and did not accept this permit.",
"issue_datetime": "August 26, 2026 at 08:15",
"valid_from": "August 26, 2026 at 08:15",
"valid_to": "August 26, 2026 at 16:00",
"requires_second_authorisation": "Yes. Hot work beside a live steam main is high hazard work under the site rules, so the site manager authorised it as well as the issuing authority.",
"authorising_manager": "Sanne Kuipers, Site Manager",
"authorisation_datetime": "August 26, 2026 at 08:18",
"performing_authority": "Tomas Reiner",
"performing_company": "Larkfield Foods Ltd, maintenance",
"acceptance_statement": "I have read this permit, I understand the work, the hazards and the precautions, and I have explained all of them to everyone working under it. I accept that this permit covers only the work described and only within the times shown.",
"acceptance_datetime": "August 26, 2026 at 08:22",
"workers": [
{
"name": "Tomas Reiner",
"company": "Larkfield Foods Ltd, maintenance",
"briefed_at": "08:22"
},
{
"name": "Marcus Hale",
"company": "Larkfield Foods Ltd, maintenance, fire watch",
"briefed_at": "08:22"
},
{
"name": "Daniel Okafor",
"company": "Kestrel M&E, electrical support",
"briefed_at": "08:25"
}
],
"extensions": [
{
"new_expiry": "August 26, 2026 at 18:00",
"checks": "Work face inspected, isolations and tags verified in place, atmosphere retested at 15:45 at 0 percent LFL, combustibles still covered, fire watch handover briefed",
"by": "Nadia Fischer, issuing authority",
"datetime": "August 26, 2026 at 15:55"
}
],
"work_complete_by": "Tomas Reiner, performing authority",
"work_complete_datetime": "August 26, 2026 at 17:20",
"handback_statement": "Work is complete, tools and equipment removed, the area cleared and cleaned. Fire watch maintained until 18:20, one hour after the last hot work, with a further walk round at 20:20. Detection reinstated with the control room before the permit was cancelled.",
"isolations_removed_by": "Tomas Reiner for LOCK-0441 and LOCK-0442, Daniel Okafor for LOCK-0443, all removed after the hand back signature",
"plant_ready_by": "Nadia Fischer, issuing authority",
"plant_ready_datetime": "August 26, 2026 at 20:35",
"cancelled_by": "Nadia Fischer, issuing authority",
"cancellation_datetime": "August 26, 2026 at 20:40",
"cancellation_note": "Steam main and condensate return returned to production control. Detection reinstated and the inhibit closed at 20:30. No incidents and no near misses reported under this permit.",
"retention_note": "Held at site by the issuing authority for at least thirty days after completion, then archived with the task risk assessment and the isolation certificate."
}
}
JSON tmpl_your_template_id is
a stand-in: build this template in the visual editor and copy the id it shows, or create one with POST /api/v1/templates. Keys, formats, strict mode and batches are in the API reference.
Or let an AI assistant do it
The DocMake MCP server lets Claude and other assistants make this document the same way. Install it once:
claude mcp add docmake \
--env DOCMAKE_API_KEY=dm_your_api_key \
-- npx -y @docmake/mcp@latest Then ask for the document in plain words:
Make a PDF from my Permit to Work template with permit number "HW-2026-0217" and valid from "August 26, 2026 at 08:15".
More operations templates
Change Order
The instructed change, where it came from, what it costs line by line, what it does to the programme, and the contract sum it leaves behind.
View template →Daily Site Report
The day on site in one sheet: weather, crew, plant, work done, deliveries and what held the job up.
View template →Field Service Report
One engineer visit written down: the fault, the time on site, the parts fitted, the tests that proved it and the customer signature.
View template →