Troubleshooting
Email not received
Section titled “Email not received”Formkove sends notification emails instantly. If you don’t see one:
- Confirm the address: each notification recipient must click the link in the verification email before it receives anything. Check the recipient list in the form’s Settings.
- Wait a bit: delivery can take up to 2 minutes in rare cases
- Check Spam/Junk and Promotions, and mark the email as “not spam”
- AI spam filter: on AI-enabled forms, submissions classified as spam don’t trigger notifications. Check the submissions table with the spam filter.
- Unsubscribed or bouncing: a recipient who clicked Unsubscribe is removed from the form, so add and verify it again. Addresses that hard-bounced or marked an email as spam are suppressed; contact support with your form ID to lift it.
Email received but no data
Section titled “Email received but no data”Make sure every form field has a name attribute:
<!-- ✗ Missing name — data won't send --><input type="text" placeholder="Email">
<!-- ✓ Has name — data will send --><input type="text" name="email" placeholder="Email">CORS errors in JavaScript
Section titled “CORS errors in JavaScript”If you see a CORS error in the browser console when submitting via fetch:
Most likely cause: your site isn’t in the form’s Allowed Origins. Open the form’s Settings → Allowed Origins & Redirects and add the exact origin your page runs on, e.g. https://example.com (add http://localhost:4321 or similar while developing). A bare domain like example.com also covers its subdomains.
Second cause: the request is in HTML mode, so Formkove answers with a redirect. When submitting with JavaScript, send Accept: application/json so you always get JSON back:
// ✓ Correct — returns JSON, no redirectfetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify(data)});If you’re using the HTML form action attribute directly (not JavaScript), none of this applies. The browser follows the redirect naturally.
Form works locally but not on my hosted domain
Section titled “Form works locally but not on my hosted domain”Your production origin is probably missing from Allowed Origins. Add it (e.g. https://my-site.vercel.app or https://example.com) and try again. If you use ?redirect=, the redirect domain must be in the list too.
405 Method Not Allowed
Section titled “405 Method Not Allowed”This is usually a content-type mismatch or an incorrect request method. The API only accepts POST requests. If you are submitting via JavaScript and get a 405, make sure you are not using GET and that you set Content-Type: application/json to prevent redirects.
429 Rate Limited
Section titled “429 Rate Limited”Each IP can send 10 submissions per minute and 30 per hour to one form. The Retry-After header tells you how many seconds to wait. If you’re testing, add delays between submissions.
403 “Submission limit reached”
Section titled “403 “Submission limit reached””The workspace has used its monthly submissions. See What happens when I hit my submission limit?
410 “This form has been disabled”
Section titled “410 “This form has been disabled””The form was disabled after an abuse review. Contact [email protected] if you think this is a mistake.
“Form not found” error
Section titled ““Form not found” error”- Check that you’re using the correct Form ID from your Formkove dashboard
- Make sure there are no typos in the URL
- The Form ID goes in the URL path, not as a hidden field (when using the direct URL method)
Notifications not sending to Slack/Zapier
Section titled “Notifications not sending to Slack/Zapier”- Check the form’s Integrations → Delivery history for errors
- Make sure the workspace is on Pro or Agency and the connection is enabled
- Check the connection’s Routing rules, and whether AI marked the submission as spam
- Test with webhook.site to confirm Formkove is sending the payload
Still stuck? Check the FAQ for more common questions.