---
title: "Set up your sending domain for Adapty Mail"
description: "Add DNS records, verify your domain, and understand warm-up so Adapty Mail can send on your behalf."
---

Adapty Mail sends campaigns from your own domain — not from a shared address — so sender reputation stays under your control. You set this up once, and every campaign uses the same verified domain. For the minimum steps, see the domain section in [Get started with Adapty Mail](mail-get-started#3-set-up-your-sending-domain). This article covers the full setup, how verification works, and the automatic warm-up behavior.

## Requirements

- **Apex domain**: Submit your root domain (for example, `yourapp.com`), not a subdomain. Inputs like `app.yourapp.com` are rejected at validation.
- **Active NS records**: The domain must resolve. Adapty Mail performs a DNS lookup during setup and refuses domains without valid NS records.
- **One domain per Adapty project**: A domain can't be shared across projects. If the domain is already registered to any project — yours or someone else's — setup fails.

## Set up your sending domain

The setup wizard has three screens: enter the domain, confirm the generated subdomains, and add the DNS records. All three live in **Settings → Email Domains**.

1. **Enter your domain.** Type your apex domain into the **Domain** field and click **Preview**. Adapty Mail validates the format (ASCII, two labels, no leading or trailing hyphens, TLD of 2+ characters) and checks that DNS resolves.

   

2. **Confirm subdomains.** Adapty Mail generates two sending subdomains with fixed prefixes — `mail.yourapp.com` and `email.yourapp.com` — each with its own SES identity. It also creates a Mail-From subdomain under each (`hello.mail.yourapp.com` and `hello.email.yourapp.com`). Review them and click **Confirm**.

   

3. **Add DNS records.** The final screen lists every record to add — 10 total, 5 per sending subdomain, plus one optional DMARC record on the root. Use **Download CSV** to export the full list, or copy the records one by one into your registrar. Click **Done** when records are in place.

   

<Details>
<summary>DNS record reference</summary>

For each sending subdomain (`mail.yourapp.com` and `email.yourapp.com`), add:

**DKIM — 3 CNAME records.** Cryptographic signatures that prove the email wasn't altered in transit.

| Field | Format                              |
| ----- | ----------------------------------- |
| Type  | CNAME                               |
| Name  | `{token}._domainkey.{subdomain}`    |
| Value | `{token}.dkim.amazonses.com`        |

**Mail-From — 1 MX record.** Handles bounces.

| Field    | Format                                                   |
| -------- | -------------------------------------------------------- |
| Type     | MX                                                       |
| Name     | `hello.{subdomain}` (for example, `hello.mail.yourapp.com`) |
| Priority | `10`                                                     |
| Value    | `feedback-smtp.{region}.amazonses.com`                   |

**SPF — 1 TXT record.** Authorizes Adapty to send on your behalf.

| Field | Format                                 |
| ----- | -------------------------------------- |
| Type  | TXT                                    |
| Name  | `hello.{subdomain}`                    |
| Value | `"v=spf1 include:amazonses.com ~all"`  |

On your root domain, add the optional DMARC record:

| Field | Format                |
| ----- | --------------------- |
| Type  | TXT                   |
| Name  | `_dmarc.{domain}`     |
| Value | `v=DMARC1; p=reject`  |

Tokens, region, and any other values come from AWS SES at setup time. Always copy them from the DNS records screen in Adapty Mail, not from this reference.

</Details>

## How verification works

Once DNS records are in place, Adapty Mail polls DNS automatically, and you can also trigger checks manually.

- **Automatic polling**: Polling starts 5 minutes after you submit, then doubles each round — 10 min, 20 min, 40 min — before capping at 60 min. It continues until records are found or the 7-day window closes.
- **Manual check**: Click **Check Verification** to force an immediate check. There's a 60-second cooldown between manual checks — triggering too fast returns *"Verification check is on cooldown."*
- **Status states**: Each subdomain's DKIM and Mail-From are tracked independently as **Pending**, **Success**, or **Failed**. A domain is considered fully verified only when all four statuses read **Success**.
- **7-day deadline**: If verification doesn't complete in 7 days, the identity is marked **Failed**. Your DNS records stay in your registrar — re-enter the domain in **Settings → Email Domains** to start a new window.
- **After verification**: If you remove or change DNS records later, AWS SES eventually downgrades the identity. Keep the records in place for as long as you plan to send.
- **DNS propagation**: Usually takes minutes; can take up to 48 hours in rare cases.

## Domain warm-up

New domains have no reputation with email providers like Gmail or Yahoo, so high-volume sends from a fresh domain risk landing in spam. Adapty Mail handles warm-up automatically by ramping your daily send limit across 14 tiers. No configuration needed.

### How tiers work

Your domain starts at **Tier 1** (200 sends/day) and advances automatically when deliverability metrics stay healthy. If bounce rates rise or complaint rates climb, advancement pauses and can reverse until reputation recovers.

| Tier | Daily limit |
| ---- | ----------- |
| 1    | 200         |
| 2    | 400         |
| 3    | 800         |
| 4    | 1,500       |
| 5    | 2,500       |
| 6    | 4,000       |
| 7    | 6,000       |
| 8    | 8,000       |
| 9    | 10,000      |
| 10   | 13,000      |
| 11   | 16,000      |
| 12   | 20,000      |
| 13   | 25,000      |
| 14   | 30,000      |

Your current tier and daily limit are shown in **Settings → Email Domains**.

### Impact on launch by audience size

| Audience size    | Effect at launch                    |
| ---------------- | ----------------------------------- |
| Under 200 users  | Full audience reached on day one    |
| 200–2,000 users  | Delivery spreads over several days  |
| 2,000+ users     | Delivery spreads over 1–2 weeks     |

:::tip
Launch your first campaign as soon as DNS verification completes. The sooner you start sending, the sooner your domain advances through tiers and reaches full daily capacity.
:::

## Limitations

- **One domain per project**: You can only have one sending domain per Adapty project. To switch to a different domain, contact support — the dashboard has no "change domain" action.
- **Cross-project uniqueness**: A domain already registered to another project can't be reused. If you see *"Domain is already registered to another project"*, pick a different domain or reach out to support.
- **Verified domains can't be deleted**: Once any subdomain reaches **Success**, the dashboard blocks deletion. Pending domains can be deleted, but you still need to remove the DNS records manually from your registrar.
- **Fixed subdomain prefixes**: `mail.`, `email.`, and the `hello.` Mail-From prefix are hardcoded — they can't be customized. If those subdomains are already in use in your DNS, setup will conflict.
- **Apex domains only**: Subdomain inputs, trailing dots, and single-label hostnames are rejected.
- **No internationalized domains**: Punycode and IDN aren't supported. The domain must be ASCII-only.

## Troubleshooting

| Issue                                                                          | Solution                                                                                                                  |
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
| "Enter a valid domain (e.g. example.com)"                                      | Check the input: apex only, ASCII only, TLD of 2+ characters, no leading or trailing hyphens.                             |
| "Domain does not have valid DNS records"                                       | The apex domain itself must resolve. Confirm your NS records are active before retrying.                                  |
| "Domain is already registered to another project"                              | Pick a different domain, or contact support if you believe the registration is a mistake.                                 |
| "Verification check is on cooldown"                                            | Wait 60 seconds between manual checks. Automatic polling continues in the background.                                     |
| Verification stuck on Pending                                                  | Check that DNS records match exactly — no trailing dots, correct CNAME targets. DNS can take up to 48 hours to propagate. |
| "Cannot delete domain: one or more identities have been successfully verified" | A verified domain can't be removed from the dashboard. Contact support for assistance.                                    |
| Emails going to spam                                                           | Confirm your DMARC record is published. New domains need warm-up time — review [Domain warm-up](#domain-warm-up).         |
| High bounce rate                                                               | Verify your audience list contains valid, opted-in addresses. Bounces slow or pause tier advancement.                     |