Domains and DNS
Herald sends from your own domain, signed as yours, so mailbox providers judge your mail by your name. Add a domain once; Herald gives you its records, checks them, and keeps checking.
Add a domain
In Console, open Domains, or:
const { data: domain } = await herald.domains.create({ name: 'mentor.app' })
console.log(domain.records)A domain belongs to one project, across the whole platform: no other organisation can add it, or a domain above or below it.
The records
| Purpose | Type | Name | Value |
|---|---|---|---|
| DKIM | TXT | herald._domainkey | v=DKIM1; k=rsa; p=… (your key, from Console) |
| SPF | TXT | send | v=spf1 include:_spf.heraldmail.email -all |
| Return path | MX | send | mx.heraldmail.email, priority 10 |
| DMARC | TXT | _dmarc | v=DMARC1; p=none; (or your own policy) |
Names are relative to your domain: herald._domainkey means herald._domainkey.mentor.app.
- DKIM signs every message for your domain (RSA-2048, relaxed canonicalisation, with the important headers signed twice so nothing can be added after). Ask for an Ed25519 signature too with
ed25519: true; its record is atheralde._domainkey. - The return path is where bounces come back: a subdomain,
send., with its own MX and SPF. Your domain’s own SPF record isn’t touched, and SPF still aligns with DMARC. - DMARC is recommended for everything, and required for live Proclamations: Gmail and Yahoo ask bulk senders for it. Start with
p=none, then tighten it once your reports are clean.
Verify
Add the records at your DNS provider, then press Check in Console, or:
await herald.domains.verify(domain.id)Each record turns green as it’s found. A domain is pending until the required records are in place, then verified. Herald keeps checking: if a record goes missing the domain becomes degraded (it can still send for now), and Console shows which record.
Your own tracking host
Open and click tracking runs on Herald’s shared tracking host unless you give it one of your own, so links in your mail carry your name:
await herald.domains.update(domain.id, { tracking_host: 'links.mentor.app' })Then add a CNAME from links to track.heraldmail.email. Herald fetches its certificate once the CNAME is in place. Open and click tracking can each be switched off per domain (open_tracking, click_tracking).
Gmail’s view
Add Herald’s reader to the domain in Google Postmaster Tools, then switch on postmaster_tools: Console’s Deliverability page shows how Gmail sees your domain, and Herald holds your marketing if Gmail’s spam rate passes 0.3%.