Point any HTML form at one endpoint. 500 free submissions — no card, no time limit — and unlimited forms.
Create free accountWhy Framer forms break
A Framer form has three separate legs: the Form component itself, the destination you configure for it (a send-to email address and/or a webhook), and the published site that visitors actually reach. Each leg can fail on its own while the other two look fine. The form can render perfectly in the canvas while submissions never leave the editor, the destination can be unset so entries have nowhere to go, and edits you make to the form do not reach visitors until you republish the site.
The fastest way to split the problem in two: submit a test form on the published URL, then check whether the entry arrived at the destination you configured in the Form component's settings. If it arrived, the form works and only the email leg is broken (fix 4). If it did not, the submission never left the page, and the fixes below are ordered to find out why.
Quick checklist
- You tested on the published URL, not the canvas preview.
- The send-to email address (and webhook, if used) is set in the Form component's settings.
- You republished the site after the last edit to the form.
- The destination inbox's spam/junk folder is empty of your test entry.
- Every required field is visible and has a unique name.
- You have not hit your Framer plan's submission allowance.
- If the form is a custom code embed, its action URL is correct and the method is POST.
- The browser console shows no errors when you submit.
Eight fixes, in order
1. Set the send-to email or webhook in the Form component settings
Select the Form component on the page and open its settings panel. The destination — the email address that receives submissions, and a webhook URL if you use one — is configured there, not on the page and not in a global site setting. If the field is empty, every submission the form receives has nowhere to go: the form validates, the button shows its success state, and the entry is silently dropped. Set the address of an inbox you actually read, save, and republish (fix 2), then submit a test from the live URL.
If you configured a webhook, confirm the endpoint is live and accepts POST requests. A webhook that 404s or rejects the request drops the submission the same way an empty email field does. A quick way to prove the endpoint is healthy is to send it a test request from the form action tester before you trust it with real traffic.
2. Republish the site after editing the form
Edits made in the editor — a new send-to address, a changed field, a moved component — do not reach visitors until you publish again. The published site keeps serving the last published version, so a form whose settings you just fixed will keep behaving like the old one until you republish. This is the most common "I fixed it and it still doesn't work" case in Framer: the fix is real, it just never shipped.
After publishing, retest on the live URL, not in the editor. If the form works immediately after publishing, this was the whole problem. If it still fails, the destination, the plan limit, or the form's fields are the next suspects.
3. Test on the published site, not the canvas preview
Framer form submissions only work on the published site. In the canvas preview the form renders and even validates, but submissions made there do not reach your send-to address or webhook. A form that "works" in the editor and fails on the live site — or a test that never arrives because it was made in the preview — is the preview-versus-publish boundary doing exactly what it is designed to do. The full diagnosis, including how to tell the two apart, is in form works in preview but not live.
Make it a habit: every form test happens on the published URL, in a normal browser window, with the destination inbox open. That single habit eliminates the most common false alarm in Framer form debugging.
4. Check the spam folder and the destination inbox
If the submission arrived at Framer but no email reached you, the form is fine and the email leg is broken. Check the destination inbox's spam/junk folder first — notification emails from form platforms are a regular spam-filter target, especially on brand-new domains. Also confirm the destination address is an inbox you actually read; an old address, a departed teammate's mailbox, or a shared inbox nobody monitors looks identical to a broken form from the outside.
If the email is consistently landing in spam, the fix is on the deliverability side: sender authentication, a clean sending domain, and warm-up. The why contact form emails go to spam guide covers the authentication setup that gets notification mail into the primary inbox. If email delivery stays unreliable on your setup, fix 8 below removes email from the critical path entirely by storing every accepted submission in a dashboard first.
5. Fix missing, hidden or duplicated required fields and input names
The browser will refuse to submit a form whose required field is missing, empty, or invisible — and Framer's canvas makes it easy to create exactly that state. A required field tucked inside a hidden section, a tab that is not selected, or a component that only appears on interaction will block the submit with no visible error: the button is pressed, nothing happens. Make hidden required fields optional, or reveal them before the form can be submitted.
Field names matter just as much. If two inputs carry the same name, the second value overwrites the first in the submission; if a required field has no name at all, its value never reaches the destination. Audit the form's fields, give every input a unique, descriptive name (name, email, message), and remove the required flag from anything a visitor cannot see and fill in. The same failure mode, explained in depth, is covered in required attribute not working.
6. Check your Framer plan's submission limit
Framer's built-in form handling is tied to your plan, and plans carry a submission allowance. When the allowance is used up, new submissions stop being delivered while the form keeps looking normal — the visitor sees the success state, no warning appears anywhere, and entries simply stop arriving. Spam submissions count against the same allowance, so a bot flood can use it up well before your month is over.
The exact allowance depends on which Framer plan you are on and changes over time, so check the current figures on your Framer plan page rather than relying on a number from a blog post. If you are at or near the cap, the durable fix is fix 8: point the form at an external backend so Framer's counter leaves the submission path entirely.
7. For custom code embed forms, check the action URL and method
If your form is not a native Framer Form component but an HTML form pasted in through a code embed, Framer's settings panel is not in the picture at all — the browser posts the form wherever its action attribute points. A typo in that URL, an old endpoint that no longer exists, or a staging address left over from a previous project will drop every submission with no error on the page. Open the embed's code, read the action value, and confirm it is the endpoint you expect, over HTTPS.
The method matters just as much. Endpoints expect POST; a form set to GET sends its fields as URL query parameters, which most backends reject. Use the form action tester to send a test request to the action URL and see exactly what the endpoint responds with — a 404, a 405, or a 200 tells you immediately whether the URL, the method, or something else is at fault. The 405 Method Not Allowed guide covers the GET-versus-POST case in detail.
8. Use a form backend: embed an HTML form that posts to splitforms
If the form keeps breaking at Framer's plan limits, email reliability, or spam filtering, take Framer out of the submission path while keeping the design exactly as built. Drop Framer's Embed component into your page and paste a plain HTML form that posts directly to splitforms:
<form action="https://splitforms.com/api/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<input type="text" name="name" placeholder="Name" />
<input type="email" name="email" placeholder="Email" />
<textarea name="message" placeholder="Message"></textarea>
<button type="submit">Send</button>
</form>Replace YOUR_ACCESS_KEY with the key from your splitforms dashboard. The form posts directly to https://splitforms.com/api/submit — no JavaScript, no client library, no dependency on Framer's plan. Accepted submissions are stored in a searchable dashboard before the notification email is attempted, spam is filtered with a honeypot plus rule-based scoring, and notification email is included on every plan — free for 500 submissions total, then $5/month for 5,000 a month. The full walkthrough, including styling the embed to match your Framer page, is in how to add a contact form to Framer.
Other form problems and fixes
- Contact form not working
- HTML form not submitting
- Form submission canceled (form not connected)
- 405 Method Not Allowed
- 401 Unauthorized
- CORS error
- Form sends but no email arrives
- Emails land in spam
- WordPress form not sending
- Elementor form not sending
- Gravity Forms not sending
- WPForms not sending
- Ninja Forms not sending
- mailto: action not working
- Works in preview but not live
- Netlify form not working
- Webflow form not working
- Wix form not working
- Required attribute not working
- input type=number maxlength not working
- autocomplete="off" not working
- Form resubmission on refresh
- Duplicate form submissions
Still stuck? Test your endpoint with our free Form Action Tester or contact splitforms support.
FAQ
Why is my Framer form not sending email?
The most common causes, in order: the send-to email address was never set in the Form component's settings, the site was not republished after you edited the form, or the notification email landed in the spam folder. Open the Form component, confirm the destination address, republish the site, submit a test on the live URL, and check the spam folder of the destination inbox before assuming the form itself is broken.
Does a Framer form work in the canvas preview?
No. Framer form submissions only work on the published site. The canvas preview renders the form for design purposes, but submissions made there do not reach your send-to address or webhook. If a test submission works in the editor and fails on the live site — or the reverse — that is the preview-versus-publish boundary, not a form bug. See the guide to forms that work in preview but not live for the full diagnosis.
Where do Framer form submissions go?
To whatever destination you set in the Form component's settings: a send-to email address and/or a webhook URL. If no destination is configured, submissions have nowhere to go, which is why a form can look fully functional while silently dropping every entry. Check the settings panel on the selected Form component, and if you use a webhook, verify the endpoint accepts POST requests from your domain.
Can I use splitforms as the backend for a Framer form?
Yes. Drop Framer's Embed component into your page and paste a plain HTML form that posts to https://splitforms.com/api/submit with a hidden field carrying your access key. Submissions are stored in a searchable dashboard, filtered for spam, and emailed to you — with no dependency on Framer's plan limits. The step-by-step walkthrough is in the guide to adding a contact form to Framer.
Stop fighting plan caps and silent failures — embed a form that posts to https://splitforms.com/api/submit and every submission is stored, filtered, and emailed. Get a free access key.