Skip to main content
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 is free.
  • An HTML page you can edit.
  • Basic Javascript knowledge (optional).

1. Create a form

In the dashboard, click Create Form and give it a name (the name is only for you).
Notification emails go to your account’s address until you change the recipients.

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) Set the endpoint as the form’s action, set method="POST", and give every field a name:
A field without a name won’t be sent by the browser and will not reach formcarry.
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.

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:
A stored submission answers with:
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

Stuck? Write to help@formcarry.com. Include the form id.