UI/UX library Give a site its own mail
02-08-2026

Give a site its own mail

Send as invitations@yourdomain, never @gmail. Free, no mail server.

Any of Frank's sites or apps that must send real mail as its own domain: an invitation, a receipt, a reply. Not for high-volume marketing, and not a full mailbox, that stays a mail host.

How a site sends its own branded mail The site sends through Brevo, DNS records stamp the domain as allowed, the reader sees the site's own address in the inbox. DNS records Your site the app, on the server Brevo relay free, 300 mails a day Reader's inbox shows invitations@domain

The site never runs its own mail server. Brevo sends for it, and the domain's DNS records are the stamp that proves the site allowed it, so the reader sees the real address, not spam.

Never run a mail server

A fresh mail server has no reputation. It lands in spam on day one, no matter how well it is built. So the mail is never sent from the site's own server. A free relay sends it AS the domain instead, and DNS records tell the receiving inbox that the domain allowed this. Claude does every step of this except opening the accounts, which stay Frank's.

The full recipe, guardrails and status this page teaches live in the branded-mail skill. First proved on Vox Populi, the project folder, 02-08-2026.

The pieces

PieceRoleCost
Brevo (brevo.com)Sends mail as name@domain, 300 a day free0
Registrar DNS APISPF + DKIM records that prove the sender0
Backend mailer, one functionThe app calls one send_email(); the driver is config0
Reply-To → Frank's GmailReplies work, zero receiving setup0
ImprovMX, later, optionalFree forwarding if the domain must also receive0

The recipe, seven steps

1. Frank's one manual step. He opens the free Brevo account himself and hands over the key. Stored as BREVO_API_KEY in 6 - Private/keys/keys.env, never echoed.
2. Declare the domain in Brevo. The API answers with the DNS records Brevo wants.
3. Set those records at the registrar. GoDaddy, tested working 02-08-2026: the Brevo TXTs, and one merged SPF record, never two.
4. Authenticate, then create the sender. invitations@<domain>.
5. Wire the backend. One send_email(), driver picked from env: SMTP if set, else Brevo, else AgentMail.
6. Prove it. One real mail, sent from the app's own flow, lands in Frank's inbox with the branded sender, no spam flag.
7. Write the account down. Which sites send through it, quota used, where the key lives.

Guardrails

  • One Brevo account for every site. A new site is one more authenticated domain, never a new account.
  • 300 mails a day, shared. Say the paid-tier cost before any bigger send, the standing rule for every per-use service.
  • Never two SPF records on one domain. Merge the includes into one.
  • Read before writing DNS. Add to the existing records, never blind-overwrite the set.

Status

02-08-2026: recipe proven on Vox Populi, voxpopuli.one, project folder 6 - Private/SCRC/VoxPopuli/. GoDaddy's DNS API was verified live the same day. Brevo account creation was Frank's pending step at write time; this note updates once the first branded mail lands in his inbox.

Where this comes from