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 a month.
Job application form
A careers-page form that collects a candidate's name, email, role, and resume — posted to one splitforms endpoint, with no backend code to write.

Add a file input and applicants attach a PDF/DOCX resume and cover letter — 5 files, 5 MB each on Starter and above.
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 Starter and above.
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 (Starter plan and above) -->
<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 a month.
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 Starter ($1/month) and above — 5 files per submission, 5 MB each.
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 (Starter and above).
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 Starter plan; Free covers 500 applications a month.

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 Starter and above, 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
Connect your form, collect every submission, and send data where it needs to go — without building backend infrastructure.

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
SplitForms works with the destinations you route to and the platforms you build on — from Slack and Sheets to WordPress, Shopify, and Next.js.

Trusted by indie teams and agencies shipping forms worldwide
Testimonials
40 quotes on record — from indie hacks to agency migrations.
“I replaced a Lambda + DynamoDB + SES contact form with six lines of HTML. It took eleven minutes, and the dashboard is better than what I was going to build.”
“We migrated 14 client sites off Formspree in a single weekend. The price is a third of what we paid, the API is more honest, and the spam filter actually works.”
“The webhook payload is signed, idempotent, and well-shaped. It reads like code from a competent team, not a CRUD app held together with duct tape.”
“I stopped reaching for Typeform on small marketing sites. splitforms covers 90% of the use case at none of the bloat.”
“I onboarded our whole agency in an afternoon. The MCP integration meant Cursor literally dropped the form straight into our client repos for us.”
“The free plan gave me 500 submissions before I paid a cent, and Starter is a dollar a month. I've spent more on coffee deciding which backend to use.”
“Spam went from forty junk entries a day to zero, with no reCAPTCHA puzzle ruining the form. The honeypot and time-trap just quietly do their job.”
“Point the form action at one endpoint and you're done. No SDK, no client library, no build step. This is how a form backend should feel.”
“Leads land in Slack the second someone submits, and a copy goes to Google Sheets for the sales team. I wired both up in under ten minutes.”
“I run a static Hugo site on a five-dollar VPS. splitforms gave it a real contact form without me standing up a single server.”
Questions
Yes. File uploads are available on Starter ($1/mo) 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 (Starter+) 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 a month with unlimited forms, spam filtering, and email notifications included. Starter is $1/month for 1,000 submissions with file uploads, webhooks, integrations, and an auto-responder; Pro is $5/month for 5,000 with 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 Starter and above. 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.
This page is the code you paste into an existing careers page. The job application form template gives you the same form pre-built with fields already chosen; for high-volume hiring (retail, warehouse, hospitality) the employment application form template uses a shorter field set.
Simple pricing
Choose a plan that fits your workflow — from a free form endpoint to full automations, exports, and higher submission limits.
Free forever
For side projects and indie devs.
For builders who want every paid feature for $1/month.
For agencies and growing products.
Pay $59. 3 years sorted.
No credit card required on Free • Cancel anytime