splitforms.com

Form template · Time Off Request Form Template

Time Off Request Form Template

Updated · plan facts checked against /pricing

A time off request form lets an employee ask for leave in writing, with the dates, the type of leave and who covers their work, so the manager can approve or decline in one reply. This free leave request form has 10 fields, keeps sick leave to a single choice with no medical details, and emails every request.

  • 500 free total
  • No PHP · no SDK
  • One POST endpoint
Time Off Request 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 Time Off Request 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 Time Off Request Form snippet, swap in your access key, and ship.

Copy and ship

Your Time Off Request 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
time-off-request-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 time off request">
  <input type="hidden" name="form_loaded_at" id="form_loaded_at">

  <fieldset>
    <legend>Employee</legend>
    <label>Full name <input type="text" name="employee_name" autocomplete="name" required></label>
    <label>Work email <input type="email" name="email" autocomplete="email" required></label>
    <label>Team or department <input type="text" name="department" required></label>
    <label>Manager's name <input type="text" name="manager_name" required></label>
  </fieldset>

  <fieldset>
    <legend>Type of leave</legend>
    <label><input type="radio" name="leave_type" value="Vacation" required> Vacation / PTO</label>
    <label><input type="radio" name="leave_type" value="Sick"> Sick</label>
    <label><input type="radio" name="leave_type" value="Personal"> Personal</label>
    <label><input type="radio" name="leave_type" value="Unpaid"> Unpaid</label>
    <label><input type="radio" name="leave_type" value="Other"> Other (say which in the notes)</label>
  </fieldset>

  <fieldset>
    <legend>Dates</legend>
    <label>First day off <input type="date" name="start_date" id="start_date" required></label>
    <label>Last day off <input type="date" name="end_date" id="end_date" required></label>
    <label>Total hours requested
      <input type="number" name="hours_requested" min="0.5" step="0.5" required>
    </label>
  </fieldset>

  <label>Who will cover your work or shifts?
    <textarea name="coverage" rows="3" placeholder="Name of the person covering, or the shifts that need covering"></textarea>
  </label>

  <label>Notes for your manager (optional). Please do not include medical details.
    <textarea name="notes" rows="3"></textarea>
  </label>

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

  <button type="submit">Send time off request</button>
</form>
<script>
  document.getElementById('form_loaded_at').value = Date.now();
  // Stop the last day being set before the first day.
  var start = document.getElementById('start_date');
  var end = document.getElementById('end_date');
  start.addEventListener('change', function () {
    end.min = start.value;
    if (end.value && end.value < start.value) end.value = start.value;
  });
</script>

Field by field

What each field collects.

employee_name + email
The work email becomes the Reply-To on your notification, so the manager can approve or decline by replying to the email.
department + manager_name (required)
Tells whoever reads the inbox which manager decides. On paid plans, routing rules on department can send each request to that manager's inbox instead of one shared HR address.
leave_type (radio, required)
Five plain choices. 'Sick' is enough: the form never asks why. Rename the options to match your own policy, for example 'Floating holiday', and keep the names consistent so a CSV export on paid plans can total them.
start_date + end_date
First and last day off, both required. The small script sets the last day's minimum to the first day, so the dates cannot be entered backwards.
hours_requested (number, required)
Dates alone cannot show a half day or a part-time schedule. Total hours, in half-hour steps, is what payroll and balance tracking need.
coverage (textarea)
Who picks up the work or the shifts. Asking now saves the manager's first reply, which is almost always 'who's covering?'.
notes (optional)
The label asks people not to include medical details. splitforms is not HIPAA compliant and signs no BAA, so health information should go to HR through your usual private channel.

How to add it

How to add this form to your site.

To add a Time Off Request 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.

Match the options to your policy

Rename the leave types to the ones your policy uses, add your notice period above the form if you have one, swap in your access key and publish the page on your intranet or a shared link.

Get each request to the right manager

Every request is emailed on every plan, and the employee's email is the Reply-To. On paid plans, routing rules on department send each one to the right manager, and an auto-reply can confirm receipt to the employee.

Reply with the decision and keep the record

Approve or decline by replying to the notification. On paid plans, export the CSV each month or send requests to Google Sheets to total hours by employee and leave type.

What's included

What's included.

Time off requests usually arrive as a hallway question or a chat message, and the trouble starts later: nobody wrote down whether the Friday was a half day, who agreed to cover the shift, or when the manager said yes. A request form puts the same facts in front of the manager every time: first and last day, total hours, the type of leave and a named person covering the work. It also gives you a dated record of when each request was made, which matters when two people want the same week. Keep the form to scheduling facts. A sick day is a choice in a list, not a place for symptoms or doctor's notes; anything your local law or policy requires beyond that should go through HR directly. Dates, hours, leave type and cover in one request, with no medical questions. Check your local leave laws.

  • Time off request form: 10 fields (name, work email, department, manager, leave type, first day, last day, total hours, coverage, notes) plus a script that keeps the last day on or after the first
  • 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 Time Off Request 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 Time Off Request 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 a time off request form include?

The employee's name and email, their team and manager, the type of leave, the first and last day, total hours (to cover half days), who will cover the work, and an optional note. This template has all of those and nothing medical.

Is a leave request form the same as a time off request form?

Yes, in practice. Some companies say 'leave' for longer or statutory absences and 'time off' or PTO for vacation days, but the form asks the same questions. Rename the title and leave types to whatever your policy calls them.

Should employees say why they are taking sick leave?

This form does not ask. 'Sick' is a choice in the list, and the notes box asks people not to add medical details. What an employer may ask for, such as a doctor's note after a number of days, depends on local law and your policy, so check both.

How much notice should employees give for time off?

That is your policy to set, within your local leave laws. Put your notice period in a line above the form so employees see it before they submit; the form records the time each request was received, so you can check notice was given.

Is there a printable time off request form?

This is an online form, not a Word or PDF file. You can print the published page from your browser for a blank copy, but the online form keeps every request, with the time it was sent, in one searchable list.

Does the form track PTO balances or approvals?

No. splitforms collects and stores the requests and emails them; approvals happen by reply and balances stay in your payroll or HR system. On paid plans the CSV export or Google Sheets integration gives you the hours to update those balances.

Is the time off request form free?

Each request is one submission, and the Free plan covers 500 in total, not per month, with email notifications included. Routing to managers, auto-replies and CSV export 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