splitforms.com

Free contact form

Free contact form for your website. Copy, paste, get messages.

Updated · plan facts checked against /pricing

A website contact form needs a name, email and message field plus a backend to receive them. Paste the contact us form below, point it at splitforms, and every message is spam-checked, saved to your dashboard and emailed to you — free for 500 submissions in total, no credit card.

  • 500 free total
  • Email alerts free
  • No PHP or server
A free website contact form submitting to splitforms, no backend required

No backend required

No database, PHP mail script or SMTP password on your site. The contact form posts to one endpoint and splitforms does the rest.

Spam blocked, free

A hidden honeypot, a 2-second load-time check, content scoring and per-IP rate limits run on every free contact form. No CAPTCHA required.

500 submissions free, total

A real free tier, not a trial. Unlimited forms, 500 submissions in total with no time limit — it does not reset monthly.

Quick start

A complete contact us form, ready to paste.

Labelled, accessible fields with autocomplete hints, plus two hidden spam fields. The one-line script only stamps the page-load time. It POSTs to splitforms.com/api/submit with your access key. Replace YOUR_ACCESS_KEY and it works. Want a line-by-line explanation of the markup? See the HTML contact form code walkthrough. Prefer to drag fields instead of editing code? Use the custom contact form builder.

Get your free access key
contact-us.html
<form action="https://splitforms.com/api/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
  <!-- Optional: send people to your own thank-you page -->
  <!-- <input type="hidden" name="redirect" value="https://example.com/thanks" /> -->

  <label for="cf-name">Name</label>
  <input id="cf-name" type="text" name="name" autocomplete="name" required />

  <label for="cf-email">Email</label>
  <input id="cf-email" type="email" name="email" autocomplete="email" required />

  <label for="cf-phone">Phone (optional)</label>
  <input id="cf-phone" type="tel" name="phone" autocomplete="tel" />

  <label for="cf-topic">What is this about?</label>
  <select id="cf-topic" name="topic">
    <option>General question</option>
    <option>Sales</option>
    <option>Support</option>
    <option>Billing</option>
  </select>

  <label for="cf-message">Message</label>
  <textarea id="cf-message" name="message" rows="5" required></textarea>

  <!-- Spam protection: hidden honeypot + page-load timestamp -->
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off" />
  <input type="hidden" name="form_loaded_at" value="" />
  <script>document.currentScript.previousElementSibling.value = Date.now();</script>

  <button type="submit">Send message</button>
</form>

Fields

What should a contact us form include?

Three visible fields are required — name, email and message — and two optional ones earn their place on most business sites. Every name attribute becomes a column in your dashboard, so pick names you will want to read later.

Fieldname attributeRequiredWhy it is there
NamenameYesLets you greet the person by name in your reply. One full-name box keeps a short form short; split first and last name only if your CRM needs them.
EmailemailYesThe only way to answer. splitforms uses it as the Reply-To of the notification, so pressing Reply in your inbox writes straight back to the visitor.
PhonephoneNoUseful for trades and local services that call back. Keep it optional: many visitors would rather not hand over a number just to ask a question.
TopictopicNoA short dropdown (sales, support, billing, other) so you can sort messages in the dashboard. Do not name it subject — that name is reserved.
MessagemessageYesThe actual question. A textarea with 5 rows signals that a few sentences are welcome; a single-line input gets one-word messages.
HoneypotbotcheckHiddenInvisible checkbox. Bots that tick every box trip it and the submission is dropped without an error. Never shown to people.
Load timeform_loaded_atHiddenFilled with Date.now() when the page loads. Posts sent less than 2 seconds later (or more than 24 hours later) are treated as bots.

Need an attachment field for briefs or photos? Add <input type="file"> and enctype="multipart/form-data". Files are stored on paid plans only (up to 5 files of 5 MB each); on Free the text fields are saved and the files are dropped. See the contact form with file upload template.

After Send

Where do website contact form submissions go?

