Job Application Form in HTML (with File Upload for Resume)
A working HTML job application form with file upload for resume + cover letter, plus standard fields (name, email, role, LinkedIn, why-join). POSTs to splitforms; the file attachments land in your inbox and dashboard.
A job application form is a contact form with two extra requirements: file uploads for the resume (and optional cover letter), and structured fields for the role and qualifications. The trick is the `enctype="multipart/form-data"` attribute on the form — without it, file inputs don't actually upload. This is the #1 forgotten step.
splitforms supports file uploads on every plan, including free. Files up to 10 MB each, up to 5 files per submission. The uploaded resume lands as an email attachment AND is downloadable from the dashboard, AND is included in the webhook payload as a signed URL. No need for separate file-hosting setup.
Use the right input types for each field — `type="email"` for email (mobile keyboard, native validation), `type="tel"` for phone (numeric keypad on mobile), `type="url"` for LinkedIn. The `accept` attribute on file inputs filters the file picker to acceptable formats; pair with server-side validation since `accept` is advisory only.
For high-volume hiring, wire a webhook from splitforms to your ATS (Greenhouse, Lever, Workable) so applications populate the pipeline automatically. The webhook payload includes the structured fields as JSON and the file attachments as signed URLs you can fetch.
How to set this up
Set enctype="multipart/form-data"
Required for file uploads. Forms without it silently fail to upload attached files.
Use accept to filter file types
accept=".pdf,.doc,.docx" restricts the file picker to acceptable resume formats.
Add structured fields for the role
select element with predefined options is better than free-text — easier to filter applications in the dashboard.
(Optional) Webhook into your ATS
Configure a webhook in splitforms pointing at your Greenhouse/Lever/Workable inbound webhook. Applications populate the pipeline automatically.
File uploads on free tier, 10 MB per file, webhook to your ATS.
Frequently asked questions
Can I upload a resume with this form?
Yes. The `<input type="file" name="resume">` accepts file uploads, the form's enctype="multipart/form-data" tells the browser to send the file in the request body, and splitforms accepts attachments up to 10 MB per file.
Where do uploaded resumes go?
Three places. (1) Email attachment — you get the resume in your inbox along with the application data. (2) splitforms dashboard — downloadable from the submission record. (3) Webhook payload — a signed URL you can fetch programmatically.
What file types should I accept?
.pdf, .doc, .docx are the standard set. Many candidates submit .pages (Apple Pages) — consider accepting it if your audience is Mac-heavy. Avoid accepting .exe or arbitrary types — splitforms will scan and reject malware, but it's safer to restrict at the form level.
How do I limit file size?
The HTML accept attribute doesn't enforce size. splitforms enforces 10 MB per file server-side and rejects oversized submissions with a clear error. For a client-side check, add a JS handler on the input that rejects files over your limit before submission.
Can I integrate with Greenhouse/Lever/Workable?
Yes — splitforms ships signed webhooks on every plan. Configure a webhook URL pointing at your ATS's inbound webhook endpoint. Applications POSTed to splitforms forward as structured JSON to the ATS, populating the pipeline.
Related guides
Ship the form, not the backend.
Free for 1,000 submissions/month. Email delivery, AI spam filtering, signed webhooks, real dashboard — all on the free plan. No credit card.
Get a free access key →