splitforms.com

Form template · Incident Report Form Template

Incident Report Form Template

Updated · plan facts checked against /pricing

An incident report template records what happened, when, where and who saw it, while memories are fresh. This free incident report form covers the date and time, location, type, people involved, witnesses, an injury yes/no with a one-line summary, actions taken and the reporter's typed name. Each report gets a numbered record.

  • 500 free total
  • No PHP · no SDK
  • One POST endpoint
Incident Report Form Template — copy-paste form template

This template is one of our free HTML form templates. See more form templates by industry.

No backend code

No server, API route, or SDK — your Incident Report Form posts straight to one endpoint.

Straight to your inbox

Every submission is emailed to you and saved to a searchable dashboard — spam filtered before it reaches you.

Copy-paste ready

It's plain HTML you own — paste the Incident Report Form snippet, swap in your access key, and ship.

Copy and ship

Your Incident Report Form, ready to paste.

Plain HTML that posts to the /api/submit endpoint. Replace YOUR_ACCESS_KEY with the key from your dashboard; that's the only edit.

Get your free access key
incident-report-form.html
<form action="https://splitforms.com/api/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
  <input type="hidden" name="subject" value="New incident report">
  <input type="hidden" name="form_loaded_at" id="form_loaded_at">

  <fieldset>
    <legend>Who is reporting</legend>
    <label>Your full name <input type="text" name="reporter_name" autocomplete="name" required></label>
    <label>Email <input type="email" name="email" autocomplete="email" required></label>
    <label>Phone <input type="tel" name="phone" autocomplete="tel"></label>
    <label>You are a
      <select name="reporter_role" required>
        <option value="">Choose one</option>
        <option>Employee</option>
        <option>Contractor</option>
        <option>Visitor or customer</option>
        <option>Tenant or resident</option>
        <option>Other</option>
      </select>
    </label>
  </fieldset>

  <fieldset>
    <legend>When and where</legend>
    <label>Date of the incident <input type="date" name="incident_date" required></label>
    <label>Approximate time <input type="time" name="incident_time"></label>
    <label>Exact location
      <input type="text" name="location" placeholder="Building, floor, room or area" required>
    </label>
    <label>Type of incident
      <select name="incident_type" required>
        <option value="">Choose one</option>
        <option>Injury or illness</option>
        <option>Near miss (no one hurt)</option>
        <option>Property or equipment damage</option>
        <option>Security, theft or vandalism</option>
        <option>Vehicle</option>
        <option>Other</option>
      </select>
    </label>
  </fieldset>

  <fieldset>
    <legend>What happened</legend>
    <label>Describe what happened, in order
      <textarea name="description" rows="6" required
        placeholder="What were people doing just before? What happened? What happened right after?"></textarea>
    </label>
    <label>People involved (names and roles)
      <textarea name="people_involved" rows="3"></textarea>
    </label>
    <label>Witnesses (names and phone or email)
      <textarea name="witnesses" rows="3"></textarea>
    </label>
  </fieldset>

  <fieldset>
    <legend>Was anyone hurt?</legend>
    <label><input type="radio" name="injury" value="no" required> No</label>
    <label><input type="radio" name="injury" value="yes"> Yes</label>
    <label><input type="radio" name="injury" value="not sure"> Not sure</label>
    <label>If yes, one line only (for example "cut to left hand"). No medical records or diagnoses.
      <input type="text" name="injury_summary" maxlength="200">
    </label>
    <label>Care given
      <select name="care_given">
        <option>None needed</option>
        <option>First aid on site</option>
        <option>Sent to a clinic or hospital</option>
        <option>Not known</option>
      </select>
    </label>
  </fieldset>

  <label>Damage to property or equipment (if any)
    <textarea name="property_damage" rows="3"></textarea>
  </label>

  <label>Actions taken so far
    <textarea name="actions_taken" rows="3" required
      placeholder="Area closed off, spill cleaned, supervisor told, equipment tagged out..."></textarea>
  </label>

  <label>Supervisor or manager told (name)
    <input type="text" name="supervisor_notified">
  </label>

  <label><input type="checkbox" name="confirmed" value="yes" required>
    This report is accurate to the best of my knowledge.</label>

  <label>Type your full name to confirm
    <input type="text" name="typed_name" required>
  </label>

  <!-- honeypot: leave empty -->
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">

  <button type="submit">Submit incident report</button>
