# Sending domains

A sending domain lets the emails Mirio sends on your team's behalf come from your own domain, `ada@acme.com` or `hello@acme.com`, instead of Mirio's. Today that's replies to the people who filled in your forms; instant confirmations come later. Notifications to your team (new responses, sign-in codes) still come from Mirio.

Each workspace can have one sending domain. Owners add it in the dashboard under **Settings → Email**; members can see it and its DNS records. It takes a person: you add a few DNS records where your domain's DNS is managed, which an agent can't do for you.

## Before it's verified

Until the domain is verified, nothing changes for the people you write to: emails come from Mirio's address, with the sender as Reply-To, so answers still reach the right person. Mirio switches to your domain by itself once it's verified, and back to its own address if the domain's records later go missing.

## Add a domain

1. Open **Settings → Email** and enter the domain: one you own (`acme.com`) or a subdomain of it (`mail.acme.com`). It must be a name on the public internet: not an IP address, not `localhost` or `acme.local`, and not a shared suffix such as `co.uk` or `github.io` on its own.
2. Mirio registers it with Resend, its email provider, in Resend's EU region, and shows the DNS records Resend asks for.
3. Add each record where your domain's DNS is managed (your registrar, Cloudflare, Vercel or similar), exactly as shown. Each name and value has a copy button. Most DNS providers add your domain to the name for you, so `send` becomes `send.acme.com`.
4. Wait for **Verified**. Resend looks for the records for 72 hours after you add the domain; Mirio checks back every 10 minutes, and whenever you open the page. **Check now** asks Resend to look again straight away. DNS changes can take a while to show up.

## The records

For `acme.com` the records usually look like this (always copy the exact values from the dashboard; Resend may ask for different ones):

| Type | Name | Value | For |
| --- | --- | --- | --- |
| MX | `send` (priority 10) | `feedback-smtp.eu-west-1.amazonses.com` | Bounces and complaints (SPF) |
| TXT | `send` | `"v=spf1 include:amazonses.com ~all"` | Which servers may send for the domain (SPF) |
| TXT | `resend._domainkey` | `p=…` (a public key) | Signing each email (DKIM) |

**Your existing email keeps working.** None of the records go on the domain itself. The SPF and MX records go on a `send.` subdomain (`send.acme.com`), which is only used for bounces, and the DKIM key on `resend._domainkey.acme.com`. Your domain's own MX records (where your mail is delivered) and its SPF record stay as they are, so email to and from your mailboxes is unaffected. A [DMARC](https://dmarc.org) record on your domain, if you have one, applies to these emails too.

## Who an email is from

Once the domain is verified:

| The person sending | From | Reply-To |
| --- | --- | --- |
| A teammate whose own address is at the domain (`ada@acme.com`) | `"Ada Lovelace" <ada@acme.com>` | none |
| A teammate with an address elsewhere (`ada@gmail.com`) | `"Ada Lovelace from Acme" <hello@acme.com>` | `ada@gmail.com` |
| The team as a whole | `"Acme" <hello@acme.com>` | none |

The address is the exact domain: with `acme.com` verified, a teammate at `eu.acme.com` sends from `hello@acme.com`. `hello` is the default; owners change it under **From address**.

## States

| In the dashboard | What it means |
| --- | --- |
| Waiting for DNS | Added; Resend is looking for the records. |
| Verified | Emails Mirio sends for your team come from the domain. |
| Not verified | The records weren't found within 72 hours. A domain that was never verified is then removed (from Mirio and from Resend), so a name can't be held by someone who doesn't control it; add it again once the records are in place. |
| Records missing | It was verified, but its records can't be found now. Emails come from Mirio's address until they're back; Resend keeps checking for 72 hours. |

Each record also shows whether Resend has found it.

## If Resend refuses

- **Already set up with Resend:** the domain is in another Resend account (yours, perhaps, if you use Resend directly). Remove it there, or use a subdomain such as `mail.acme.com`.
- **Mirio can't add it:** the name is taken. Use a subdomain such as `mail.acme.com`, or write to support@trymirio.com. A name someone added and never verified is freed 72 hours after it was added.
- **One domain waiting at a time:** each person can have one domain that isn't verified yet, across all their workspaces. Verify or remove it before adding another.
- **The provider's limit:** Mirio's Resend account can hold a limited number of domains. Write to [support@trymirio.com](mailto:support@trymirio.com).
- **Not accepted as a domain:** use a domain you own, spelled as it is registered.

## Remove a domain

**Remove** (owners) deletes the domain from Resend and from Mirio. Emails go back to coming from Mirio's address, with the sender as Reply-To. You can delete the DNS records afterwards. Deleting the workspace removes its domain too.

## Self-hosting

Sending domains need Resend: the dashboard manages them with a full-access Resend key (`RESEND_DOMAINS_API_KEY`), and the API sends from them only when its own mail goes through Resend. A deployment that sends with Postmark only shows that the feature isn't available.
