The short answer: probably $0
For a typical website — a portfolio, a local business, a SaaS landing page — a working contact form costs nothing in 2026. Not "free trial" nothing; actually nothing, indefinitely. The HTML form is free by definition, and the receiving side has multiple permanent free tiers that comfortably cover normal contact-form volume.
So why does the question even come up? Because the pricing landscape is genuinely confusing: "free" means five different things across five services, the paid plans for near-identical functionality range from $5 to $19 a month, and the real costs often hide in caps, retention limits, and gated features rather than the headline price. This post lays out all of it.
First, a framing that simplifies everything: a contact form has two halves, and only one of them costs money.
- The form itself — the fields and button on your page. This is plain HTML. Free everywhere, forever. (Need markup? The form generator builds it for you.)
- The receiving side — the server that accepts submissions, filters spam, stores them, and emails you. This is the entire market. Every price you'll ever see for "a contact form" is a price for this half. Background: what is a form backend.
Free tiers compared (2026)
Here's what "free" actually buys you at each of the major form backends:
| Service | Free submissions/mo | The fine print |
|---|---|---|
| splitforms | 500 | Unlimited forms, dashboard, free email notifications, spam filtering included. No credit card. |
| Netlify Forms | Unlimited on current credit plans | Free, but requires Netlify hosting; legacy plans keep separate form limits. |
| Formspree | 50 | 30-day submission history on the free tier. |
| Getform | 50 | Single form on the free tier. |
| Basin | 50 | One endpoint, 30-day retention; webhooks and API gated to paid/enterprise. |
| Web3Forms | 250 (email-only) | No dashboard or storage on free — a lost email is a lost submission. |
Two honest observations about this table. First, the 50/month tiers are trials in practice: a contact form on a modestly busy site crosses 50 within the month once you count the spam that slips through. Second, Web3Forms' 250/month is forwarding with zero record. Whether that matters depends entirely on whether losing an occasional message costs you money. Deeper comparisons: vs Formspree, vs Web3Forms, vs Getform, vs Basin.
Worked examples, using those real free tiers:
- Portfolio at ~30 messages/month: every service on the table is $0. Formspree's and Basin's 50/month caps hold — barely — as long as spam stays filtered; splitforms' 500/month cap isn't a factor at all.
- Local business site at ~200/month: Formspree (50) and Basin (50) are past their free caps. Current Netlify credit plans remain free for form submissions but tie the form to Netlify hosting. splitforms is also $0 with 300 submissions of headroom left and works on any host.
- Lead-gen site at ~2,000/month: Formspree needs Plus at $25/mo and Basin needs its $40.83/mo yearly Pro tier. Current Netlify credit plans still do not meter form submissions; splitforms Pro handles the volume at $5/mo without host lock-in.
What paid plans cost when you outgrow free
Entry-level paid plans for the same services, with what a dollar buys at each:
| Service | Entry paid plan | Submissions included |
|---|---|---|
| splitforms Pro | $5/mo | 5,000/mo (a $59 3-year plan covers 15,000/mo) |
| Web3Forms Pro | $5/mo | Unlocks dashboard and webhooks rather than raising a cap |
| Formspree Basic | $10/mo | 1,000/mo |
| Basin Starter | $12.50/mo (billed yearly) | 250/mo |
| Getform Basic | $19/mo | 1,000/mo, 5 forms |
| Netlify Forms (legacy Level 1) | $19/mo | 1,000/mo additional; legacy plans only |
The per-submission math is stark: splitforms Pro offers 5,000 for $5, while Getform Basic and legacy Netlify Level 1 list 1,000 for $19. Current Netlify credit plans are a different model: form submissions are free, with costs and limits handled at the account level. Full details are on the splitforms pricing page, and a wider survey is in cheapest form-to-email services.
The DIY option, costed honestly
Developers often assume building the receiving side is the free option. The parts list says otherwise:
- Compute: a serverless function or small server — often $0 on free tiers, fine.
- Email delivery: a transactional provider (SES, Mailgun, Postmark) plus SPF/DKIM/DMARC records you set up and maintain. Cheap in dollars, expensive in correctness — this is where DIY forms quietly break.
- Spam protection: a honeypot is an hour's work; keeping ahead of AI-generated spam is an ongoing project. The server-side spam checklist shows the full scope.
- Storage and a way to read it: a table, plus some interface better than psql for whoever checks messages.
- Your time: a focused day to do all of it properly, plus maintenance forever. At any reasonable rate, this is hundreds of dollars of effort to replicate a $0–5/month product.
DIY makes sense when the form is part of your product's core logic — the cases covered in do I need a backend for a contact form. As a cost-saving measure for a contact form, it isn't one.
Total cost of ownership: the three approaches side by side
Putting the whole post in one table — not just subscription prices, but everything each approach actually costs over a year. Time is priced conservatively at $60/hour; adjust for your own rate:
| Approach | Software & services | Email delivery | Your time, year one | Realistic annual total |
|---|---|---|---|---|
| DIY backend | Serverless compute: $0–60/yr | Transactional provider + SPF/DKIM/DMARC: $0–180/yr | ~1 day build + spam upkeep: 10–16 hrs ≈ $600–960 | ~$600–1,200 |
| WordPress plugin stack | Form plugin license: $0–100/yr (e.g. WPForms from ~$49.50/yr) | SMTP plugin + sending service: $0–180/yr | Setup, updates, conflict debugging: 4–8 hrs ≈ $240–480 | ~$250–750 |
| Hosted form backend | splitforms: $0 (Free, 500/mo) to $60/yr (Pro, 5,000/mo) | Included — email notifications are free on every plan | Paste form, test: ~1 hr ≈ $60 | ~$60–120 |
These are estimates, and the DIY row swings hardest with your traffic and your hourly rate. But the shape of the answer doesn't change: for a standard contact form, the hosted backend is cheapest even before you price a single lost lead.
When paying actually makes sense
The honest decision rule, in three lines:
- Under ~30 real messages a month: any free tier works; pick on features. If you want stored history and spam filtering without paying, the 500/month splitforms free tier is the roomiest option on the table.
- Approaching your cap, or you need a gated feature: pay — but compare per-dollar value first. $5/month for 5,000 submissions versus $19/month for 1,000 is the same product category at a 20x per-submission spread.
- The form is how customers reach a real business: pay for headroom and storage even if you technically fit in free. The first lead lost at a cap or in a spam folder costs more than a year of any plan here. If you hate subscriptions, splitforms' $59 3-year plan exists precisely for this — one coffee-budget payment, 36 months of not thinking about it.
FAQ
Can I get a contact form completely free, forever?
Yes, genuinely. The form itself (the HTML) is free everywhere, and several form backends have permanent free tiers: splitforms covers 500 submissions/month with unlimited forms and a full dashboard; Formspree, Getform, and Basin offer 50/month; current Netlify credit plans include free, unlimited form submissions when you host on Netlify. Legacy Netlify plans keep separate form limits. For a typical small-business contact form receiving a handful of messages a week, you can run free indefinitely — the question is whether the features and hosting constraints fit.
Why do free tiers vary so wildly — 50 vs 500 submissions?
Because they serve different business strategies. A 50/month tier (Formspree, Getform, Basin) is sized as a trial: enough to evaluate the product, tight enough that any real site upgrades within weeks. A 500/month tier (splitforms) is sized as a product: most small sites never need to pay, and revenue comes from the minority with serious volume. Neither is dishonest, but you should know which kind you're signing up for, because 'free' that lasts three weeks is really a delayed $10-19/month bill.
What does Web3Forms' free tier actually include?
Web3Forms Free includes 250 submissions/month, unlimited forms, hCaptcha, custom redirects, and 30 days of submission history. Webhooks, file uploads, the Submissions API, and third-party integrations are paid features. Starter, Pro, and Agency publish 5,000, 10,000, and 20,000 monthly allowances.
How much does Formspree cost compared to splitforms?
Formspree: 50 submissions/month free (30-day history), then Basic at $10/month for 1,000 and Plus at $25/month for 10,000. splitforms: 500/month free, Pro at $5/month for 1,000 with signed webhooks, Pro at $5/month for 5,000, and a $59 3-Year plan billed every 3 years covering 15,000/month. At the 1,000/month tier the gap is $10 versus $1 for the same job; at the free tier it's a 10x difference in headroom.
Do email notifications cost extra?
Not on splitforms — email notifications are free on every plan, including Free. You never pay to have a submission land in your inbox; the paid tiers buy volume, webhooks, exports, and custom SMTP, not the email itself. Elsewhere, watch for this line item: some services brand the notification emails on free tiers or bundle notification features into paid plans, which turns 'free form' into a delayed upgrade.
What's the real cost of a WordPress contact form plugin?
The popular plugins are freemium: a functional free version, with the features people actually end up wanting — entry storage in some, conditional logic, integrations, file uploads — packaged into paid licenses that typically run tens of dollars per year and climb past a hundred for the full bundles. Add the indirect costs: plugin updates, compatibility testing with WordPress upgrades, and the occasional conflict to debug. The plugin route isn't wrong, but 'free plugin' rarely stays free once you need more than the basics.
Is building my own form handler cheaper than paying $5/month?
Almost never, once you count everything. The handler itself can run on a free serverless tier, but you'll need a transactional email service, DNS records (SPF/DKIM/DMARC) configured correctly, spam protection you write and tune yourself, and storage if you don't want lost leads. Then add your hours: realistically a day to build properly and recurring time for maintenance. If your time is worth anything, $5/month — or a free 500/month tier — wins decisively for a standard contact form.
What hidden costs should I watch for in form service pricing?
Five recur across the industry: (1) per-form caps — Getform's tiers limit how many forms you can run, so multiple small sites force upgrades; (2) short retention — Basin's free tier keeps 30 days of history; (3) feature gating — webhooks, file uploads, or API access locked behind paid plans; (4) account-level limits — a Netlify credit-plan project can pause when account credits are exhausted, even though form submissions themselves are free; (5) platform lock-in — built-in forms (Netlify, Wix, Squarespace) stop working if you move hosts, and the migration is a hidden switching cost.
When does paying for a form service actually make sense?
Three triggers: you're consistently approaching your free tier's cap (paying is cheaper than losing submission #51); you need a gated feature like CC/BCC recipients or higher volume; or the form is your business's front door and you want headroom rather than running at 95% of a limit. At that point compare per-dollar value: splitforms Pro is $5/month for 5,000 submissions, Formspree Basic is $10/month for 1,000, Getform Basic is $19/month for 1,000. The spread for essentially the same job is wide — it pays to look at the table before defaulting to the best-known name.
Still comparing? Start with splitforms free — 500 submissions/month, and you'll have a working form in under five minutes to benchmark everything else against.
Related: best free form backends, top form-to-email services, splitforms pricing, and the full comparison matrix.