> ## Documentation Index
> Fetch the complete documentation index at: https://formcarry.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Formcarry collects form submissions in three steps.

Formcarry can collect submissions from any form that sends an HTTP POST (including an HTML page, a React app, a Webflow or Framer site, WordPress, or a site an AI tool built).

You create the form in the dashboard, point to formcarry endpoint, and send a test submission without running anything except the HTML on your side. You can connect AI coding tools over MCP too. It writes the form into your code and configures everything on the formcarry side, from the recipients to the spam blocker.

## Prerequisites

To get started, you need:

* A formcarry account. [Sign up](https://app.formcarry.com/register) is free.
* An HTML page you can edit.
* Basic Javascript knowledge (optional).

## 1. Create a form

In the [dashboard](https://app.formcarry.com), click Create Form and give it a name (the name is only for you).

<Note>
  Notification emails go to your account's address until you change the recipients.
</Note>

## 2. Point your form at the endpoint

Open the form's **Setup** tab and copy the unique endpoint URL.

(format: [https://formcarry.com/s/XXXXXXXX](https://formcarry.com/s/XXXXXXXX))

Set the endpoint as the form's `action`, set `method="POST"`, and give every field a `name`:

```html theme={null}
<form action="https://formcarry.com/s/AbC123xyz" method="POST">
  <input type="email" name="email">
  <textarea name="message"></textarea>
  <button type="submit">Send</button>
</form>
```

<Warning>
  A field without a `name` won't be sent by the browser and will not reach formcarry.
</Warning>

<Warning>
  If you leave the default for `method` instead of setting `method="POST"`, the browser sends a GET request; formcarry responds with a "GET is not allowed" page.
</Warning>

## 3. Send a test submission

Fill the form in on your page and submit it.

The visitor sees formcarry's thank you page. The submission appears on the form's page in the dashboard, and a notification email is sent to your inbox.

## Request format

* **Method:** `POST` only.
* **Content Type:** `application/x-www-form-urlencoded` (plain HTML forms), `multipart/form-data` (forms with a file field), or `application/json` (JavaScript).
* **Size Limit:** Up to 50 MB per request.
* **Rate Limit:** 1 submission per 15 seconds, per form, per IP address. Requests beyond that limit get a `429` with the message "Wait 15 seconds before making another request".

## From JavaScript

To get JSON back instead of the thank you page, send `Accept: application/json`:

```js theme={null}
const res = await fetch("https://formcarry.com/s/AbC123xyz", {
  method: "POST",
  headers: { "Accept": "application/json", "Content-Type": "application/json" },
  body: JSON.stringify({ email: "jane@example.com", message: "Hello" })
})
const data = await res.json()
```

A stored submission answers with:

```json theme={null}
{ "code": 200, "status": "success", "title": "Thank You!", "message": "We received your submission" }
```

A refused submission answers with the same shape, `status: "error"`, and a `message` that says why. Send the `Accept` header rather than relying on the content type, otherwise the response is the thank you page's HTML.

## What's next

* [How it works](/docs/how-it-works): what formcarry does with each submission, and the limits.
* [Email notifications](/docs/features/email-notifications): who gets the email, from which sender.
* [Spam protection](/docs/features/spam-protection): add reCAPTCHA before the first bot finds the form.

Stuck? Write to [help@formcarry.com](mailto:help@formcarry.com). Include the form id.


## Related topics

- [WordPress](/docs/builders/wordpress.md)
- [Squarespace](/docs/builders/squarespace.md)
- [Introduction](/docs/introduction.md)
