The MuxForms website embed is a script that reads data-form-id, downloads your form schema, renders fields, validates input, and POSTs submissions to MuxForms. Add one div and embed.js on any HTML page, including WordPress, Next.js client routes, and static hosts.
Docs
MuxForms fetches the form schema, renders fields, validates on the client, and POSTS to the ingest API. You do not host PHP or a serverless function.
| Step | Action |
|---|---|
| 1 | Create a form; copy the UUID |
| 2 | Allow your site origin on the form |
| 3 | Paste div + script tag |
| 4 | Read submissions in the inbox |
Replace FORM_UUID with the id from your dashboard.
<div data-form-id="FORM_UUID"></div> <script src="https://www.muxforms.com/embed.js"></script>
embed.js watches the page for new [data-form-id] nodes (client-side navigation included). You can also call window.MuxForms.mount(el) after your framework renders.
import { MuxForm } from "@muxforms/react";
export default function Page() {
return <MuxForm formId="FORM_UUID" />;
}The @muxforms/react package lives in this repo under packages/react. Load the script once in your layout or let the component inject it.
On the form Install tab, enable a hosted page and share /f/your-slug. Same styling and submissions as the embed, with a QR code and social preview image for iMessage, Slack, or email.
Add the exact origin (scheme + host, no trailing slash) to limit which sites can load the embed in a browser, for example https://www.yoursite.com. This is CORS — it does not block curl or server scripts. Those clients need the per-form ingest secret from Settings.
The embed fetches a short-lived submit token with the schema, sends it on POST, and can show Cloudflare Turnstile when you configure keys on the form.
Appearance (colors, radius, fonts, submit label) is stored on the form. The embed applies those tokens so the widget can match the site without a custom CSS file.
Create a form, allow your origin, embed the script.
Upgrade to Pro