Skip to content
All docs pages

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:

TypeScript
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

PurposeTypeNameValue
DKIMTXTherald._domainkeyv=DKIM1; k=rsa; p=… (your key, from Console)
SPFTXTsendv=spf1 include:_spf.heraldmail.email -all
Return pathMXsendmx.heraldmail.email, priority 10
DMARCTXT_dmarcv=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 at heralde._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:

TypeScript
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:

TypeScript
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%.