The browser posts the form to https://splitforms.com/api/submit. Nothing is sent from your own server, so there is no PHP mail script to configure and no SMTP password in your site's code.

  1. Spam checks run first. The honeypot, the load-time check, content scoring and a rate limit of 6 posts a minute (20 per 15 minutes) per visitor IP and form. Likely spam goes to a Spam tab you can review instead of your inbox.
  2. The message is saved. Accepted submissions are stored in your dashboard before any email is attempted, so a bounced or filtered notification never loses the lead.
  3. You get an email. Owner notification emails are included on every plan, Free too. Reply-To is the visitor's email field. Inbox placement still depends on your mail provider.
  4. The visitor sees a thank-you page. A hosted one by default, or your own page if you add a hidden redirect field. How the redirect field works.
  5. Optional routing on paid plans. Pro ($5/month) and Annual ($49/year) add signed webhooks, Slack, Google Sheets and other integrations, auto-replies to the visitor and CSV exports.

Free covers 500 submissions in total, not per month. When they are used, new posts are refused until you upgrade; saved messages stay in the dashboard.

Common mistakes

Why do contact form messages go missing?

Almost every "the form works but I never got the message" report comes down to one of these six.

  • An input without a name attribute. Browsers only send fields that have a name. An input with just an id looks fine on the page and arrives empty.
  • A visible field named subject, replyto or redirect. These names control the notification and the thank-you page, so their values are never stored as lead data. Use topic for a visible subject line.
  • A typo in the visitor's email. The message is still saved, but your reply bounces. Use type="email" so the browser catches obvious mistakes before Send.
  • A honeypot that is not hidden. If CSS fails to hide botcheck and a person ticks it, the message is dropped silently. Keep the inline display:none.
  • A real field used as a trap. website and url are not honeypot names here on purpose — people genuinely fill them in. Use botcheck or _gotcha for the trap.
  • Placeholders instead of labels. Placeholder text disappears as soon as someone types and is not read by every screen reader. Give each field a <label for>, as in the form above.

Still not arriving? Run the form through the spam test or read the spam-free contact form guide.

Setup

How to add a free contact form to any website.

Three steps, a few minutes including a test message. The same contact form drops into plain HTML, Next.js, React, Astro, Webflow, Carrd, WordPress, Framer, Squarespace and Wix. See the framework setup guides.

Sign up free, get an access key

Create a free account with your email address. Your access key appears in the dashboard straight away. No credit card.

Paste the contact us form into your page

Copy the form above into your Contact page: plain HTML, a React component, a Webflow embed or a WordPress Custom HTML block. Replace YOUR_ACCESS_KEY, then send yourself a test message.

Messages land in your dashboard and inbox

Each accepted message is saved to the dashboard, then emailed to you with Reply-To set to the visitor. Paid plans add Slack, Google Sheets, signed webhooks and other integrations.

Free plan

What's included in a free contact form?

Everything here is on the free tier — not a trial, not feature-gated, not a teaser of the paid plan. A real free contact form you can run a live site on indefinitely, with every submission stored in the dashboard and emailed to you.

  • 500 submissions total, across unlimited forms
  • Owner notification emails — free, not an add-on
  • A real dashboard to view, search, and filter submissions
  • Commercial use allowed on client and production sites
The splitforms dashboard storing free contact form submissions with spam filtered

Any platform

Does the free contact form work on Wix, Webflow, WordPress?

Yes — anywhere you can paste HTML. Webflow embed blocks, Carrd embeds, Framer code components, WordPress Custom HTML blocks, Squarespace code blocks, and Wix HTML embeds all take the same free contact form with no SDK or plugin. See the framework setup guides.

  • No SDK, no plugin, no platform-specific build
  • The same form everywhere you can paste HTML
  • Works in React, Next.js, Astro and static site generators
The free splitforms contact form embedded across Wix, Webflow, and WordPress

Why it's free

Is the free contact form actually free?

The free plan is a one-time allowance of 500 submissions, with no credit card, no trial timer and no gate on email notifications or spam filtering. Pro is $5/mo for 5,000 submissions only if a launch pushes you past free. Comparing options? See splitforms vs Formspree, vs Web3Forms, or every form-backend comparison.

  • 500 submissions total, one time — no trial timer
  • No credit card and no feature gates to start
  • Free forms show a small 'Powered by splitforms' line
Why the splitforms free contact form plan stays free until you spend it

How SplitForms works

What happens after someone submits your form?

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.

A SplitForms contact form submission launching straight to your inbox

