# How it works

> What happens between your visitor pressing Send and the email arriving in your inbox.

Source: https://docs.formclick.io/html-forms/how-it-works

A submission takes the same path whether it comes from a plain HTML post, `formclick.min.js` or your own `fetch` call.

_Diagram: a visitor submits the HTML form → Formclick validates the access key, checks for spam and saves the submission → an email notification, a dashboard entry and integrations follow._

1. **Receive.** Formclick accepts `application/x-www-form-urlencoded`, `multipart/form-data` and `application/json` bodies at `https://api.formclick.io/submit`.
2. **Validate.** The access key is checked, the honeypot field is inspected and empty submissions are rejected.
3. **Protect.** Per-IP rate limits and duplicate detection run, then the content is scored for spam.
4. **Store.** The submission is saved to your dashboard. Suspected spam goes to the Spam tab instead of your inbox.
5. **Notify.** Your notification email and, if enabled, the autoresponder are queued and sent within seconds.
6. **Forward.** Integrations and webhooks run in the background, with automatic retries.
7. **Respond.** The visitor gets a confirmation page, a JSON response, or is redirected to your thank-you page.

## Responses depend on how you submit

| Submitted by | Formclick responds with |
| --- | --- |
| Plain HTML form (browser post) | A hosted confirmation page with a link back to your site, or a `302` redirect if one is set. |
| `formclick.min.js` | JSON. The script shows your success message inline or follows the redirect. |
| `fetch` / Axios / cURL with JSON | JSON: `{ "success": true, "message": "…" }`, plus `redirect_url` when a redirect applies. |

> **Note:** Notifications and integrations never slow down the response. The submission is saved first, so a slow third-party service cannot lose it.
