# FlareMail — agent bundle

# FlareMail

A polished web inbox for [Cloudflare Email Routing](https://developers.cloudflare.com/email-routing/) and Workers. Read, compose, search, and manage edge-powered mail without standing up IMAP, wrestling SMTP, or living in forwarding hacks.

- **Web app:** [https://app.sendwithflare.com](https://app.sendwithflare.com)
- **Start:** [https://sendwithflare.com/onboarding/](https://sendwithflare.com/onboarding/)
- **Help:** [https://sendwithflare.com/help/](https://sendwithflare.com/help/)
- **Pricing:** [pricing.md](https://sendwithflare.com/pricing.md)

## Who it is for

Founders, operators, and developers who already trust Cloudflare for DNS or Workers and want custom-domain email that feels like a normal inbox — not another forward-to-Gmail workaround.

## What you get

- Web inbox in the browser (no installer)
- Cloudflare Email Routing inbound via the `flaremail-api` Worker
- Compose and send from your domain
- Folders, archive, drafts, sent mail, search
- Unread tracking, starred messages, labels and filter rules
- Attachments (download and preview)
- Multiple accounts and aliases
- Light / dark / system themes, density and font size
- Signatures, plain text or HTML sending, undo send
- Keyboard shortcuts (including a Gmail-style preset)
- External image blocking and tracking-pixel detection
- AI email summaries and writing polish (optional)
- Local email cache (works offline)
- No IMAP server and no SMTP wrangling

## Pricing

- **First domain:** free
- **Each additional domain:** $9.99/mo via Paddle; cancel anytime

See [pricing.md](https://sendwithflare.com/pricing.md).

## How it is built

Browser client → JWT session → Cloudflare Worker API. D1 stores mail metadata; R2 stores message bodies and attachments. Inbound mail arrives through Email Routing to the Worker. Outbound mail uses Cloudflare Email Sending for provisioned domains, with Resend as the path to arbitrary recipients.

## Not the right fit

FlareMail is not a generic hosted mailbox for people who do not want to use Cloudflare, and not an enterprise shared-inbox platform.

## Next steps

1. Create a free account: [onboarding](https://sendwithflare.com/onboarding/)
2. Open the app: [app.sendwithflare.com](https://app.sendwithflare.com)
3. Follow the [setup guide](https://sendwithflare.com/help/setup-guide/)

---

# FlareMail pricing

FlareMail is **free for your first domain**. Additional sending/receiving domains are **$9.99 per domain per month**.

## Plans

| What | Price |
| --- | --- |
| First domain (send + receive on Cloudflare) | Free |
| Each extra domain | $9.99/mo |
| Cancel extra domains | Anytime via Paddle |

There is no separate “pro” SKU. The hosted web inbox, help center, and core features (read, compose, folders, search, attachments, labels, privacy controls) are included.

## What “a domain” means

A domain is a sending/receiving domain you connect in the app (for example `yourbrand.com`). Your first one is included. Checkout unlocks when you add a second domain.

## How to start

1. Create an account at [sendwithflare.com/onboarding/](https://sendwithflare.com/onboarding/)
2. Open [app.sendwithflare.com](https://app.sendwithflare.com)
3. Add your first domain in **Settings → Sending domains** — see the [add a sending domain](https://sendwithflare.com/help/add-a-sending-domain/) guide

## FAQ

**Is the first domain really free?** Yes. No trial clock.

**Do I pay for the web app itself?** No. You pay only when you add extra domains.

**Can I self-host?** Yes. The backend is a Cloudflare Worker. See [Self-host the backend](https://sendwithflare.com/help/self-host-the-backend/).

---

# Start your FlareMail setup

Create a free account, then open the app to connect your first domain. Your first domain is free — additional domains are $9.99/mo via Paddle checkout.

HTML (with the signup form): [https://sendwithflare.com/onboarding/](https://sendwithflare.com/onboarding/)

## Steps

1. **Create a free account**  
   Your hosted mailbox, onboarding state, and future app sessions are tied to this account. Use a password of at least 12 characters.

2. **Add your first domain free**  
   Connect Cloudflare in the app and provision sending + receiving for one domain at no charge. See [Add a sending domain](https://sendwithflare.com/help/add-a-sending-domain/).

3. **Add more domains anytime**  
   Extra domains are $9.99/mo each through Paddle when you are ready to expand.

## After signup

The app is at [https://app.sendwithflare.com](https://app.sendwithflare.com). Full walkthrough: [Setup guide](https://sendwithflare.com/help/setup-guide/).

---

# Help & Setup Guide

Short, practical guides — from creating your account to routing Cloudflare mail into a private inbox.

HTML: https://sendwithflare.com/help/

## Getting started

- [FlareMail setup guide](/help/setup-guide/index.md): From free signup to a working inbox in five steps — open the app, sign in, and connect it to Cloudflare.
- [Using multiple accounts](/help/multiple-accounts/index.md): Run several mailboxes side by side — each account connects to its own Worker, with its own aliases and a default for sending.

## Mail flow

- [Add a sending domain](/help/add-a-sending-domain/index.md): Add one of your domains right inside the app — FlareMail uses your Cloudflare account to onboard sending, write the DNS, and route replies back to you. No leaving the app.
- [Connect Cloudflare Email Routing](/help/connect-cloudflare-email-routing/index.md): The one step outside the app: point your domain's incoming mail at the FlareMail Worker so messages reach your inbox.
- [Sending from your domain](/help/sending-from-your-domain/index.md): Send to anyone — not just verified addresses — by connecting Resend so outbound mail leaves through a reliable provider.

## Features

- [Labels & filter rules](/help/labels-and-rules/index.md): Color-code your mail with labels, then automate sorting with rules that run as soon as a message arrives.
- [Compose tools](/help/compose-tools/index.md): Send Later, Undo Send, and reusable templates — compose with timing, a safety net, and less retyping.
- [AI assist](/help/ai-assist/index.md): Polish drafts, summarize threads, and write in your voice — with FlareMail’s managed AI or your own API key.
- [Webhooks](/help/webhooks/index.md): Push inbound, outbound, and failure events to your own URL — with secrets, tests, and delivery history.
- [Connect an AI bot with MCP](/help/mcp-bots/index.md): Give Cursor, Claude, ChatGPT, Grok, or a custom agent a key so it can draft, send, and read mail in your FlareMail inbox.
- [Setup Doctor](/help/setup-doctor/index.md): One-click health check for the Worker, D1, R2, outbound sending, and Cloudflare credentials.
- [Contacts](/help/contacts/index.md): Browse people FlareMail already knows from your senders, recipients, and sending addresses — then compose in one click.

## Advanced

- [Privacy & tracking protection](/help/privacy-and-tracking/index.md): Opening an email shouldn't tell the sender where you are or when you read it. Here's what FlareMail blocks, and how to tune it.
- [Admin settings](/help/admin-settings/index.md): See how AI agents and crawlers discover FlareMail — keywords, agents, and recent hits on sendwithflare.com.
- [Self-host the backend](/help/self-host-the-backend/index.md): Technical users can run the FlareMail Worker on their own Cloudflare account with a single provisioning script.
- [Troubleshooting](/help/troubleshooting/index.md): Quick fixes for the handful of things that can go wrong: a blank window, “Not connected”, an expired session, or missing mail.

---

# FlareMail setup guide

From free signup to a working inbox in five steps — open the app, sign in, and connect it to Cloudflare.

6 min read. HTML: https://sendwithflare.com/help/setup-guide/

FlareMail is a web email client that turns **Cloudflare Email Routing** into a fast, private inbox — no IMAP or SMTP server to run. This guide takes you from signup to reading your first message. It takes about five minutes, and only one step happens outside the app.

*The whole setup, start to finish.*

## 1. Create your free account

FlareMail is **FREE for your first domain**. Additional domains are **$9.99/mo** via Paddle. Head to the [onboarding page](/onboarding/), create your account with the email address where you want setup updates sent, and open the app. When you add a second domain, checkout unlocks that subscription.

> **TIP:** Use a password of at least 12 characters — the same credentials sign you in to the web app later.

## 2. Open the web app

FlareMail runs in your browser at [app.sendwithflare.com](https://app.sendwithflare.com) — no installer to download. Bookmark it like any other tool you use daily.

## 3. Sign in

Open FlareMail and sign in with the account you just created. New here in the app? Use the **Create account** tab; otherwise switch to **Log in**. Signing in generates your session token and fills it in automatically — you never copy or paste it by hand.

*The app's sign-in screen. Signup needs a 12+ character password.*

## 4. Confirm the connection

Open **Settings** (press `⌘` `,`) and choose **Connection**. The *Worker API URL* is already pointed at your FlareMail backend, and the *Session token* was filled in when you signed in. A green dot and **Connected** means you're good to go.

*Settings → Connection. The status dot turns green when the app reaches your Worker.*

> **NOTE:** Running more than one mailbox? Skip the legacy Connection panel and use the [Accounts](/help/multiple-accounts/) section instead — each account points at its own Worker.

## 5. Route your mail in

This is the one step outside the app. In your Cloudflare dashboard, add an **Email Routing** rule that delivers your address to the `flaremail-api` Worker. Full walkthrough here: [Connect Cloudflare Email Routing](/help/connect-cloudflare-email-routing/). Once the rule is live, send yourself a test message — it'll land in FlareMail within seconds.

## You're set

That's it. Your inbox loads instantly from a local cache (even offline), tracking pixels are blocked by default, and you can compose, label, and filter mail right away. Want to send to *anyone*, not just verified addresses? See [Sending from your domain](/help/sending-from-your-domain/).

---

# Add a sending domain

Add one of your domains right inside the app — FlareMail uses your Cloudflare account to onboard sending, write the DNS, and route replies back to you. No leaving the app.

4 min read. HTML: https://sendwithflare.com/help/add-a-sending-domain/

If your domain is on **Cloudflare**, you can add it as a sending domain without leaving FlareMail. The app talks to your Cloudflare account to onboard the domain for **Email Sending**, write the required **SPF, DKIM, and DMARC** records for you, and set up inbound **Email Routing** so replies land back in your inbox. Once it's verified, you send as any address on that domain — and your recipients see your domain's name, not “FlareMail”.

> **NOTE:** Your domain must already be on the same Cloudflare account your FlareMail backend is authorized for. Cloudflare hosts the DNS, so FlareMail can add every record automatically — you never copy or paste DNS.

## Add the domain

1. **Open Sending domains** — In the app, open **Settings** (`⌘` `,`) → **Sending domains**.
2. **Enter your domain** — Under **Add a sending domain**, type your domain, e.g. `yourbrand.com`. FlareMail suggests a title-cased *sender name* from it (so `docu-coach.com` becomes “Docu Coach”). Edit the name if you like — it's what recipients see.
3. **Click Add domain** — FlareMail onboards the domain for Email Sending, and Cloudflare adds the SPF/DKIM/DMARC records automatically. It also enables Email Routing and points the catch-all at the FlareMail worker so replies come back to you.
4. **Watch the status** — The domain shows **Verified** once sending is ready and **Receiving on** once inbound routing is set up. For Cloudflare-hosted domains this is typically instant. If it's still pending, hit **Verify** to re-check.

> **TIP:** The sender name is per-domain and editable. It's the friendly name in the “From” of every message you send from that domain — pick how you want your brand to appear.

## Add sender addresses

Under a verified domain, add the specific addresses you want to send from — `hello@`, `support@`, `you@`, and so on. Each one gets the domain's sender name by default, and you can mark one as your **default**. These are the addresses that appear in the composer's “From” menu.

## Send from your domain

When you compose, pick the sender from the **From** menu at the top of the message. Mail sent from a Cloudflare-provisioned domain goes out through **Cloudflare Email Sending** and arrives showing your domain's name — e.g. “Docu Coach <hello@docu-coach.com>”. No more “FlareMail” in the sender line.

## Receiving replies

Because adding the domain also sets a catch-all route to the `flaremail-api` worker, any address on the domain can receive mail — replies to the addresses you send from land straight in FlareMail. You don't need the separate [manual routing](/help/connect-cloudflare-email-routing/) step for these domains.

> **WARNING:** Setting up the backend? The worker's Cloudflare API token needs **DNS · Edit**, **Email Sending · Edit**, **Email Routing Rules · Edit**, **Email Routing Addresses · Edit**, and **Zone · Read**. If a permission is missing, adding a domain returns a clear message telling you which one — sending can still succeed even if routing (receiving) isn't authorized yet.

Prefer to wire routing by hand, or sending through a third-party provider? See [Connect Cloudflare Email Routing](/help/connect-cloudflare-email-routing/) and [Sending from your domain](/help/sending-from-your-domain/). If a domain won't verify, check [Troubleshooting](/help/troubleshooting/).

---

# Connect Cloudflare Email Routing

The one step outside the app: point your domain's incoming mail at the FlareMail Worker so messages reach your inbox.

4 min read. HTML: https://sendwithflare.com/help/connect-cloudflare-email-routing/

FlareMail receives mail through **Cloudflare Email Routing**. Instead of forwarding to another mailbox, you route your address to the `flaremail-api` Worker, which parses each message and stores it for the app. You only do this once per address.

> **NOTE:** You need a domain already added to Cloudflare with Email Routing enabled (Cloudflare verifies your MX records for you).

## Add the routing rule

1. **Open Email Routing** — In the Cloudflare dashboard, select your domain and open **Email Routing → Routes**.
2. **Create a custom address** — Under **Custom addresses**, click **Create address** and enter the address you want to receive, e.g. `you@yourdomain.com`.
3. **Send it to a Worker** — Set the action to **Send to a Worker** and pick `flaremail-api` as the destination.
4. **Save** — Save the rule. Cloudflare now hands every message for that address to FlareMail.

*An Email Routing rule sending a custom address to the flaremail-api Worker.*

## Test it

From any other inbox, email your newly routed address. It should appear in FlareMail within a few seconds. If it doesn't, give it a minute (DNS and routing can lag briefly), then check [Troubleshooting](/help/troubleshooting/).

> **TIP:** Routing only controls *incoming* mail. To send from your domain — especially to recipients who aren't Cloudflare destinations — set up [outbound sending](/help/sending-from-your-domain/).

---

# Sending from your domain

Send to anyone — not just verified addresses — by connecting Resend so outbound mail leaves through a reliable provider.

4 min read. HTML: https://sendwithflare.com/help/sending-from-your-domain/

Out of the box, FlareMail can send through Cloudflare, but Cloudflare only delivers to addresses that are verified Email Routing destinations. To email **anyone**, connect [Resend](https://resend.com) — when a Resend API key is present, the Worker uses it automatically and falls back to Cloudflare if needed.

## Set it up

1. **Create a Resend account** — Sign up at resend.com.
2. **Verify your sending domain** — Add your domain in Resend and create the DNS records it gives you. The domain must match the one you send from (e.g. verify `yourdomain.com` to send from `you@yourdomain.com`).
3. **Create an API key** — Generate a Resend API key for the verified domain.
4. **Store it on the Worker** — Save the key as a Worker secret. It takes effect live, with no redeploy:

```
wrangler secret put RESEND_API_KEY
```

> **WARNING:** Your sending domain must match your account address's domain. If they differ, Resend will reject the message.

Once the key is set, compose and send as normal — your messages now leave through Resend and reach any recipient.

---

# Troubleshooting

Quick fixes for the handful of things that can go wrong: a blank window, “Not connected”, an expired session, or missing mail.

3 min read. HTML: https://sendwithflare.com/help/troubleshooting/

## The app window is blank

Hard-refresh the page (`⌘` `Shift` `R` / `Ctrl` `Shift` `R`) or open [app.sendwithflare.com](https://app.sendwithflare.com) in a private window. If you're developing locally, start the web app with `npm run dev:web` from the repo root.

## It says “Not connected”

Open **Settings → Connection** and confirm the *Worker API URL* is set and the *Session token* is filled in. If the token is empty, sign in again to regenerate it. The status dot turns green once the app can reach your Worker.

## “Your session expired”

Tokens don't last forever. When a session expires the app asks you to sign in again — just log back in and your token refreshes automatically.

## A test email never arrived

- Double-check the [Email Routing rule](/help/connect-cloudflare-email-routing/) points at the `flaremail-api` Worker.
- Give it a minute — routing can lag right after you create a rule.
- Confirm Email Routing is enabled and your MX records are verified in Cloudflare.
