Time off request form

A time off request is really two dates and a reason, and the value of a form over an email is that both dates are real dates — validated, sortable, and comparable across everyone who has asked for the same week. Free text turns a range into a sentence you have to parse by hand for every request. This form collects the request; it does not approve it. Saying yes, or asking someone to cover, is still a reply you send — the form's job is making sure nothing arrives in a shape you have to interpret.

The form beside this text is live. Fill it in and submit it — it validates exactly as it would for a real respondent, and saves nothing.

Start and end are two date fields, not one range

Splitting the request into a start date and an end date field means both are validated as real dates in the browser, and the pair sorts and filters as a range in the CSV export — a single "dates" text field would return "next week" or "the 3rd to 5th", none of which a spreadsheet can compare.

Coverage is a free-text field, left optional

Who covers the work varies too much to be a dropdown — a fixed list of names goes stale the moment someone changes teams — so it is a plain text field, and it is optional because not every request needs a stand-in named before it is even reviewed.

No card required.

Time off request

Live preview

How to build this form

5 steps in the editor. Nothing here needs a paid plan.

  1. Add short text and email fields for the employee's name and email.
  2. Add a select field listing your departments or teams, so requests arrive already grouped.
  3. Add two date fields — start and end — rather than one, so the range is validated and sortable.
  4. Add a select field for leave type (vacation, sick, personal, bereavement) and an optional text field asking who covers the work.
  5. In Settings, add a webhook so each request reaches your own system the moment it's submitted, then export to CSV when you review the week.

Fields in this form

8 fields, using 5 of the 19 field types available.

QuestionField typeRequired
Full nameShort textYes
EmailEmailYes
DepartmentSelectYes
Start dateDateYes
End dateDateYes
Leave typeSelectYes
Who is covering your work while you are out?Short textOptional
Anything else to add?Long textOptional

What goes wrong with this form

Specific to a time off request form, not general advice about forms.

No leave-type field to filter by

Without a select field for leave type, every request in the CSV export reads identically — there is no column separating a vacation week from a sick day or a bereavement leave, so filtering by type means opening each row and reading the notes field by hand. Incident-report-form has no equivalent gap, because severity already gives it a column to sort by.

No way to tell whose request this is

Without a department or team select field, a request only identifies the person, not who has to approve or cover it — which means every request needs a reply just to find out where it belongs.

Mistaking delivery for approval

A webhook notifies you that a request arrived; it does not track whether you said yes. This form collects the request — approving it, and telling the employee, still happens in your own reply, not inside the form.

Questions about this form

What fields does a time off request form need?

Six do the job: name, email, department, a start date, an end date, and a leave type such as vacation or sick. A start and end date as two separate date fields is what lets you catch two people requesting the same week without reading every row.

Can employees request time off without a company account?

Yes — anyone with the form's link can submit a request without signing in; only the person who built the form needs a Seagit account. If requests should stay inside your team, share the link only internally rather than publishing it.

Does this form approve or deny time off automatically?

No. It collects the request — name, dates, type and any coverage note — and can notify you by webhook the moment one arrives. Approving it and telling the employee is still a reply you send yourself; there is no approve or deny action inside the form.

How do requests reach my inbox or Slack?

Add a webhook in Settings and each request is POSTed to your own endpoint as JSON the moment it's submitted, on every plan. Delivery straight into Slack or Microsoft Teams is available on paid plans; every request is stored in your dashboard and exports to CSV either way.