> For the complete documentation index, see [llms.txt](https://docs.codemash.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.codemash.io/cloud/emails/campaigns/new.md).

# Create a campaign

**Where:** Email → Campaigns → Create Campaign · `/projects/<project>/emails/campaigns/new`

**Add New Email Campaign** is one form: pick who receives the email, pick the template, bind its tokens, and press **Send** — or pick a date and the same button becomes **Schedule**.

{% hint style="info" %}
Screenshot TODO — capture comes from testing-plan area **13-emails**.
{% endhint %}

## Step by step

1. **Recipients** — a card picker with four sources:

   * **All users** — every project user, optionally narrowed with **Select role(s)**.
   * **Specified Users** — user pickers for **To:** (required), **CC:** and **BCC:**; only users with an email address can be picked.
   * **Email Addresses** — raw addresses in **To:** (required), **CC:** and **BCC:**, comma-separated.
   * **Collection** — recipients read from a database collection. Needs the Database module; the form shows an error alert with an **Enable** link when it is off.

   The user and address sources also offer a **Single email strategy** checkbox — each recipient in "To:" gets a separate email instead of one shared email.
2. **Template Details** — **Select template** (required), then **Send in specific language** listing the template's translations. When a language is fixed and the audience is users, **Override user language** appears — send in the selected language even if the recipient prefers another.

   Below the template picker, the tokens manager lists every `@Model.…` variable found in the template. **Send** stays disabled until all tokens are bound — reserved tokens (for example `Project.Name`, `Recipient.User.FirstName`) resolve automatically, custom ones take a value here.
3. **Advanced settings** — all optional:
   * **Respect time zone** — deliver at the chosen hour in each recipient's local time zone (ignored for raw email addresses, where no time zone is known).
   * **Send email on behalf of** — a different initiator user than your session user.
   * **Select email provider** — the integration to send through, if not the default.
   * **Do not send immediately, but rather at a specific date and time** — a date-time picker; picking one turns the submit button into **Schedule**.

After **Send** the campaign is created (`cmp_…`) and you return to the campaigns list, where its batches and per-message statuses appear as it runs.

### Example

A release announcement to two testers: choose **Specified Users**, put `usr_6HhkNJqLRDCJexA2Vc0oXn` and `usr_2gPFweHkeqiT3wa1AbBQfA` in **To:**, tick **Single email strategy**, select template `tmpl_5Rf3EKWEKMsihdBkPAcK0`, bind its custom token `@Model.ReleaseNotesUrl`, and press **Send**.

## Use it from code

[Create Email Campaign](/sdks-and-cli/notifications/email/create-email-campaign.md)

## API reference

Endpoints: [Create Email Campaign](/api-reference/notifications/email/create-email-campaign.md).
