> Lettrove docs 1.x · https://docs.lettrove.com/docs/app/sending

# Sending

Lettrove sends as **you**: from a domain you own and have verified, as a sender address on it.
Nothing goes out before that, by anyone, through any route; a send attempted earlier is refused with
`sender_not_configured` and a link to set it up.

## 1. Verify a domain

**Settings → Sending → Add a domain.** Enter your domain. For a root domain such as `acme.com`,
Lettrove suggests sending from a subdomain, `mail.acme.com`: it keeps your company's own mail
reputation separate from campaign mail. Either works.

Lettrove shows the DNS records to publish at your registrar (they prove you own the domain and let
inboxes verify your mail; no record for receiving mail is asked for, because Lettrove never receives
it). Publish them, then **Check now**, or wait: Lettrove checks on its own, every minute for 72
hours after you add the domain.

Also on that page: **DMARC**. Lettrove looks up the DMARC record of your organisation's domain and
tells you whether it is missing, set to `none`, `quarantine` or `reject`. A DMARC policy is what
inboxes expect from a domain that sends mail; without one, more of your mail lands in spam.

A domain can be removed, and its sending key rotated, from the same page.

## 2. Add a sender address

On a verified domain, add the addresses you send as (`hello@mail.acme.com`, with a display name) and
choose a default. Test sends and campaigns go out from the default unless you pick another.

## 3. Send a test

In the editor, **Send test** sends the email to one address, from your sender. The test and what
the provider reported for it (delivered, bounced…) appear in the workspace's **Inbox**.

## 4. Send a campaign

**Send → Send to a list**:

1. **Pick the lists.** One or more. Lettrove summarises the audience first: how many people, how
   many duplicates across the lists, which fields have blanks, with a sample.
2. **Personalise.** Every `{{contact.…}}` tag in the email is checked against the lists' columns; a
   tag no list can fill stops the send until you change it or pick another list. A tag can carry a
   fallback for blanks: `{{contact.first_name | "there"}}`.
3. **Check a real preview**, merged for a real person from the list.
4. **Send now, or at a time** up to a year ahead. Opens and clicks are tracked if you leave the
   switches on.

Then watch the send's page: **sent, delivered, bounced, complained, opened, clicked,
unsubscribed**, for the whole send and per list, with each recipient's own outcome. A scheduled send
can be cancelled before it starts (the email itself stays); a send in progress can be stopped, and
whoever has not been mailed yet is skipped.

### What every recipient gets

- **An unsubscribe link.** Put `{{unsubscribe_url}}` where you want it; it is filled per recipient
  with a signed link that unsubscribes that person and no one else, and carries nothing personal
  in the address. Someone who unsubscribes is never mailed again by that workspace.
- **Tracking,** when on: an open pixel and click redirects, each signed the same way. They are added
  at send time, after the design is compiled, so nobody editing the email can move or remove them.
  Automatic previews by mail clients are not counted as opens.

### Who is skipped

The figures say who was not mailed and why: **unsubscribed**, **no email address**, or the second
copy of a **duplicate** across the chosen lists.

## Who can do what

| | Viewer | Editor | Admin | Owner |
|---|---|---|---|---|
| Send a test | | ✓ | ✓ | ✓ |
| Send a campaign | | | ✓ | ✓ |
| Verify domains, manage senders | | | ✓ | ✓ |

See [roles](/docs/app/team#roles). Everything above is also what an AI assistant can do through the
[MCP server](/docs/app/mcp), with your role and the Send scope.
