MuxForms newsletter signup forms collect email and explicit consent on your domain—not inside a Mailchimp popup. Store signups in an auditable inbox, email growth@, and webhook to Buttondown or Mailchimp when list sync is automated.
Use case
You own the landing page and the brand; MuxForms owns capture, consent proof, and the first mile before your ESP sends campaigns.
| Field | Purpose |
|---|---|
| Required subscriber | |
| consent | Marketing opt-in proof |
| list_id | Hidden list attribution |
| frequency | Optional preference select |
Newsletter signups are deceptively simple—one email field—but teams still embed Mailchimp popups, Google Forms, or host-specific widgets that break when you change frameworks.
MuxForms embed.js renders a minimal subscribe form on your domain: required email, required marketing consent checkbox, optional first name. Submissions land in a searchable inbox with timestamped rows you can audit for compliance questions.
Hidden fields `list_id`, `locale`, and `source` let one form serve footer signup, blog sidebar, and campaign landing pages—set values in JavaScript before submit or duplicate forms per list.
Notify growth@ on each signup for manual double-check workflows, or attach a per-form webhook to push subscribers into Buttondown, Mailchimp, or ConvertKit when automation is ready. MuxForms is capture + record, not campaign sending.
Pair consent copy in your page footer with the checkbox label so regulators see a clear opt-in. Rate limits and honeypot reduce bot emails that poison list quality.
Distinct from product waitlists: newsletter is ongoing content; waitlist is launch-specific—use separate forms so search and exports stay clean. See waitlists use case for launch teasers.
Static sites, Next.js, and WordPress all use the same snippet—allowlist each origin, paste embed, avoid PHP mail entirely.
Create a form named Marketing — Newsletter with these fields, then paste the embed on your page. Link privacy policy near the form; require consent checkbox; webhook to ESP; set hidden list_id per placement (footer vs blog).
| Field | Type | Required |
|---|---|---|
| First namefirst_name | text | No |
| Emailemail | Yes | |
| I agree to receive marketing emailsconsent | checkbox | Yes |
| How often do you want to hear from us?frequency | select | No |
| List idlist_idhidden | text | No |
| Signup sourcesourcehidden | text | No |
| Localelocalehidden | text | No |
| Leave blank_hphidden | text | No |
Illustrative preview—wire your form id after signup.
{
"name": "Marketing — Newsletter",
"fields": [
{
"name": "first_name",
"label": "First name",
"type": "text",
"required": false,
"placeholder": "Optional"
},
{
"name": "email",
"label": "Email",
"type": "email",
"required": true,
"placeholder": "you@company.com"
},
{
"name": "consent",
"label": "I agree to receive marketing emails",
"type": "checkbox",
"required": true
},
{
"name": "frequency",
"label": "How often do you want to hear from us?",
"type": "select",
"required": false,
"options": [
"Weekly digest",
"Monthly roundup",
"Major announcements only"
]
}
]
}<div data-form-id="FORM_UUID"></div> <script src="https://www.muxforms.com/embed.js" defer></script>
Then clone the pattern for the next site or app.
Upgrade to Pro