Skip to main content
You paste a plain HTML form into the block, and the visitor’s browser posts it to the endpoint like any HTML form.

Prerequisites

Before you start, you need:
  • A formcarry account. Sign up is free.
  • A form in the dashboard. Its endpoint is on the form’s Setup page. The examples use https://formcarry.com/s/AbC123xyz; put yours in its place.

1. Add a Custom HTML block

In the block editor, click the Block Inserter icon and choose Custom HTML. Typing /html in a new paragraph block adds one too.

2. Paste the form into the block

Click Edit HTML and paste a form whose action is your endpoint and whose method is POST:
The preview to the right of the code shows the form. Set method="POST" rather than leaving the default, otherwise the browser sends a GET and formcarry answers with a page that says GET is not allowed. The Quickstart has the rest.

3. Save the page as an Administrator or Editor

Press Update signed in as an Administrator or Editor rather than as a user without the unfiltered_html capability, otherwise WordPress removes the form on save. It runs the block through wp_kses() for those users, and form is not among the tags it allows by default. On a single site, Administrators and Editors have the capability; on a multisite, only Super Admins do.
On WordPress.com, the form, input and textarea tags need a paid plan with hosting features activated; the free plan filters them out.

Field names

The name of each input in the HTML you pasted is the field name formcarry stores; WordPress adds none and renames none. Give every field a name rather than an id alone, otherwise the browser leaves it out of the request. Name the visitor’s address field email rather than contact or your address, otherwise replying to the notification email goes nowhere and the auto response is not sent. To collect more than an address and a message, add fields with a name each:
The submission arrives with name, email, topic and message, and topic holds the value of the chosen option.

After the visitor submits

The browser posts the form itself, so the visitor lands on formcarry’s thank you page, or on the form’s redirect URL if you set one in the dashboard. To send the visitor to a page on your site instead, set the form’s thank you URL in the dashboard, or, on paid plans, add a hidden _next input to the form:
_next applies only when the form’s thank you URL in the dashboard is empty, otherwise the dashboard URL wins.

Files

A file input works as in any HTML form. To accept one, set enctype="multipart/form-data" on the form tag:
Files are stored on paid plans; on the free plan the rest of the submission is stored without them. See What every form needs.

Spam blocker

The block adds no spam protection of its own. For a honeypot, add a hidden text input named _gotcha inside the form and leave it empty:
A submission that fills it is marked as spam. For a challenge, paste the vendor’s script tag and widget div from the JavaScript page into the same block, and paste the secret key into the form’s settings under Form Security. With reCAPTCHA v2:
The widget adds a field named g-recaptcha-response to the form, so the browser sends it with the rest. For hCaptcha and Turnstile, take the script and widget class from the table on the JavaScript page; reCAPTCHA v3 has no widget and needs the script from the same page. If you run WordPress on your own machine, add localhost to the challenge’s allowed domains while you test.

Test it

Open the published page on your site, fill the form in and submit it once. The submission is on the form’s page in the dashboard, and the notification email arrives at your account’s address. Wait 15 seconds before a second test from the same address, otherwise formcarry refuses it.

Form plugins

WPForms, Gravity Forms, Ninja Forms, Fluent Forms and Formidable Forms post to a custom URL only through a paid add on or a paid license, so this page does not cover them. The Elementor Pro form widget lists Webhook among its form actions; this page does not cover it either.

What’s next

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