Newsletter system with double opt-in, GDPR-compliant
Build your own newsletter sign-up the way German law expects it: consent with a stored text version, double opt-in, one-click unsubscribe, bounce handling and clean DNS. With working code for Resend and a Postgres table.
Bought it? Sign in with the email from your purchase. Terms · Right of withdrawal
Needs your own domain with access to its DNS settings, a website or app where you can add a server route (e.g. Next.js), a Postgres database (e.g. Supabase or your own server), a Resend account and Node.js 20+. Basic coding knowledge or an AI coding agent such as Claude Code or Codex. The legal parts are general information, not legal advice.
Self-study course: slides, hands-on tasks and templates, at your own pace. No graded tests, no individual tutoring.
Self-employed people, creators and small businesses in Germany who want to collect email addresses for a newsletter and want to understand and own the process.
A working sign-up with double opt-in on your own domain, a subscriber table with consent proof, sending via Resend with List-Unsubscribe, webhooks for bounces and complaints, SPF/DKIM/DMARC set up, and a welcome sequence ready to send.
Contents
- 01 · The legal frame
- Consent, § 7 UWG and the GDPR12 min
- Proof: double opt-in, text versions, unsubscribe14 min
- 02 · Choosing a tool
- Hosted newsletter tool or your own stack?10 min
- 03 · Building your own stack
- Sign-up form, consent checkbox and honeypot15 min
- Confirmation token and consent proof15 min
- Sending with Resend and one-click unsubscribe15 min
- 04 · Deliverability
- Bounces and complaints via webhooks12 min
- SPF, DKIM, DMARC and deliverability basics14 min
- 05 · Writing and measuring
- Lead magnet, welcome sequence and measuring without pixels14 min
Material
- Consent and email text templates (DE + EN)
- SQL: subscribers, consent texts, events (Postgres)
- Route handlers: sign-up, confirm, unsubscribe, send, webhook (JavaScript)
- DNS and deliverability checklist (DE + EN)
Fabian Faraz Farid · All courses