> For the complete documentation index, see [llms.txt](https://docs.mailofly.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mailofly.com/product-guides/compose.md).

# Compose

**Compose** sends one-off email from a connected [sending account](/product-guides/accounts.md)—without creating a [campaign](/product-guides/campaigns.md). You choose recipients (typed addresses or saved contacts), write or load a message, then send. Each successful delivery appears in [mail logs](/product-guides/mail-logs.md).

## What it is

A lightweight “send now” flow: pick **From** (SMTP or Google account), set **subject** and **body** (or load a saved [template](/product-guides/templates.md)), add **To** / Cc / Bcc lines or select **contacts**, then submit. Mailofly merges tags per recipient and respects each account’s daily send limit.

## How it helps

* **Quick broadcasts** — announcements, tests, or one-time messages without campaign setup.
* **Same merge rules as campaigns** — contact fields, dates, custom fields, and one-off placeholders you name in the subject or body.
* **API parity** — the same behaviour is available over the REST API using your account’s public **account key** (`acc_…`), shown on the Accounts page.

## How to use it

Open [Compose](https://www.mailofly.com/user/compose). Select a sending account, then either type subject and HTML body in the editor or switch to a saved template and load it. Choose **Manual** recipients (emails separated by commas, spaces, or new lines) or **Contacts** and tick the people to include.

### Merge tags and variables

Built-in tags like `{{ first_name }}` or `{{ iso_date }}` resolve from the contact or send time. For manual recipients, you may be prompted for values that match those tags. Custom tags you invent (for example `{{ promo_code }}`) open a short dialog before send so you can fill them once for the whole batch.

### Limits

Each send consumes quota on the chosen account for that calendar day. If you hit the cap, add another account or wait until the next day. The API enforces the same limits per account key.

## Compose vs campaigns

**Campaigns** keep an audience, template, schedule, and run history in one place—ideal for repeated or automated sends. **Compose** is for ad-hoc messages: no campaign record, no recurring schedule—just immediate (or API-driven) one-off delivery with logging in mail logs.

## Related

* [REST API: Compose](/rest-api/compose.md)
* [Compose in the app](https://www.mailofly.com/user/compose)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.mailofly.com/product-guides/compose.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
