cf-email3e1409e

Mailing lists · transactional email

Your list, your sending account, your reputation.

Contacts, consent, the editor, the campaign, the unsubscribe link, bounce handling and the suppression list all live here. The provider underneath is a relay you own and pay for directly — so changing it changes nothing about your list.

  • Relays through
  • Amazon SES
  • Resend
  • Mailjet
  • Brevo

One record of who consented

Contacts are never pushed into a provider’s audience, and a provider’s own campaign features are never used. That is not housekeeping — it is what makes two things true.

  • Switching provider does not touch your list.Verify your domain at the new one and repoint. The audience, the history and the unsubscribes are unchanged, because the data never left.
  • An unsubscribe has exactly one home.The moment a contact exists both here and in a provider’s audience, every unsubscribe, edit and deletion has two homes and they drift apart.

What running a list looks like

  • Connect a sending accountPaste an API key, or an access key for SES. It is checked against the provider before it is stored, and stored encrypted.
  • Add your sending domainWe work out the DKIM and SPF records. If your DNS is on Cloudflare we publish them for you; otherwise there is a copy-all block to hand to whoever runs your DNS.
  • Check the domain’s healthSPF and DMARC are graded from a live DNS lookup on every view, with the DMARC policy steppable one rung at a time.
  • Import your contactsCSV upload with a column-mapping step. Columns you don’t map become per-contact attributes you can use in the email.
  • Write the emailFour editors: a form with no markup to learn, Markdown, a drag-and-drop canvas, and raw MJML. Placeholders work in all four.
  • Send a test to yourselfOne copy to your own inbox, rendered by the same code the real send uses, before there is an audience at all.
  • LaunchPreflight refuses a send that cannot work and says what it will skip. Then it paces itself inside the provider’s rate limit.

What it does

  • Contacts and listsCSV import with column mapping, per-contact attributes and history
  • CampaignsPreflight, paced sending, live progress, per-recipient outcome
  • Four editorsBlocks, Markdown, visual, raw MJML — plus reusable templates
  • One-click unsubscribeRFC 8058 headers and a visible footer link on every campaign email
  • SuppressionsBounces, complaints and unsubscribes recorded automatically, checked at send time
  • Domain onboardingDKIM and SPF setup, Cloudflare auto-DNS, live SPF and DMARC grading
  • Four providersSES, Resend, Mailjet and Brevo behind one interface
  • Transactional APIBearer auth, idempotency keys, signed delivery webhooks
  • TeamsSeveral people per organisation, one login across several organisations

What it doesn’t do yet

  • No signup form or double opt-inContacts arrive by CSV import only. Growing a list from your own website is your page to build today — this is the largest gap.
  • No automationsNo “joined the list → send A, wait three days, send B”. A person launches every campaign.
  • No segmentationA campaign goes to a whole list, not to a query over it.
  • No scheduled sendsLaunch is immediate.
  • No open or click tracking — by choiceNo tracking pixels and no rewritten links. So no open rates, and also nothing about your recipients handed to anyone else.
  • No per-list preferencesUnsubscribing stops all campaign mail from that organisation, not one list.
  • No API for contactsContacts and campaigns are managed here; the only machine interface is sending.

What is enforced, not left as a setting

  • Every campaign email can be unsubscribed from.A personal link, the one-click headers mailbox providers expect, and your postal address. The renderer refuses to produce campaign mail without them.
  • Suppression is checked as each message goes out.Not as the list was when you pressed send. A bounce that arrives mid-campaign stops the next message to that address — the rest of the send carries on.
  • An unsubscribe stops marketing only.Someone who left the newsletter still gets their password reset, because they asked for it. A hard bounce stops everything.

You pay for email, not for contacts

There is no per-contact or per-seat charge here. The email itself is billed by your provider, to your own account — Amazon SES is $0.10 per 1,000 sent at its à la carte rate, which is roughly a tenth of the newsletter tools that also want to hold your list.

SES costs setup time rather than money: an AWS user to create, and a support request to leave its sandbox. The DKIM identity, the configuration set and the whole bounce-notification chain are set up for you.