FormRill
  1. Docs
  2. Troubleshooting

Submissions not arriving?

Work down this list. Start with the curl test at the bottom of the page if you want a fast answer: it tells you whether the problem is your form or your setup.

1. Check the dashboard first

Open your form in the dashboard. If the submission is in the inbox, it was stored and the problem is delivery: open the Delivery log to see each destination’s status and error, fix the cause, and press Retry. If it isn’t there, the request never got stored; keep reading.

2. The form action

The action must be your exact form URL, https://api.formrill.com/YOUR_FORM_ID/submit. A typo in the ID, a missing /submit or a leftover YOUR_FORM_ID returns 404 Form not found. Copy it from the Setup tab.

3. Method must be POST

Use method="POST". Without it the browser sends a GET, which the endpoint doesn’t accept.

4. Every field needs a name

Browsers only send inputs that have a name attribute, and FormRill stores whatever it receives. An input with only an id is silently left out. Name the email field email so Reply goes to the visitor.

5. The honeypot must stay empty

The botcheck checkbox must stay unchecked and hidden. If it has a value (other than false), the request is rejected with 422 Spam detected and the submission goes to your Spam folder instead of your inbox. Don’t pre-check it, don’t show it, and don’t reuse the name botcheck for a real field.

6. Domain whitelist

If you set allowed domains on the form, only requests whose Origin or Referer host matches one of them (or a subdomain) are accepted; others get 403. Check for www versus the bare domain, a staging URL, or localhost while testing. With a whitelist set, a request that sends neither header is refused too.

7. Check spam and junk folders

Notification emails come from our email provider, and some mailboxes file the first one as spam. Mark it as not spam, and add the sender to your contacts. Whatever happens to the email, the submission is in the dashboard.

8. Submitting with JavaScript

  • Send Accept: application/json to get JSON back. Without it, errors come back as plain text and success as an HTML page or a 303 redirect that fetch follows.
  • Send either FormData or a JSON body with Content-Type: application/json. A JSON body must be an object.
  • Bodies over 100 KB return 413.
  • CORS: the submit endpoint allows requests from any origin, so a CORS error in the console almost always hides a different problem, such as a wrong URL. Check the Network tab for the real status code.

9. File uploads aren’t supported yet

File uploads aren’t supported yet: a form that sends a file gets a clear error (415) and nothing is saved. If a form with a file input fails, remove the file field or ask for a link instead. See Reliability.

10. Test with curl

curl -i -X POST https://api.formrill.com/YOUR_FORM_ID/submit \
  -H 'Accept: application/json' \
  -d 'name=Test' -d 'email=you@example.com' -d 'message=Hello'
  • {"ok":true,"id":"s_…"}: stored. Check the dashboard; if it is there but no email arrived, look at the delivery log.
  • 404: wrong form ID or URL. 403: domain whitelist. 422: honeypot. 413: body too large. 415: the form sent a file.

If curl works but your page doesn’t, the difference is in your form markup: revisit steps 2 to 6. Full status codes are in the API reference, and the storage and retry model is on the reliability page.

Need a fresh, working form URL?

Free up to 500 submissions a month and unlimited forms. No server, no credit card.

Start free

Last updated