splitforms.com

HTML form action

HTML form action URL with no backend.

One attribute turns a static form into a working submission: point your form action at a free splitforms endpoint and every entry is stored, emailed, and spam-filtered — with no backend of your own.

  • 500 free / mo
  • No backend
  • POST any URL
An HTML form with its action attribute pointing to the splitforms endpoint

No backend

action + method="POST" is the whole integration — no PHP, SMTP, or server route.

Spam filtered

Honeypot, time-trap, and rate limits screen bots before your inbox.

Stored + emailed

Every submission is saved to your dashboard and emailed to you for free.

Working example

A complete HTML form action example.

This posts the submission to splitforms, where it is stored, emailed, filtered for spam, and — with the optional redirect field — sends the visitor to a thank-you page.

Get your free access key
index.html
<form action="https://splitforms.com/api/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
  <input type="hidden" name="redirect" value="https://yoursite.com/thank-you" />
  <input name="email" type="email" required />
  <textarea name="message" required></textarea>

  <!-- honeypot: must stay empty -->
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" />

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

Step by step

How to set up an HTML form action URL.

No server, no SMTP setup. These six steps are the same whether you paste the form into raw HTML, a React component, or a WordPress custom-HTML block.

Get a free access key

Sign up at splitforms.com/login and create a form. Your access key appears instantly — Free covers 500 submissions/month with no credit card required.

Set action and method on your form

Point action at "https://splitforms.com/api/submit" and set method="POST" — that pair is what turns a static HTML form into a working submission.

Add the access key as a hidden field

Add <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" /> inside the form so splitforms knows which form the submission belongs to.

Keep the honeypot field empty

Leave <input type="checkbox" name="botcheck" /> in the markup and hidden from view — it must stay empty for a submission to be treated as human.

Submit a test entry

Fill out the form and send it. The submission lands in your dashboard and your inbox within seconds — email notifications are free on every plan.

Optionally set a redirect

Add <input type="hidden" name="redirect" value="https://yoursite.com/thank-you" /> to send visitors to a thank-you page after they submit.

Attributes

What does the HTML form action attribute do?

The action URL is where the browser sends your form data — and a few attributes decide whether that POST arrives intact. Get these right and every submission routes cleanly to email, a webhook, or an API.

  • Use POST — it keeps fields in the request body and supports longer messages and files.
  • Point action at an absolute URL like https://splitforms.com/api/submit for a hosted backend.
  • Only inputs with a name attribute are included in the submitted payload.
A form POST routed from the action URL to email, webhooks, and your dashboard

File uploads

How do you add a file upload to a form action?

Add enctype="multipart/form-data" alongside action and method="POST" whenever the form includes a file input. splitforms accepts multipart submissions on every plan; storing the files themselves needs the paid Storage integration.

  • Set enctype="multipart/form-data" for any <input type="file">.
  • Multipart submissions are accepted on every plan.
  • Storage retains up to 5 files per submission at 5 MB each.
A form action posting a multipart file upload to splitforms

Cross-domain

Can a form action point to another domain?

Yes. A normal browser form submit can POST to an absolute URL on another domain, including the splitforms endpoint. CORS only becomes a concern when you intercept the submit with JavaScript and use fetch instead of a native form POST.

  • A native form POST works cross-origin with no CORS preflight.
  • CORS headers only come into play if you submit with fetch.
  • Add a hidden redirect field for a thank-you page with no JavaScript.
A form action posting across domains to the splitforms endpoint

How SplitForms works

From form to workflow in 3 simple steps.

Connect your form, collect every submission, and send data where it needs to go — without building backend infrastructure.

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

Connect your favorite tools and automate everything

SplitForms works with the destinations you route to and the platforms you build on — from Slack and Sheets to WordPress, Shopify, and Next.js.

Connect your SplitForms form to Slack, Google Sheets, Mailchimp, Zapier and more

Trusted by indie teams and agencies shipping forms worldwide

PETAL/COKRAFT.DELINEAR-XBUILD.DEVSTUDIO 71MERIDIANFRAME&CO

Testimonials

Loved by developers shipping at every scale.

40 quotes on record — from indie hacks to agency migrations.

FAQ

HTML form action questions.

View all FAQs
What does action do in an HTML form?

The action attribute tells the browser which URL should receive the form data when a visitor submits the form. If you set action to a hosted form backend endpoint like https://splitforms.com/api/submit, the form can work without your own server.

Should a contact form use GET or POST for its action?

Use POST. GET puts form fields into the URL query string and is appropriate for search and filters. POST sends fields in the request body and is the correct method attribute for contact forms, lead forms, file uploads, and anything that creates a record.

Can a form action point to another domain?

Yes. A normal browser form submit can POST to an absolute URL on another domain, including https://splitforms.com/api/submit. CORS only becomes a concern when you intercept the submit with JavaScript and use fetch or XMLHttpRequest instead of a native form POST.

What is the easiest action URL for a static website contact form?

Use a form-backend endpoint like https://splitforms.com/api/submit. Add your access key as a hidden field, keep method set to POST, and submissions are stored in a dashboard, emailed to you for free on every plan, and filtered for spam automatically.

What does enctype do, and when do I need multipart/form-data?

The enctype attribute controls how the browser encodes the request body. The default, application/x-www-form-urlencoded, works for text fields. Add enctype="multipart/form-data" when the form includes an <input type="file">, such as a resume or attachment upload — splitforms supports multipart submissions and, on paid plans with the Storage integration, stores up to 5 files per submission at 5 MB each.

How do I redirect a visitor after the form action submits?

Add a hidden field named redirect with the destination URL, for example <input type="hidden" name="redirect" value="https://yoursite.com/thank-you" />. splitforms sends the visitor there after a successful POST — no JavaScript required.

Can I set the email subject or reply-to address from the form action?

Yes. splitforms recognizes a few special hidden fields alongside access_key: subject sets the notification email's subject line, and replyto sets the address you can reply straight to. Both are optional and read from the same POST your form action already sends.

Does changing the form action break spam protection?

No — spam protection travels with the endpoint, not the markup around it. As long as the botcheck honeypot field is present and left empty, splitforms also runs a form_loaded_at time-trap, server-side content heuristics, and rate limiting (6 submissions/minute per IP) on every request that hits the action URL, regardless of how the surrounding page is built.

Simple pricing

Start free. Scale when you need more.

Choose a plan that fits your workflow — from a free form endpoint to full automations, exports, and higher submission limits.

Free

$0

Free forever

 
Best for testing

For side projects and indie devs.

  • 500 submissions / mo
  • Unlimited forms
  • Email notifications included
  • Honeypot spam filtering
  • Submissions dashboard
  • MCP setup stays free
  • No credit card required

3-Year

$59/ 36 months
was $99 · save 40% · new-user price

Pay $59. 3 years sorted.

  • 15,000 submissions / mo
  • Unlimited forms
  • Everything in Pro
  • Renews every 3 years
  • Long-term discount
  • Priority support included
  • Vote on the roadmap

No credit card required on Free • Cancel anytime