</form>
<script>
  document.getElementById('form_loaded_at').value = Date.now();
</script>

Field by field

What each field collects.

reporter_name, email, reporter_role
Whoever fills in the form, which is not always the person involved. The role dropdown separates a staff injury from a visitor's fall at a glance. The email becomes the Reply-To on your notification, so follow-up questions go straight back to the reporter.
incident_date + incident_time
When it happened, not when it was reported. splitforms stamps the time it received the report separately, so the gap between the two is visible without asking.
location (required)
Ask for building, floor and room or area. 'The warehouse' is not enough for anyone who has to go and look, or fix the cause.
incident_type (dropdown)
Keeps near misses in the same log as injuries. Near misses are the reports that let you fix a hazard before it hurts someone, so make them easy to file.
description (required)
The placeholder asks for before, during and after, in order. A timeline is easier to check against witness accounts than a single sentence about the outcome.
witnesses (textarea)
Names plus a phone or email. A witness name without contact details is the most common gap when someone follows up a week later.
injury, injury_summary, care_given
A required yes / no / not sure, then one line and the level of care. Deliberately no medical detail: splitforms is not HIPAA compliant and signs no BAA, so keep diagnoses and records out of this form.
actions_taken (required)
What was done immediately: area closed, spill cleaned, machine tagged out. It shows the hazard was handled, and tells the next shift what state things are in.
confirmed + typed_name
A required checkbox plus a typed full name. It is a confirmation that the reporter stands behind the account, not a drawn signature; splitforms has no draw-your-signature field.

How to add it

How to add this form to your site.

To add a Incident Report Form to your site you need three things: a free splitforms access key, the HTML snippet above, and your key pasted into it. No backend, database, or CAPTCHA library — the form posts to one URL and every submission lands in your inbox and dashboard.

Publish the form where incidents happen

Swap in your access key, host the form page, and post the link or a QR code in break rooms, vehicles and front desks. Staff can file from a phone in a couple of minutes.

Route serious reports to the right person

Every report is emailed to you on every plan. On paid plans, notification routing can send any report where injury equals yes to a safety lead as well as the default inbox.

Follow up and keep the log

Quote the Lead # reference in follow-up emails, star open reports in the dashboard, and on paid plans export the CSV each month to review trends by type and location.

What's included

What's included.

Most incident reports go wrong in the first hour, not in the investigation. Someone writes a few lines on whatever paper is nearby, a witness goes home without leaving a phone number, and by the next day nobody agrees on the time or the exact spot. An online incident report form fixes the parts a form can fix: the same questions in the same order every time, required date, location and description, a separate witness box, and an injury question that cannot be skipped. splitforms gives every submission a sequential Lead # reference, so each report has a number you can quote in follow-up emails. What the form cannot decide is who you must notify and by when. Those duties depend on where you are and what happened, so check your local reporting rules. Required date, location, description and injury answer, plus a numbered record for every report. Check your local reporting rules.

  • Incident report form: 19 fields (reporter name, email, phone, role, date, time, location, type, description, people involved, witnesses, injury yes/no, injury summary, care given, property damage, actions taken, supervisor told, confirmation + typed name)
  • Plain HTML with labelled fieldsets — paste it into any site
  • One POST endpoint, no SDK — honeypot and spam scoring, no CAPTCHA
What's included with the Incident Report Form Template

Where submissions go

Where submissions go.

Reply-to is wired to the visitor's email, so one tap on Reply answers them directly — while the built-in honeypot and automatic spam scoring filter out bots before they reach you. Every submission is emailed to your inbox and can forward to a webhook or Slack the moment a visitor hits send.

  • Reply-to wired to the visitor's email — reply straight from your inbox
  • Honeypot and automatic spam scoring filter bots, no CAPTCHA friction
  • Live dashboard, CSV export, and signed webhooks on paid plans
