Subscribers with a paper trail
Lists hold contacts, their consent state, and arbitrary metadata for personalization, with double opt-in as a first-class setting, not an afterthought.
Metadata that feeds your templates
Each contact carries arbitrary JSON metadata (a first name, a plan tier, a signup source), available as template variables like {{ first_name }} in every send to that list. Bulk import takes a contacts array on the same endpoint; new accounts importing bursts of cold contacts are screened for abuse.
curl -X POST https://api.euromail.dev/v1/contact-lists \
-H "X-EuroMail-Api-Key: em_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Product Updates",
"double_opt_in": true
}'
Three states, no ambiguity
Contacts are pending, subscribed, or unsubscribed, and only subscribed contacts receive broadcasts. With double opt-in enabled, new contacts confirm by email before activation, which is effectively required for EU marketing. Lists can auto-send a welcome email on subscription, deduplicated so nobody is welcomed twice.
- Statuses
- pending · subscribed · unsubscribed
- Double opt-in
- Per-list setting
- Welcome email
- Automatic, never sent twice
- Broadcast audience
- Subscribed contacts only