← Use cases

Newsletter signups

Grow a mailing list from any static or marketing site with one domain-locked form endpoint and optional double opt-in.

The problem

You need newsletter subscribers without standing up a backend or embedding a heavy ESP form.

How Simple Signups fits

Create a campaign, allow-list your site domains, and point a plain HTML form at the subscribe endpoint. Capture first, then export confirmed subscribers or forward them into your sending stack later.

When this is a good fit

  • Marketing, docs, or landing pages that only need subscriber capture.
  • Teams that already send email elsewhere and just need a clean intake layer.
  • Lists that may need double opt-in or tighter anti-abuse defaults.

When you probably need more than this

Not a fit alone if you need broadcast sending, journeys, or deep audience segmentation on day one. Keep your ESP for sending and let Simple Signups handle the capture step.

Working example

Swap in your public campaign id (pub_...) and add your site domain to the campaign allow-list. Full field reference is in the developer docs.

HTML newsletter form
<p>Subscribe to our newsletter for occasional updates. No spam — unsubscribe anytime.</p>
<form action="https://simple-signups.com/api/subscribe" method="POST">
<input type="hidden" name="campaignId" value="pub_your_campaign_id" />
<input type="email" name="email" required placeholder="you@example.com" />
<input type="hidden" name="tags" value="newsletter" />
<input type="text" name="hp" tabindex="-1" autocomplete="off"
style="position:absolute;left:-9999px" aria-hidden="true" />
<button type="submit">Subscribe</button>
</form>
fetch (JSON)
await fetch('https://simple-signups.com/api/subscribe', {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({
"campaignId": "pub_your_campaign_id",
"email": "jane@example.com",
"tags": [
"newsletter"
]
}),
});

Related reading

Next step

Create a campaign in the dashboard, copy the public id, and paste the form above onto your site.