Formpost

Framework guides

HTML

The baseline integration — no JavaScript involved.

A plain form post works everywhere, including for visitors with JavaScript disabled. After a successful submission the browser is redirected — set a redirect field, or configure one in the form settings, to land visitors on your own thank-you page.

contact.html
<form id="contact" action="https://api.formpost.ai/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE">

  <input type="text" name="name" placeholder="Your name" required>
  <input type="email" name="email" placeholder="Your email" required>
  <textarea name="message" placeholder="Your message" required></textarea>

  <!-- Spam trap: real people never see this field -->
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">

  <button type="submit">Send message</button>
</form>

Sending visitors to your own page

redirect
<input type="hidden" name="redirect" value="https://example.com/thank-you">

Submitting without leaving the page

contact.js
const form = document.querySelector("#contact");

form.addEventListener("submit", async (event) => {
  event.preventDefault();

  const response = await fetch("https://api.formpost.ai/submit", {
    method: "POST",
    headers: { "Content-Type": "application/json", Accept: "application/json" },
    // fromEntries keeps only the last value of a repeated field name, and
    // cannot carry files. Post the FormData itself if you need either.
    body: JSON.stringify({
      access_key: "YOUR_ACCESS_KEY_HERE",
      ...Object.fromEntries(new FormData(form)),
    }),
  });

  const result = await response.json();
  if (result.success) form.reset();
  // On failure result.message says why — surface it in your own UI.
});