Relayloft docsSign in

Setting up a domain

API base URL: https://api.relayloft.com

You send from your own domain, so receivers can check the mail really comes from you. Setup is adding a few DNS records once, where your domain's DNS is hosted (often where you bought it). It takes about 10 minutes, then up to a few hours for DNS to spread.

1. Pick the name

Use a subdomain such as mail.yourcompany.com or notify.yourcompany.com, not your main domain. Your addresses become hello@mail.yourcompany.com. A subdomain keeps this mail's reputation apart from your everyday mail, and nothing here touches the email you already receive.

2. Add it

In the portal: Domains → Add domain. Or with the API:

const { data } = await resend.domains.create({ name: "mail.yourcompany.com" });
// data.records: the DNS records to add

# or
curl -X POST https://api.relayloft.com/domains   -H "Authorization: Bearer $RESEND_API_KEY" -H "Content-Type: application/json"   -d '{"name":"mail.yourcompany.com"}'

The API needs a Full access key. Optional: custom_return_path changes the bounce subdomain below (letters, digits and hyphens, starting with a letter).

3. Add the DNS records

You get five records to add, plus one we recommend:

TypeName (example)What it's for
CNAME ×3abc123._domainkey.mailDKIM. Signs every email so receivers can tell it wasn't forged or changed. All three are required, each with its own value.
MXbounce.mailReturn path. Where bounce reports go, so we can tell you when an address doesn't exist. Priority 10. It's on its own subdomain, so it doesn't change where your normal email is delivered.
TXTbounce.mailSPF for the return path: v=spf1 include:amazonses.com ~all. It's on the bounce subdomain, so it doesn't conflict with an SPF record you already have on your main domain.
TXT (recommended)_dmarc.mailDMARC. Tells receivers what to do with mail that fails the checks. Start with v=DMARC1; p=none; to monitor. If your main domain already has a DMARC record, it covers the subdomain and you can skip this.

Copy the exact names and values from the portal (they have copy buttons) or from records in the API. The DKIM names and values are unique to your domain.

About names

Most DNS providers add your main domain to the end of the name for you. If your domain is yourcompany.com and the record is bounce.mail.yourcompany.com, type only bounce.mail. Typing the full name there gives bounce.mail.yourcompany.com.yourcompany.com, the most common mistake.

The API's records give names relative to the domain you added: for mail.yourcompany.com that's bounce and abc123._domainkey. If your DNS is set up for yourcompany.com (the usual case), add the rest of the subdomain: bounce.mail, abc123._domainkey.mail. The portal shows the full names, so you can check.

Provider steps

Cloudflare

  1. Dashboard → your domain → DNS → Records → Add record.
  2. Pick the type, paste the short name and the value.
  3. For the three CNAME records, set Proxy status to DNS only (grey cloud). Proxied (orange) DKIM records never verify.
  4. For MX, put 10 in Priority. Leave TTL on Auto.

In the portal, Set up automatically with Cloudflare can add them for you with a token you paste once and we don't keep.

Amazon Route 53

  1. Route 53 → Hosted zones → your domain → Create record.
  2. Type the short name in Record name (Route 53 shows the domain after the box).
  3. For MX, the value is priority and host together: 10 feedback-smtp.us-east-1.amazonses.com.
  4. For TXT, put the value in double quotes: "v=spf1 include:amazonses.com ~all".

GoDaddy

  1. My Products → your domain → DNS → Add New Record.
  2. Type the short name in Name (GoDaddy adds the domain). The value goes in Value (or "Points to" for CNAME and MX).
  3. For MX, Priority 10.

Namecheap

  1. Domain List → Manage → Advanced DNS → Add new record.
  2. The short name goes in Host, the value in Value (or Target).
  3. For the MX record: under Mail settings, choose Custom MX first, or Namecheap won't let you add it.
  4. Careful: Mail settings apply to the whole domain. Namecheap's Email Forwarding stops working once you choose Custom MX. If you use Private Email, add its MX records back as Custom MX records (Namecheap's help lists them). If you rely on forwarding, move this domain's DNS to another provider (Cloudflare's is free) or ask whoever set up your email before switching.

Squarespace (domains that were at Google Domains)

  1. Domains → your domain → DNS → DNS settings → Custom records → Add record.
  2. Short name in Host, value in Data. MX priority 10.

Any other provider

Look for "DNS", "DNS records" or "Zone editor". You need to add CNAME, MX and TXT records with a host (name), a value and, for MX, a priority. If your DNS is managed by your IT team or web developer, send them this page and the records from the portal.

4. Verify

We check public DNS every few minutes, and the portal's domain page updates itself. Check now in the portal, or resend.domains.verify(id), checks at once. Most domains verify within minutes; DNS can take up to 72 hours. When the status is verified you can send from any address at the domain.

A domain that isn't verified within 7 days is removed, so nobody can hold a name they don't control. You can add it again.

Troubleshooting