# Guides

Step-by-step recipes for the jobs a small site needs email for: forms without a backend, newsletter signups, transactional email and DNS.

These guides are written for people who run a few small websites and would rather not run a
server for them. Each one solves a single problem end to end, with code you can paste, a way to
test it and a plain account of the trade-offs. They lean on two parts of SendBeam: the public
form endpoint, which lets a static page post a signup or a message without any backend, and the
REST API, which sends a single email to a contact.

If you are looking for host- or framework-specific notes first, the
[integrations pages](https://sendbeam.io/integrations) cover Astro, Next.js, Hugo, Eleventy, WordPress,
Cloudflare Pages, Netlify, Vercel, Zapier and Make.

## The guides

Contact form backend for Cloudflare Pages

A contact form on a static Cloudflare Pages site that emails you, with Turnstile and no Pages Function.

Newsletter signup on an Astro site

An Astro component that posts a signup to SendBeam, with the form ID in an environment variable.

Form to email without a backend

Plain HTML and fetch: a form on any static host that lands in your inbox.

Transactional email for a side project

Welcome emails, receipts and notifications from a Node script or serverless function via the REST API.

Double opt-in on a static site

Confirmed subscriptions from a static site: what happens after the POST and what to tell the visitor.

Verify a sending domain with Cloudflare DNS

Add the CNAME records at Cloudflare, or let SendBeam add them, and pick your from-address.

## Starter kits

Working code for every guide above lives in five small, runnable projects. Each one carries a
newsletter signup, a contact form, the double opt-in wording, an unsubscribe route and the spam
protection, with a deploy config for its host. Clone one, put your form IDs in its environment
file and deploy:

- HTML and vanilla JS [Plain HTML No API key needed · Any static host One page, one script, no build step: paste the files onto any host and both forms work. sendbeam-starters/plain-html](https://github.com/sendbeam-io/sendbeam-starters/tree/main/plain-html)
- Astro [Astro on Cloudflare Pages No API key needed · Cloudflare Pages Signup and contact components, form IDs in PUBLIC_ environment variables, and a _headers file that lets Turnstile load. sendbeam-starters/astro-cloudflare-pages](https://github.com/sendbeam-io/sendbeam-starters/tree/main/astro-cloudflare-pages)
- Eleventy [Eleventy on Netlify No API key needed · Netlify Nunjucks includes and a global data file, with a netlify.toml that sets the Content-Security-Policy for you. sendbeam-starters/eleventy-netlify](https://github.com/sendbeam-io/sendbeam-starters/tree/main/eleventy-netlify)
- Next.js (App Router) [Next.js on Vercel No API key needed · Vercel Client components that post straight to the form endpoint, so no route handler and no secret sit in the middle. sendbeam-starters/nextjs-vercel](https://github.com/sendbeam-io/sendbeam-starters/tree/main/nextjs-vercel)
- Hugo [Hugo No API key needed · Any static host Two partials and one script in static/, with the form IDs read from site params in hugo.toml. sendbeam-starters/hugo](https://github.com/sendbeam-io/sendbeam-starters/tree/main/hugo)

Every starter covers the same five things — newsletter signup, contact form, double opt-in,
unsubscribe and spam protection — reads its form IDs from environment variables or site config,
and is MIT licensed. Browse them all in
[sendbeam-starters](https://github.com/sendbeam-io/sendbeam-starters).

---
Source: https://sendbeam.io/docs/guides