Add your endpoint

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

HTML form pointing at a SplitForms submit endpoint

Receive submissions

We instantly capture and organize every submission in your inbox.

Submissions inbox with searchable leads and status pills

Route anywhere

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

Generic integration tiles for email, sheets, chat, CRM, automate, and webhook

No credit card required. Set up in under 60 seconds.

Connect & automate

Where can submissions go besides email?

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.

Connect your SplitForms form to Slack, Google Sheets, Mailchimp, Zapier and more
NewTake payments on your formsDeposits, bookings, order forms — submitters check out through Stripe and the money goes straight to your Stripe account. Included on every paid plan.See payment forms →Need time slots? Online booking →

Setup guides for the stacks you use

FAQ

Free contact form FAQ.

View all FAQs
What is a contact us form?

A contact us form is the form on a website's Contact page that lets a visitor send a message without opening their email app. A good one asks for a name, an email address and a message, optionally a phone number and a topic, and hides a spam trap. The form needs a backend to receive the post; with splitforms that backend is one URL in the form's action attribute.

What fields should a website contact form have?

Name, email and message are the required core. Phone (optional) helps businesses that call back, and a short topic dropdown helps you sort messages. Add two hidden fields for spam: a botcheck honeypot and a form_loaded_at timestamp. Avoid naming a visible field subject, replyto or redirect, because those names control the notification and are not saved as lead data.

Is splitforms really free?

Yes. The free plan covers 500 form submissions total with unlimited forms, with no credit card and no time limit. It is not a 14-day trial and it does not reset monthly. If you outgrow it, Pro is $5/month for 5,000 submissions a month or Annual is $49/year for 15,000 a month.

Do I need to sign up to use the free contact form?

You need one free account to get an access key, the value that goes in the hidden access_key field. Without a valid key, submissions are rejected so nobody else can use your form's inbox. Sign-up needs an email address and no credit card.

Where do free contact form submissions go?

Every accepted submission is saved in your splitforms dashboard first, then an owner notification email is sent to you on every plan, including Free. The email's Reply-To is the visitor's email field. Paid plans can also route submissions to signed webhooks, Slack, Google Sheets and other integrations.

Does the free contact form work on Wix, Webflow, WordPress, Squarespace, Carrd, and Framer?

Yes. Anywhere you can paste HTML — including Webflow embed blocks, Carrd embed elements, Framer code components, WordPress Custom HTML blocks, Squarespace code blocks, and Wix HTML embeds — the form works without modification. There is no SDK and no platform-specific build.

How is spam handled on the free plan?

Several layers, all included free. The hidden botcheck honeypot catches bots that fill every input. The form_loaded_at timestamp rejects posts sent less than 2 seconds after the page loaded. Server-side content scoring moves likely spam to a Spam tab, and each visitor IP is limited to 6 posts a minute per form. reCAPTCHA v2 or Cloudflare Turnstile can be added with your own keys, but neither is required.

Can I use the free contact form on commercial sites?

Yes. The free plan permits commercial use, including client sites and production landing pages. The limits are the 500-submission total and the small 'Powered by splitforms' line on Free forms.

What happens after I use the 500 free submissions?

Free is a one-time allowance and does not reset monthly. After it is used, new submissions are rejected until you upgrade to a paid plan. Existing submissions stay in your dashboard.

Is there a 'Powered by' attribution on the free plan?

Yes. Generated Free-plan form code includes a small visible 'Powered by splitforms' link. Paid plans (Pro and Annual) can remove it or replace it with custom branding.

Simple pricing

How much does splitforms cost?

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.

Free

$0— 500 submissions
 

No card, no time limit

Best for testing

For side projects and indie devs.

  • 500 free submissions
  • Unlimited forms
  • Email notifications included
  • Smart spam filtering
  • Submissions dashboard
  • Redirect after submit
  • MCP server included

Annual

$49/ year
About $4.08 per month, billed yearly
Best value

Every Pro feature with triple the volume — $0.27 per 1,000 at full use.

  • 15,000 submissions per month
  • Unlimited forms
  • Everything in Pro
  • File uploads with 5 GB storage
  • 3 team seats
  • Priority email support

No credit card required on Free • Cancel anytime • Full pricing and FAQ