Forward One Email to Multiple People with Cloudflare

5 min read

You set up an email like [email protected], expecting your team to stay in the loop. Then you realise only one person receives those messages.

That’s not a mistake — it’s how Cloudflare Email Routing works by default. It forwards emails to a single destination, not multiple people.

If you need a shared inbox without paying for a full email platform, there’s a practical workaround. You can use a Cloudflare Worker to take incoming emails and send them to several recipients.

This guide walks you through that setup in a way that’s easy to follow, even if you’re not deeply technical.

What This Setup Does

Before jumping in, here’s the simple version of what you’re building:

  • One email address (e.g. [email protected])
  • Incoming emails are intercepted
  • A small script sends copies to multiple people

Think of it like this:

Incoming email → Worker → Multiple inboxes

This setup is ideal for small teams who need shared visibility on incoming emails without managing a full mailbox system.

What You’ll Need

Make sure you have the following ready:

  • A Cloudflare account with your domain added
  • Email Routing enabled for that domain
  • Access to the Workers section in your Cloudflare dashboard

If those are already in place, you’re good to go.

Step 1: Verify the Email Addresses First

This is where most people run into trouble.

Cloudflare will only forward emails to addresses you’ve confirmed. If an address isn’t verified, emails simply won’t arrive — even if everything else is correct.

What to do

  1. Open your Cloudflare dashboard
  2. Go to Email Routing
  3. Select the Destination addresses tab
  4. Click Create address
  5. Add each email you want to receive messages
  6. Check each inbox and confirm the verification email

Every recipient must be verified before it can receive forwarded emails. If you skip this, delivery will fail without warning.

Step 2: Create the Worker That Handles Forwarding

Now you’ll create a small script that sends incoming emails to multiple people.

If you’re not familiar with Workers, think of them as simple scripts that run automatically when something happens — in this case, when an email arrives.

Steps

  1. Go to Workers & Pages in Cloudflare
  2. Click Create Application, then Create Worker
  3. Give it a name (e.g. email-forwarder)
  4. Click Deploy
  5. Open the Worker and click Edit code

You’ll replace the default code with this:

export default {
  async email(message, env, ctx) {
    const recipients = [
      "[email protected]",
      "[email protected]",
      "[email protected]"
    ];

    for (const recipient of recipients) {
      await message.forward(recipient);
    }
  },
};

What this code does

  • Takes every incoming email
  • Loops through your list of recipients
  • Sends a copy to each one

What you need to change

  • Replace the example email addresses with your own verified ones

Only use email addresses you’ve already verified in Step 1. Unverified addresses will not receive anything.

Once done, click Deploy again to save your changes.

Step 3: Tell Cloudflare When to Use the Worker

The Worker is ready, but Cloudflare still needs to know when to use it.

Steps

  1. Go back to Email Routing
  2. Open Routing rules (or Custom addresses)
  3. Click Create rule

Now configure the rule:

  • Trigger: Enter the email address you want to use (e.g. [email protected])

  • Action: Select Send to Worker Choose the Worker you created

  • Click Save

That’s it.

Any email sent to your chosen address will now be forwarded to everyone in your list.

Common Pitfalls to Avoid

Emails not arriving

  • Check that all recipients are verified
  • Confirm the Worker is selected in your routing rule

Adding new recipients later

If you update the code with a new email address:

  1. Add it in Destination addresses
  2. Verify it
  3. Then update your Worker

Skipping verification will break delivery for that recipient.

Costs and Limits

Cloudflare Email Routing itself is free. The Worker introduces some limits.

  • Free allowance: up to 100,000 executions per day
  • Beyond that: paid plan starts at a small monthly fee

For most small teams, the free tier is more than enough.

Important Limitation: Replies

This setup only handles incoming emails.

If someone replies:

  • The reply goes directly to the individual recipient
  • It does not come back through your shared address

What this means in practice

  • Your team won’t automatically see each other’s replies
  • Conversations won’t stay centralised

If you need that behaviour, you’ll need:

  • A shared mailbox (e.g. Google Workspace or Outlook), or
  • A system that allows sending “from” your domain

When This Setup Makes Sense

This approach works well if you:

  • Want multiple people to see incoming emails
  • Don’t need a full shared inbox system
  • Prefer a simple, low-cost setup

It may not be the right fit if you:

  • Need shared replies
  • Manage high volumes of email
  • Require ticketing or tracking

Further thoughts…

This setup fills a specific gap in Cloudflare’s Email Routing. It gives you basic shared visibility without adding complexity or cost.

If you keep the limitations in mind — especially around replies — it’s a practical solution for small teams.

If you find yourself needing more control over conversations, that’s usually the point where a dedicated email platform becomes worth considering.