Frequently asked questions

How do I send an HTML form to email without PHP or a backend?

Point the form at a form backend. Set the form’s action to https://api.formdoc.dev/v1/submit, use method="POST", and add your FormDoc access key as a hidden field. FormDoc receives each submission, checks it for spam and emails it to you, so your website needs no PHP, server or backend code. See getting started.

Why isn’t the form on my AI-built website sending emails?

Because nothing is receiving it. AI website builders and coding assistants are good at writing the form you see, but a form also needs a server to receive the data and send the email, and a static or AI-generated page usually has none. Point the form’s action at FormDoc and add your access key, and the same form starts delivering submissions to your inbox.

Does FormDoc work with any website?

Yes, if you can add an HTML form to the page. That includes static site generators such as vagejs, Astro, Hugo, Eleventy and Jekyll, frameworks such as Next.js and SvelteKit, a CMS or site builder that lets you add custom HTML, hand-written pages and sites generated with AI. FormDoc doesn’t care how the page was made: it only receives the form post.

Is it only for contact forms?

No. Any form that sends text fields works: contact, signup, feedback, quote requests, bookings, waiting lists, surveys or job enquiries. Each field’s name becomes its label in your email, so use names that make sense to you, such as company or budget.

Is FormDoc free?

Yes. The Free plan includes unlimited forms and 250 submissions a month, with email notifications, spam protection and a custom thank-you page. You don’t need a credit card. See pricing for the paid plans.

Do I need an account?

Not for your first form. Enter your email address, confirm it, and you get an access key. If you later sign in with the same email address, your forms are added to your account automatically.

My access key is in my website’s HTML. Is that safe?

Yes. The access key is public by design. It only lets people send submissions to your form; it can’t be used to read submissions or change settings. If someone misuses it, you can generate a new key from the dashboard (the old one stops working straight away).

How does FormDoc stop spam?

FormDoc uses layers, starting with ones your visitors never notice. Every form can include a hidden botcheck field that people never see: bots that fill it in are quietly stored as spam and you’re not emailed. Each submission is also scored for common spam signs, such as too many links or a disposable email address, and rate limits stop floods from a single visitor. For extra protection you can turn on Cloudflare Turnstile or hCaptcha (and reCAPTCHA on paid plans).

Do I need a captcha on my form?

Usually not. For most sites the hidden honeypot field, spam scoring and rate limits are enough, and visitors don’t have to solve anything. Add Turnstile or hCaptcha only if spam still gets through: every extra step for visitors means fewer real messages.

A mailto: link only opens the visitor’s own email app, if they have one set up, and many people leave rather than send. It also can’t stop spam, send people to a thank-you page or keep a record of submissions. A form backend sends the message from your page directly.

Where is my data stored?

Submissions are stored in a database in Mumbai, India (ap-south-1), and every submission is encrypted before it’s saved. Free plan submissions are kept for 30 days, then deleted automatically.

Can I send visitors to my own thank-you page?

Yes. Add a hidden field named redirect with the full address of your page, or set a redirect in the form’s settings. Without one, visitors see a hosted thank-you page with a link back to your site.

Does it work with JavaScript and frameworks?

Yes. A plain HTML form works without any JavaScript. If you prefer, send the form with fetch and Accept: application/json to get a JSON response instead of a redirect. See the docs.

Why is my HTML form not sending email?

Check these four things first:

  1. The form uses method="POST" and its action is https://api.formdoc.dev/v1/submit.
  2. The hidden access_key field has your key, starting with fd_.
  3. You confirmed your email address. Until you do, submissions are refused with key_unverified.
  4. Every input has a name attribute. Fields without a name aren’t sent.

If it still doesn’t work, contact us and include the error code you see.

What happens if I reach my monthly limit?

We email you at 80% and 100%. After the limit we accept 10% extra, then pause new submissions until the next month. Visitors see a message explaining the form can’t accept messages right now.