Use fixture recipients when you want the **full send path** — render, queue, Emails list, workflow run — without SES leaving Lumail. That keeps complaints and bounces off your sending domain.

A [dry run](/docs/workflows/workflow-testing) is different: it skips email steps entirely. Fixture sends go through the real dispatcher and are recorded as sent.

## Fixture addresses

Any of these is auto-faked. The email is accepted, stored, and marked sent. SES is never called.

| Pattern | Example |
| ------- | ------- |
| `example.com`, `example.net`, `example.org`, including subdomains | `ada@example.com`, `ada@mail.example.org` |
| `test.com`, `test.net`, `test.org`, `test.dev`, including subdomains | `ada@test.com`, `ada@qa.test.dev` |
| Special-use TLDs `.test`, `.example`, `.invalid`, `.localhost` | `ada@signup.test`, `ada@nowhere.invalid` |
| Local-part starts with `playwright-test-` (any domain) | `playwright-test-ada@gmail.com` |

Display names are stripped first (`Ada <ada@test.com>` is still a fixture).

Do **not** use a real mailbox (`ada@gmail.com`, your own domain). Those still go to SES when sending is enabled and can bounce or complain.

`example.edu` and lookalikes such as `contest.com` or `mytest.com` are real domains and still send.

## Workflow

1. Create a subscriber with a fixture address, for example `qa+welcome@test.com`.
2. Give them the tags, fields, and revenue the graph actually reads.
3. Publish the workflow, then enroll that subscriber (trigger or [manual enrollment](/docs/workflows/workflow-manual-enrollment)).
4. Open the run timeline. Email steps execute instead of skipping.
5. Open **Emails** — the row is there, status is sent, and nothing hit a real inbox.

Repeat with one fixture subscriber per important path (welcome, branch A, exit, goal).

## Campaigns, API, SMTP

The same gate is shared:

- Campaign **Send test email**
- Broadcast and workflow campaign sends
- Transactional HTTP and SDK
- SMTP

Send to `preview@example.com` or `preview@test.dev` from any of those surfaces.

## What you get / what you do not

| Happens | Does not happen |
| ------- | --------------- |
| Render, personalization, unsubscribe link | SES API call |
| Queue, journal, Emails list | Inbox delivery |
| Workflow run continues past the email step | Bounce or complaint events |
| Recorded as sent | Reputation impact on your domain |

You still need one real send to yourself (or a mailbox you control) if you want to inspect the inbox, spam folder, or rendering in Gmail / Apple Mail.

## Related

- [Test-mode recipients](/docs/api-reference/test-mode) — exact match rules
- [Workflow Test Runs and Results](/docs/workflows/workflow-testing) — dry runs with no email side effects
- [Email Step](/docs/workflows/workflow-email-step)
- [Send Transactional Email](/docs/api-reference/api-emails-send)
