Framer Form Not Sending? 9 Fixes for Submissions That Never Arrive
Framer form not sending or submissions not arriving? Work through 9 fixes: publishing, Send To settings, validation, spam filters, webhooks and field names.
Dong Trinh
Lead Architect at FramerSend
A Framer form that looks fine on the canvas but never delivers is one of the most common support questions we see. The visitor clicks Submit, sometimes even sees a success state, and nothing arrives in the inbox, the sheet or the CRM. The good news: the cause is almost always one of a short list of settings, and you can work through them in about ten minutes.
This guide covers native Framer forms (the Form component with its own Send To settings). Work through the fixes in order. The first few catch most cases.
Before you start: find where it breaks
A submission can fail in three places, and each one needs a different fix:
- In the browser. The form never submits at all. Usually validation, a required field, or a custom component that never fills its value.
- Between Framer and the destination. The form submits, but the email, webhook or integration does not accept it.
- Inside the destination. The data arrives but lands somewhere you are not looking: a spam folder, a different list, a filtered view or an unmapped field.
Open your published site, open your browser's developer tools on the Network tab, and submit a test entry. If no request appears, the problem is in the browser (fixes 2, 3 and 8). If a request appears and returns an error, look at fixes 4 to 7. If everything succeeds, check the destination itself (fix 5 and fix 9).
Fix 1: Test on the published site, not the canvas
The Framer canvas and preview are for design. Submission and integration behaviour can differ there, so always test on the published URL (your custom domain or the framer.website address) after you click Publish.
Two related traps:
- Changes are not live until you publish again. If you edited the form's Send To settings, re-publish and hard-refresh the live page before testing.
- You may be testing an old page. If the site has several pages with forms, make sure the one you are submitting is the one you configured. Duplicated forms keep their own settings.
Fix 2: Check that a Send To destination is actually set
Select the Form component and look at its Send To settings in the right panel. A form with no destination (or a half-finished one) can look and behave normally for the visitor while sending nothing anywhere.
Check that:
- A destination is selected, not just the default state of the component.
- Any account you linked (for example a Google account for Sheets, or a marketing tool) is still connected. Revoked or expired authorisations are a common silent failure after a password change or an employee leaving.
- If you use a webhook, the URL is complete, starts with https:// and has no stray spaces from copy-pasting.
Destination options and their exact names vary by Framer plan and change over time, so if a setting described here looks different in your project, check Framer's current help pages for forms.
Fix 3: Required fields and browser validation
If the button seems to do nothing, the browser is probably blocking the submit:
- A field marked Required is empty, sometimes one that is hidden on smaller breakpoints or scrolled out of view.
- An Email input contains something the browser does not consider a valid address.
- A field has a pattern, minimum length or number range the test value does not meet.
Browsers usually show a small tooltip next to the first invalid field, but custom styling can make it easy to miss. Test on desktop and mobile breakpoints, and fill every field the way a real visitor would.
Fix 4: Spam protection and hidden honeypot fields
Framer forms include hidden inputs that real visitors never see. Bots that fill every input they find get caught by them, and those submissions are dropped as spam.
Real submissions can occasionally trip this too. Check:
- Autofill and browser extensions. Some password managers and form-filling extensions fill fields they should not, including hidden ones. Test once in a private window with extensions disabled.
- Scripts that touch every input. If you added custom code that pre-fills inputs (for example UTM capture), make sure it only writes to the fields you meant.
- Repeated rapid tests. Submitting the same data many times in a row from one browser looks a lot like a bot. Space your tests out and vary the values.
Fix 5: Email destinations and spam folders
If Framer is emailing submissions to you, the form may be working perfectly and the email simply is not where you expect it:
- Search your spam, junk and promotions folders, and any mail rules that auto-archive.
- Check that the recipient address in the form settings is spelled correctly and is one you can actually receive at.
- Company mail filters (Google Workspace and Microsoft 365 admin policies) sometimes quarantine automated mail before it reaches your inbox. Ask your admin to check the quarantine.
- Check your Framer plan's form and email notification limits on Framer's pricing or help pages. If you have hit a plan limit, upgrading or switching destination is the fix, not debugging the form.
Fix 6: Webhooks must return a 2xx response
When a form sends to a webhook, Framer's servers POST the submission to your URL and expect a successful 2xx status code back. Anything else counts as a failure:
- 4xx usually means the endpoint rejected the request: wrong URL, missing auth, a signature check that fails, or validation in your own code.
- 5xx means your endpoint crashed or a service behind it failed.
- Timeouts happen when the endpoint does slow work (calling another API, sending an email) before it responds. Respond quickly, then do the heavy work afterwards.
- Redirects (301/302) from http to https, or from a non-www to a www domain, can break delivery. Paste the final URL.
If your endpoint verifies a signature or shared secret, check the secret in Framer matches the one your code uses.
CORS is not the problem here. A Send To webhook is called from Framer's servers, not from the visitor's browser, so CORS headers on your endpoint do not affect it. CORS only matters if you write custom code that calls an API directly from the page.
To see exactly what your endpoint receives, point the form at a request inspector temporarily, or use a service that logs every request and its response (FramerSend does this, see below).
Fix 7: Field names and mapping
Every input in a Framer form has a Name. That name is the key your destination receives. Problems here do not stop the submission, but the data looks missing:
- Default names like "Input" or duplicated names overwrite each other, so only one value survives.
- Renamed fields break mapping in the destination. If a sheet column or CRM property was mapped to "email" and you renamed the field to "Email", the value no longer lands in that column.
- Required destination fields. Many CRMs and email tools reject a contact without a valid email address. Make sure the field that holds the email is clearly named (email is the safest choice) and is required in the form.
Use short, lowercase, unique names: email, first_name, company, message. They map cleanly almost everywhere.
Fix 8: Custom code components inside the form
Framer forms collect values from the inputs inside the Form component. A custom code component (a date picker, phone input, rating or signature pad) only contributes to the submission if it renders a real HTML input with a name attribute, often a hidden input that holds the value.
If a component draws its own UI but never writes a named input into the form, its value is silently left out. Check:
- The component is placed inside the Form component, not next to it.
- Inspect the published page and confirm there is an input with the expected name inside the form element.
- The component writes its value into that input before the visitor submits.
The FramerSend field plugins (phone input, signature, star rating, date range and more) are built this way, so their values arrive as normal named fields.
Fix 9: Rate limits and plan limits
If the form worked yesterday and stopped today, think about limits before you debug code:
- Your Framer plan. Check whether your plan includes form submissions or the destination you chose, and whether there is a monthly cap.
- The destination's API. CRMs and email tools rate-limit and sometimes reject bursts. A launch day spike can cause a few failures even when the setup is correct.
- Your webhook host. Free tiers of serverless platforms and automation tools often cap requests or pause after a quota.
The fix depends on which limit you hit, so find the error message first. A log of each submission and its response is the fastest way to do that.
How FramerSend helps you see failed submissions
Most of the fixes above are hard because a native form gives you very little feedback. FramerSend sits between the form and your tools: you paste its Submit URL into your Framer form's webhook setting, and it forwards each submission to the destination you picked (any of the 100+ connectors, or your own webhook).
What it adds for debugging:
- A submission log. Every submission is listed under Logs in the dashboard with its status and the payload FramerSend received. Failed ones show the destination's actual error, for example "Webhook returned HTTP 500" followed by the start of the response body, so you know whether the problem is the form, the mapping or the tool.
- One-click retry. Fix the cause (a wrong API key, a missing list, a crashed endpoint), then press Retry on the failed entry. FramerSend re-sends the stored payload and marks the entry as successful when it goes through.
- Failure alert emails. When a sync fails, the account owner gets an email naming the form, the destination and the error. Alerts are throttled to one per form every 15 minutes, and they are skipped for visitor mistakes such as an invalid email address, so a typo does not page you.
- A Test button for connections. Test Connection checks your credentials against the destination's API using read-only calls, so it never creates a test contact. For a webhook connection it checks that the URL is public and reachable in principle; nothing is sent until the first real submission.
- Clear error responses. If the Submit URL itself is wrong, FramerSend answers with a specific error instead of failing silently: "Form not found" for a mistyped Form ID, "Domain not activated" when a paid plan has not added your domain yet, and "Too many requests" if a single IP floods the form.
- Safe defaults for webhooks. Each outbound call has a 10 second timeout, so one slow endpoint cannot hang a submission, and you can add a signing secret so your endpoint can verify each request came from FramerSend.
Setup takes a few minutes: create a connection, create a form and map its fields, then paste the Submit URL into Framer. The docs walk through each step, and field mapping covers renaming Framer field names to the property names your CRM expects.
Quick checklist
- Published and re-published after the last change, tested on the live URL.
- A Send To destination is set and its account is still connected.
- Every required field filled, valid email, tested on mobile.
- Tested in a private window without autofill extensions.
- Spam folder and mail quarantine checked.
- Webhook returns 2xx quickly, final https URL, matching secret.
- Unique, lowercase field names that match the destination's mapping.
- Custom components inside the form, rendering a named input.
- No plan, API or hosting limit reached.
Frequently asked questions
Why does my Framer form say it was sent but nothing arrives?
The form can submit successfully in the browser while the destination fails or files the data somewhere else. Check the Send To destination is still connected, look in spam and quarantine folders for email, confirm a webhook returns a 2xx status, and check that field names still match the destination's mapping.
Do Framer form submissions work in preview?
Test on the published site instead. Submission and integration behaviour on the canvas and in preview can differ from the live site, and settings changes only take effect after you publish again.
Do I need CORS headers on my webhook for a Framer form?
No. A Send To webhook is called from Framer's servers, not from the visitor's browser, so CORS does not apply. Your endpoint just needs to accept a POST and return a 2xx status quickly.
Why is a field missing from my Framer form submissions?
Each input is sent under its Name. Duplicate or renamed names overwrite each other or stop matching the destination, and custom code components only send a value if they render a named input inside the form.
How can I see why a Framer form submission failed?
Native forms show little detail. If you route the form through FramerSend, every submission is logged with the destination's error message, you can retry failed entries after fixing the cause, and the account owner gets an alert email when a sync fails.
Connect Framer to 100+ CRMs in 60 seconds
14-day free trial, no card needed. Copy your Submit URL and paste straight into Framer.
Related Articles
How to Connect Framer Forms to Any CRM in 2026 (No Code & No Zapier)
A complete step-by-step tutorial on routing native Framer form submissions directly into Klaviyo, HubSpot, Mailchimp, or Salesforce in under 60 seconds.
How to Accept File Uploads in Framer Forms & Store in AWS S3 / Google Drive
Learn how to accept PDF resumes, mockups, and client attachments on native Framer forms and stream them directly into private AWS S3 or Google Drive storage.
Why You Should Stop Using Zapier for Framer Forms (And Save $320/Year)
A comprehensive cost and architecture analysis showing why direct API connectors outperform Zapier for Framer form handling in cost, latency, and reliability.