> ## Documentation Index
> Fetch the complete documentation index at: https://docs.os.default.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Notification Domains

> Verify your own domain so meeting emails send from your workspace's address instead of Default's shared sending domain.

**Notification Domains** lets you send emails from your own domain instead of Default's default
system domain. Once a domain here shows **Verified**, it unlocks two more sender choices on
meeting-message templates: sending from the meeting host's own inbox address, and sending from a
custom email you choose for that message.

<Note>
  Open **Settings** from the **Dock** (the app bar at the bottom of the screen), then select
  **Notification Domains** under **Workspace Settings**. Admin access is required.
</Note>

## Before you start

You'll need access to your domain's DNS settings, the part of your domain registrar or hosting
provider (for example GoDaddy, Namecheap, Cloudflare, or whoever on your team manages your
company's domains) where you add records like MX, TXT, and CNAME. If that's a different person or
team at your company, loop them in before you start: you'll need them to add a few records partway
through.

## Custom Domains

The main page lists every domain you've added, each with a status badge:

| Badge                | Meaning                                                                                                     |
| -------------------- | ----------------------------------------------------------------------------------------------------------- |
| **Verified** (green) | The domain is confirmed and ready to send from.                                                             |
| **Pending** (amber)  | Verification hasn't finished yet, usually because the DNS records haven't been added or haven't propagated. |
| **Failed** (red)     | Verification didn't succeed. Check the records and try again.                                               |

If you haven't added a domain yet, the page shows **You haven't added a notification domain yet** with a **New Notification Domain** button. Once you've added at least one domain, that
button moves to the top of the list as **Add Custom Domain**.

{/* TODO screenshot: Notification Domains list page, with one verified and one pending domain */}

## Add a domain

Select **Add Custom Domain** (or **New Notification Domain** if this is your first) to open the
**Custom Email Domain** form.

<Steps>
  <Step title="Enter your domain">
    In **Domain**, enter the domain you want to send emails from. Use your root domain, for
    example `acme.com`, not a subdomain like `mail.acme.com`.
  </Step>

  <Step title="Optionally set a Return-Path">
    A Return-Path is the address that gets notified when an email you send bounces or can't be
    delivered. By default, Default routes this through a subdomain called `send.yourdomain`, for
    example `send.acme.com`. If you'd rather use a different subdomain name, for example `bounce`
    instead of `send` (giving you `bounce.acme.com`), enter it in **Return-Path** (optional). It
    must start with a letter, end with a letter or number, use only letters, numbers, and hyphens,
    and be 63 characters or fewer.
  </Step>

  <Step title="Select Add Domain">
    Default registers the domain and takes you to its detail page, where you'll add the DNS
    records that prove you own it.
  </Step>
</Steps>

## Verify domain ownership

Every new domain starts in **Pending** until you add the DNS records Default generates for it and
Default confirms they're in place. The detail page explains this in place: you need to prove you
own the domain before you can start sending emails from it.

Default lists the exact records to add, grouped as **DNS Records**, **MX Records**, and **TXT Records**.
Each row shows the record's **Type** (and its **Priority**, for MX records only), plus a **Name** and a **Value** to copy into your DNS provider exactly as shown. Select the copy icon next to a
Name or Value to copy it without retyping it, then add it as a new record with your domain
registrar or hosting provider. Each record also shows its own status: verified, pending, or
failed, so you can see exactly which one still needs attention.

<Steps>
  <Step title="Add the records">
    Add every listed record (DNS, MX, and TXT) to your domain's DNS configuration, using the Name
    and Value shown for each.
  </Step>

  <Step title="Wait for DNS to catch up">
    DNS changes aren't instant. It can take anywhere from a few minutes to 48 hours before your
    provider's changes are visible everywhere.
  </Step>

  <Step title="Select Check status">
    Once you've added the records, return to this page and select **Check status**. Default shows
    a **Last checked at** timestamp for the last time it checked, and updates the domain's status
    once the records verify.
  </Step>
</Steps>

Once the domain shows **Verified**, this verification section disappears, you're done and the
domain is ready to use.

## Manage or delete a domain

Select a domain from the list to open its detail page, which shows the domain, its status, and
its Return-Path (your custom one if you set it, or a note that a default Return-Path is being used
if you didn't).

To remove a domain, open its detail page and, under **Danger Zone**, select **Delete Domain**. Confirm
with **Delete domain** or back out with **Cancel**.

<Warning>
  Deleting a domain isn't just cosmetic: any meeting-message template currently sending from that
  domain falls back to your workspace's default sender options until you choose another verified
  domain.
</Warning>

{/* verified against product (re-verified 2026-07-26 against origin/main @ 36d98c7b2,
   post-ENG-478/#2797 settings shell polish; zero content changes required):
   Page title, description, Verified badge
     → apps/default-fe/src/app/(apps)/@settings/settings/(workspace)/notification-domains/NotificationDomainsShared.tsx:23-36
   Entry point: Settings app title, Dock sidebar group, Notification Domains sidebar item,
   Workspace Settings group title, adminOnly gating
     → apps/default-fe/src/app/(apps)/@settings/settings/_registry/SettingsRegistryMetadata.ts:73,93-97
     → apps/default-fe/src/common/registry/AppRegistry.tsx:311 ("Settings" app title)
     → apps/default-fe/src/app/(apps)/@settings/settings/_components/Sidebar.tsx:21-32 (adminOnly filter)
   Custom Domains list page (header, empty state, Add Custom Domain / New Notification Domain buttons)
     → apps/default-fe/src/app/(apps)/@settings/settings/(workspace)/notification-domains/NotificationDomainsListPageClient.tsx:31,39,70,78
   Add domain form (Custom Email Domain, Domain, Return-Path, Add Domain button, return-path rules)
     → apps/default-fe/src/app/(apps)/@settings/settings/(workspace)/notification-domains/AddNotificationDomainPageClient.tsx:51,56,74,76,99
     → apps/default-fe/src/app/(apps)/@settings/settings/(workspace)/notification-domains/NotificationDomainsShared.tsx:5-15
   Verify-ownership flow (DNS/MX/TXT record groups, Type/Priority/Name/Value columns,
   copy icon, Check status, Last checked at, in-progress/failed copy)
     → apps/default-fe/src/app/(apps)/@settings/settings/(workspace)/notification-domains/NotificationDomainDetailPageClient.tsx:131-135,220-296
   Danger Zone / delete flow (Danger Zone, Delete Domain, confirm dialog Delete domain/Cancel,
   fallback-to-workspace-sender warning)
     → apps/default-fe/src/app/(apps)/@settings/settings/(workspace)/notification-domains/NotificationDomainDetailPageClient.tsx:301-336
   Page frame: SettingsPageLayout is a plain flex container with no separate pane header or
   tab strip, consistent with the ENG-478 "drop pane header, normalize page frame" change;
   this page's own inline header/content is unaffected
     → apps/default-fe/src/app/(apps)/@settings/settings/_components/SettingsPageLayout.tsx
   "Dock" is the established house term for the app bar (not a literal on-screen string; the
   component itself is named Dock), consistent with get-started.mdx and other Settings pages.
   NOTE: several short generic strings (Type/Name/Value/Priority/Verified/Pending/Failed/
   Danger Zone/Delete domain/Domain/Settings/Dock) legitimately cross-match elsewhere in the
   repo under the lint's plain grep; the file:line citations above are the authoritative source. */}
