Get a free access key
Sign in to splitforms and create a form to get an access key. The Free plan needs no credit card and covers 500 applications in total.
Job application form
Updated · plan facts checked against /pricing
A job application form collects a candidate's name, email, the role they want, a resume and a cover letter. This one posts to a single splitforms endpoint with no backend code, and the Free plan covers 500 applications in total.

Add a file input and applicants attach a PDF/DOCX resume and cover letter: 5 files, 5 MB each on paid plans.
A botcheck honeypot, a form_loaded_at time-trap, content heuristics, and IP rate limiting block bot applications before anything is stored.
Owner email on every plan; signed webhooks and 1-click Notion, Airtable, Google Sheets, or Slack on paid plans.
Copy-paste ready
Drop this into your careers page — it posts directly to splitforms with no server, PHP, or API route to write. Swap in your own access_key from the dashboard. Want field-by-field notes with LinkedIn and portfolio fields? The job application form HTML guide walks through both; on WordPress, use the WordPress form guide or plugin instead of raw HTML.
<form action="https://splitforms.com/api/submit" method="POST" enctype="multipart/form-data">
<input type="hidden" name="access_key" value="YOUR_KEY">
<input type="hidden" name="subject" value="New job application">
<input type="hidden" name="form_loaded_at" id="form_loaded_at">
<input type="text" name="name" placeholder="Full Name" required>
<input type="email" name="email" placeholder="Email" required>
<select name="position" required>
<option value="">Select position</option>
<option value="frontend">Frontend Developer</option>
<option value="backend">Backend Developer</option>
<option value="designer">Designer</option>
</select>
<!-- File upload (paid plans) -->
<label>Resume (PDF)</label>
<input type="file" name="resume" accept=".pdf,.doc,.docx">
<textarea name="cover_letter" placeholder="Cover letter" rows="5" required></textarea>
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">
<button type="submit">Submit Application</button>
</form>
<script>
document.getElementById('form_loaded_at').value = Date.now();
</script>Setup
Six steps from a blank careers page to applications landing in your dashboard and inbox — a free access key, the candidate fields, the resume upload, the spam traps, a test submission, and routing to your hiring workflow.
Sign in to splitforms and create a form to get an access key. The Free plan needs no credit card and covers 500 applications in total.
Name, email, and the role they're applying for at minimum. LinkedIn or portfolio URL and years of experience are common optional additions.
Set enctype="multipart/form-data" on the form and add an input type="file" field. File uploads are stored on Pro ($5 per month) and above: 5 files, 5 MB each per submission.
Include the hidden botcheck honeypot (leave it empty) and a form_loaded_at hidden field set to the page-load timestamp — both are checked server-side before anything is stored.
Submit a test application from the live page and confirm it shows up in your dashboard and inbox — owner email notifications are included free on every plan.
Connect Notion, Airtable, Google Sheets, or Slack with one click, or forward each application to your ATS with a signed webhook (paid plans).
What it does
A job application form collects a candidate's name, email, the role they're applying for, and a resume — posted straight to one splitforms endpoint with your access_key as a hidden field, so applications land in your dashboard and inbox with no backend code to write. Resume and cover-letter file uploads work from the Pro plan; Free covers 500 applications in total.

What to ask
Keep the required list short — every extra required field costs completion rate. A minimal, high-converting job application form requires the essentials and makes the rest optional:

Routing
A self-hosted job application form isn't a replacement for Greenhouse, Lever, or Workable at high volume — but if you're hiring a handful of roles a year, every application still needs somewhere to go. On paid plans, forward each application's JSON to your ATS with a signed webhook (or Zapier, Make, or n8n), or connect Notion, Airtable, Google Sheets, or Slack as a one-click integration so the hiring team triages from a database or channel instead of an inbox. Every application is also available over the REST API or through the free MCP server for AI recruiting agents.

How SplitForms works
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.

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

We instantly capture and organize every submission in your inbox.

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

No credit card required. Set up in under 60 seconds.
Connect & automate
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.

Questions
Yes. File uploads are available on Pro ($5 per month) and above — set enctype="multipart/form-data" on the form and add an input type="file" field, and applicants can attach a resume when they apply.
Each application is stored in your dashboard with all fields, files, and metadata. You also get an email notification with the application details — that's included free on every plan, including Free.
Yes. Use a signed webhook (Pro and above) to forward each application's JSON to Greenhouse, Lever, Workable, or any ATS/tool that accepts webhook data, or route through Zapier, Make, or n8n (splitforms has no native Zapier app, but the generic webhook works with all three).
Yes. Free covers 500 applications in total with unlimited forms, spam filtering, and email notifications included. Pro is $5 per month for 5,000 submissions a month with file uploads, webhooks, integrations, an auto-responder, CC/BCC, and priority support.
Every submission passes through the hidden botcheck honeypot and the form_loaded_at time-trap, plus server-side content heuristics and rate limiting (6 submissions/minute per IP, 20 per 15 minutes). Add per-form allowed domains, strict origin mode, or your own reCAPTCHA v2 key for extra coverage.
Yes, on paid plans. Each submission accepts up to 5 files, 5 MB each, so add a second input type="file" field and a resume plus a standalone cover-letter PDF upload together in one application.
Yes. Add a hidden redirect field with a URL to send applicants to a thank-you or next-steps page, and a hidden subject field to control the notification email's subject line — both work with no extra setup.
Use the form on this page for a straightforward job application with a resume upload. For a small team's careers page with role, LinkedIn, work authorization and notice period fields, start from the careers page application form template. For hourly and shift work (retail, restaurants, warehouses), the hourly employment application form asks for availability by day and shift and doesn't require a resume. For non-job applications such as programs, grants or memberships, use the general application form template.
Simple pricing
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.
For side projects and indie devs.
Every paid feature, for agencies and growing products.
Every Pro feature with triple the volume — $0.27 per 1,000 at full use.
No credit card required on Free • Cancel anytime • Full pricing and FAQ