Spam-filtered submissions from the Incident Report Form Template

How SplitForms works

What happens after someone submits your form?

splitforms receives the submission, filters spam, saves it to your dashboard and emails you — then, on paid plans, sends it on to your webhooks and integrations. No backend infrastructure to build.

A SplitForms contact form submission launching straight to your inbox

Add your endpoint

Point your form to your unique SplitForms endpoint. That's it.

HTML form pointing at a SplitForms submit endpoint

Receive submissions

We instantly capture and organize every submission in your inbox.

Submissions inbox with searchable leads and status pills

Route anywhere

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

Generic integration tiles for email, sheets, chat, CRM, automate, and webhook

No credit card required. Set up in under 60 seconds.

Connect & automate

Where can submissions go besides email?

On paid plans, submissions can also go to Slack, Discord, Google Sheets, Notion, Airtable, Zapier or any signed webhook — and splitforms works on the platforms you build on, from WordPress and Shopify to Next.js. With Stripe connected, your forms can take payments too.

Connect your SplitForms form to Slack, Google Sheets, Mailchimp, Zapier and more
NewTake payments on your formsDeposits, bookings, order forms — submitters check out through Stripe and the money goes straight to your Stripe account. Included on every paid plan.See payment forms →Need time slots? Online booking →

Setup guides for the stacks you use

Questions

Frequently asked questions.

View all FAQs
What should an incident report include?

The date, time and exact location; who was involved and who saw it, with contact details; what happened in order; whether anyone was hurt and what care was given; any property damage; what was done straight away; and who reported it. This template asks for all of them, with the essentials marked required.

Is there a printable incident report template?

This is an online form, not a Word or PDF file. If you want a paper backup for places without a phone signal, publish the form page and print it from the browser for a blank copy, then enter paper reports into the form later so everything sits in one log.

Do I have to report workplace incidents to a government agency?

Sometimes. Whether you must report, to whom, and how fast depends on your country, state or province, your industry and how serious the incident was. A form cannot answer that, so check your local reporting rules or ask an adviser, and use this log as your internal record.

Can people attach photos of the scene?

Yes, on paid plans: add an input type="file" field and set enctype="multipart/form-data" on the form. Each submission can carry up to 5 files of 5 MB each. On the Free plan uploaded files are not stored, so leave the photo field out and ask for photos by reply.

Should incident reports collect medical information?

Keep it to whether someone was hurt, a one-line description and the level of care. splitforms is not HIPAA compliant and does not sign a BAA, so do not use this form for medical records, diagnoses or treatment notes.

Can reports be anonymous?

You can remove the name, email and typed name fields for an anonymous hazard or near-miss form. Note that splitforms still stores the sender's IP address with each submission, so do not promise full anonymity; keep a named form for injuries, where you will need to follow up.

Is the incident report form free?

Each report is one submission, and the Free plan covers 500 in total, not per month, with email notifications included. Routing, CSV export, photo uploads and auto-replies are on paid plans; Pro is $5 per month.

Simple pricing

How much does splitforms cost?

Free gives you 500 submissions for $0 — no card, no time limit. Pro is $5/month for 5,000 submissions a month, and Annual is $49/year for 15,000 a month with every Pro feature.

Free

$0— 500 submissions
 

No card, no time limit

Best for testing

For side projects and indie devs.

  • 500 free submissions
  • Unlimited forms
  • Email notifications included
  • Smart spam filtering
  • Submissions dashboard
  • Redirect after submit
  • MCP server included

Annual

$49/ year
About $4.08 per month, billed yearly
Best value

Every Pro feature with triple the volume — $0.27 per 1,000 at full use.

  • 15,000 submissions per month
  • Unlimited forms
  • Everything in Pro
  • File uploads with 5 GB storage
  • 3 team seats
  • Priority email support

No credit card required on Free • Cancel anytime • Full pricing and FAQ