SAVEFORM

Integrate · Last updated May 16, 2026

WordPress integration

SaveForm works on WordPress with no plugin to install. Because a SaveForm form is just an HTML <form> that POSTs to your endpoint, you paste it into a Custom HTML block and submissions start landing in your dashboard. No JavaScript, no build step, nothing to keep updated.

AI assistant prompt

Wording targets native HTML forms — action URL, POST, hidden helpers like _honey / _redirect / _emailTo, and swapping in your real form ID.

Help me integrate SaveForm.io (https://www.saveform.io) into my site with a plain HTML form (no SPA, no mandatory JavaScript).

Please:
1. Ask me which visible fields I need (names matching what I want in the dashboard, input types like email/tel/date, required vs optional, textarea vs input, selects, radios, validation attributes).
2. Output a complete, accessible <form>: action="https://saveform.io/api/submit/YOUR_FORM_ID", method="POST", with meaningful labels and suitable input types.
3. Tell me explicitly to replace YOUR_FORM_ID with my real form ID from SaveForm → Dashboard → Forms (copy the form ID). Without my actual ID in the URL, submissions will not reach my workspace.
4. Mention optional hidden <input>s for SaveForm behaviour: spam honeypot, thank-you redirects, notification routing — wired as normal named fields.
5. Explain that native HTML POST expects the browser-driven flow (redirect / success-page); if I need JSON in JS, steer me to fetch instead.
6. Use this doc when helpful: https://www.saveform.io/docs/html-integration

SaveForm control fields (names starting with _): pass them as normal keys in the JSON or form body when useful:
• _honey — honeypot for spam filtering: https://www.saveform.io/docs/spam-protection
• _redirect and _redirect_mode — thank-you URL and whether to show SaveForm's success page first vs redirect immediately: https://www.saveform.io/docs/custom-redirects
• _emailTo — optional per-submit override for where the notification email is sent: https://www.saveform.io/docs/email-notifications
• Submitter auto-reply (acknowledgement email) is configured on the form in the dashboard with {{field}} placeholders, not ad-hoc payload fields: https://www.saveform.io/docs/auto-reply

Which WordPress?

The right path depends on how locked-down your install is. The Custom HTML block works on the overwhelming majority of sites — the only ones it doesn't cover are the cheapest WordPress.com tiers, which strip custom markup.

Your setupRecommended path
Self-hosted (WordPress.org)Full control. Use the Custom HTML block or drop the form into a theme template.
WordPress.com Business / CommercePlugins and custom code are allowed — the Custom HTML block works as-is.
WordPress.com Free / Personal / PremiumThese plans strip raw HTML and scripts. The plain <form action> (no JavaScript) survives on most templates; if it's removed, you'll need a Business plan or a self-hosted install.

Custom HTML block (recommended)

The block editor (Gutenberg) ships a Custom HTML block that renders raw markup exactly as written. This is the fastest way in.

  1. Edit the page or post and click the + to add a block.
  2. Search for Custom HTML and add it.
  3. Paste the form snippet below, swapping YOUR_FORM_ID for the ID from your dashboard.
  4. Click Preview on the block to confirm it renders, then publish.
HTMLcustom-html-block.html
<form action="https://saveform.io/api/submit/YOUR_FORM_ID" method="POST">
  <label>Name
    <input type="text" name="name" required />
  </label>
  <label>Email
    <input type="email" name="email" required />
  </label>
  <label>Message
    <textarea name="message" required></textarea>
  </label>

  <!-- Spam honeypot — hidden from real users, see spam-protection docs -->
  <input type="text" name="_honey" style="display:none" tabindex="-1" autocomplete="off" />

  <button type="submit">Send</button>
</form>
Optional SaveForm control fields use normal payload keys: _honey (spam honeypot), _redirect / _redirect_mode (redirect after submit), _emailTo (notification recipient). Submitter replies use dashboard auto-reply. Supported fields →

Classic editor

Still on the classic editor (or the Classic Editor plugin)? Switch the editor from the Visual tab to the Text tab and paste the same <form> markup. The Text tab preserves raw HTML; the Visual tab will try to reformat it, so paste while Text is active.

Theme template (for developers)

If you maintain the theme, the form is plain markup you can drop into any PHP template — page.php, a block pattern, or a template part. Use a child theme so updates to the parent theme don't overwrite it.

PHPtemplate-part.php
<form action="https://saveform.io/api/submit/<?php echo esc_attr( 'YOUR_FORM_ID' ); ?>" method="POST">
  <input type="text"  name="name"    required />
  <input type="email" name="email"   required />
  <textarea           name="message" required></textarea>

  <!-- Send visitors to a thank-you page on your own site -->
  <input type="hidden" name="_redirect" value="<?php echo esc_url( home_url( '/thank-you/' ) ); ?>" />

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

The _redirect field is optional — see custom redirects for the full behaviour. Every other supported field works the same way it does on a static site.

Allow your domain

If you've restricted the form to specific domains in its settings, add your WordPress site's domain (for example example.com) to the allowed list — otherwise the submit endpoint rejects the request as a disallowed origin. Subdomains like www.example.com are matched automatically. Forms with no domain restriction accept submissions from anywhere.

Troubleshooting

SymptomFix
The form markup disappears after savingYour WordPress.com plan is stripping raw HTML. Upgrade to Business, move to a self-hosted install, or confirm you pasted into a Custom HTML block (not a Paragraph block).
Submissions return “Origin not allowed”Add your site's domain to the form's allowed domains, or clear the restriction.
Nothing shows up in the dashboardDouble-check YOUR_FORM_ID in the action URL matches the ID in your dashboard, and that the form is active.
A page builder reformats the HTMLElementor, Divi and similar builders have their own HTML/embed widget — paste the snippet there rather than into a rich-text element.
Add a form to WordPress with SaveForm | SaveForm.io