View .md

MuxForms on plain HTML is a div with data-form-id plus embed.js from muxforms.com. Allow your site origin in the dashboard; the script fetches the schema and POSTs submissions—no PHP, Formspree, or custom backend on the host.

Docs

HTML

A static `contact.html` only needs your form UUID, the embed snippet, and the production origin on the allowlist.

HTML checklist

StepAction
1Copy FORM_UUID from dashboard
2Allow https://your-domain.com
3Paste div + script before </body>
4Deploy any static host

Minimal contact page

Replace FORM_UUID. Serve over HTTPS in production so the allowlist matches what users see in the address bar.

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>Contact</title>
  </head>
  <body>
    <h1>Contact us</h1>
    <div data-form-id="FORM_UUID"></div>
    <script src="https://www.muxforms.com/embed.js" defer></script>
  </body>
</html>

Local testing

Add http://localhost:5173 (or your dev port) to the allowlist while building. Remove or keep it for internal demos.

Related: Website embed reference.

Common questions

Does this work on shared hosting?
Yes. The browser talks to MuxForms; your host only serves HTML files.
Can I use my own <form> markup?
Use embed.js for built-in fields, or POST JSON with the ingest secret from a small server script.
Why do I get 403 on submit?
The page origin must exactly match an entry on the form allowlist (scheme + host, no path).
Where is the full embed reference?
See /docs/embed for mount(), React, and styling notes.

Static sites deserve a real inbox.

Ship contact.html today; add Next.js or Astro later on the same MuxForms account.

Upgrade to Pro