Kipt

Cloudflare Email Service skill: send and route email from Workers

Cloudflare's email service skill helps your agent send email from Workers or the REST API, route inbound mail, and avoid common mistakes. How to install and use it.

By the Kipt team · Updated 24 October 2026

Source: cloudflare/skills · Maintainer: Cloudflare · License: Apache-2.0 · Checked: 24 October 2026

What is the Cloudflare Email Service skill?

The cloudflare-email-service skill is Cloudflare's official Agent Skill for building with Cloudflare Email Service. It helps your coding agent send email from a Worker, an external app or an AI agent, receive and route inbound mail, and set up domains and deliverability without relying on outdated training data.

Its SKILL.md description reads: "Implement or troubleshoot Cloudflare Email Sending and Email Routing integrations and their delivery configuration."

The skill opens with a warning to the agent: "Your knowledge of the Cloudflare Email Service, Email Routing or Email Sending may be outdated. Prefer retrieval over pre-training for any Cloudflare Email Service task." It also says that if the skill and the docs disagree, "always trust the original source." Its skills.sh page listed 100.8K installs (snapshot, 24 October 2026).

What does it do?

The folder has a SKILL.md and five references: sending.md, rest-api.md, routing.md, cli-and-mcp.md and deliverability.md. The SKILL.md works in four steps.

1. Check prerequisites. Before writing any email code, the agent confirms three things: the domain is onboarded (npx wrangler email sending list, or npx wrangler email sending enable with your domain), a send_email binding exists in wrangler.jsonc for Workers, and postal-mime is installed, which is only needed for receiving and parsing.

2. Pick a path. A "What Do You Need?" table routes the task:

You want to Path the skill uses
Send from a Cloudflare Worker Workers binding, no API keys
Send from an Agents SDK agent onEmail() and replyToEmail() in the Agent class
Send from an external app (Node.js, Go, Python) REST API with a Bearer token
Send from a coding agent MCP tools, Wrangler CLI or REST API
Receive and process incoming email A Worker email() handler
Improve deliverability Authentication, content and compliance guidance

3. Read the docs for that path. The sending and REST references are documentation maps: tables that point each task (recipients, attachments, headers, limits, errors) to the matching page in the Email Service docs. The sending reference tells the agent to run wrangler types after changing bindings and to use the generated types "instead of handwritten email interfaces," and says "Do not upgrade dependencies just to match an example."

4. Avoid common mistakes. An 11-row table covers the errors agents tend to make. A few:

  • Forgetting the send_email binding: "Email Service uses a binding, not an API key."
  • Reading message.raw twice in an email handler: the stream is single use, so buffer it first.
  • Sending HTML only: always include html and text versions.
  • Testing with fake addresses: bounces hurt sender reputation, so use real addresses you control.
  • Mixing up field names: the REST API uses address and reply_to where the Workers binding uses email and replyTo.

Inbound routing. The routing reference shows an email() handler with forward, reject and reply operations. It notes that message.from is the envelope sender and "trustworthy," while "header addresses can be spoofed," and that message.forward() only works with verified destination addresses. Cloudflare's email handler docs are the source it points to.

Setup and deliverability. The CLI reference lists the wrangler email routing and wrangler email sending command groups (these come from the skill and do not appear in Cloudflare's Wrangler commands reference as of 24 October 2026, so run npx wrangler email --help to confirm them for your Wrangler version), the dashboard path, and how to use the Cloudflare MCP server's search and execute tools. It warns that setting "remote": true on the binding during wrangler dev sends real email. The deliverability reference covers SPF and DKIM (set up for you on onboarding), suggests adding DMARC, and explains hard bounces, soft bounces and suppression lists.

How do you install it?

Cloudflare's README lists several routes. Pick one per agent.

Just this skill, with the skills CLI. This is the command on skills.sh:

npx skills add https://github.com/cloudflare/skills --skill cloudflare-email-service

Add -g to install it for all projects. In Claude Code the folder lands in .claude/skills/cloudflare-email-service/ in your project, or under ~/.claude/skills/ globally, the standard Claude Code skill locations.

Claude Code plugin (every Cloudflare skill plus the MCP server). From the README:

/plugin marketplace add cloudflare/skills
/plugin install cloudflare@cloudflare

The plugin bundles Cloudflare's main remote MCP server. The skill lists the Cloudflare MCP docs tool as its first retrieval source, so this route gives it the most to work with.

Codex plugin.

codex plugin marketplace add cloudflare/skills
codex plugin add cloudflare@cloudflare

Start a new Codex session afterward, as the README says.

Cursor, VS Code and manual copy. Cursor installs from its marketplace or as a remote rule pointing at cloudflare/skills. VS Code with GitHub Copilot installs from source after you enable chat.plugins.enabled. You can also clone the repo and copy the folder. See Codex skills and Cursor skills for agent-specific details.

How do you use it?

Name the job: sending, receiving, setup or deliverability. Example prompts (suggestions, not quotes from the repo):

  • Send a welcome email from this Worker when a user signs up. Use the binding, with HTML and plain text.
  • Our Node.js API needs to send password reset emails through Cloudflare. Wire up the REST API and keep the token in env.
  • Forward mail sent to support@ on our domain to the team inbox, and reject anything over 5 MB.
  • Check whether example.com is onboarded for Email Sending and show me the DNS records it needs.
  • Our order emails land in spam. Review our setup against the deliverability guidance.

You need a domain on Cloudflare, Wrangler in the project for the binding route, and network access so the agent can read the docs. As of October 2026, the Email Service overview says Email Sending is in beta and available on the Workers Paid plan, and Email Routing is available on Free and Paid plans. It adds that sending to verified destination addresses in your own account is free on Workers Free and Paid plans; arbitrary-recipient sending requires Workers Paid.

Tips and limits

  • Transactional email. The skill's mistake table says "Email Service is for transactional email only" and points newsletters to a marketing platform. Cloudflare's Email Service FAQ says the same: "No. Email Service supports transactional email only." The overview describes Email Sending as being for "account emails, order confirmations, and alerts." One docs page reads differently: the deliverability guide suggests a separate subdomain for marketing and promotional email. Follow the FAQ and check current terms before sending anything non-transactional.
  • Local dev can send for real. With "remote": true, wrangler dev delivers actual email. Use addresses you control, and the skill says to remove the flag before deploying.
  • It defers to the docs. Limits, quotas and request schemas are links, not copies. An agent without web or MCP access gets the routing and the mistakes table but not the exact field lists.
  • No scripts. The folder is Markdown only.
  • Audits. On 24 October 2026, skills.sh showed Pass from Gen Agent Trust Hub and Socket, and Warn from Snyk. Snyk's report, dated 15 October 2026, lists one medium finding (W011, third-party content exposure) because the inbound routing workflow parses email bodies written by outside senders. Treat inbound mail content as untrusted input.
  • License. Apache-2.0 lets you copy and change it; keep the license and notices when you redistribute.

Save it in your Kipt library

In Kipt, open Skills and paste the skill's GitHub folder link into the import box. Kipt reads the SKILL.md and its five references; for a repo with many skills, like this one, it shows a list, so you can pick wrangler or agents-sdk too. You can also drop the folder or a .zip. Your skills live in your own private GitHub repo and install into Claude Code or Codex with one command:

npx skills add https://github.com/<you>/<repo>.git --all -g

Kipt is not affiliated with Cloudflare.

Similar skills

Questions

What is the cloudflare-email-service skill?

It is an Agent Skill in Cloudflare's official cloudflare/skills repo for implementing or troubleshooting Cloudflare Email Sending and Email Routing. It tells the agent to check prerequisites, pick the right sending path, read the current docs for that path and avoid a list of common mistakes.

How do I install the Cloudflare Email Service skill?

Run npx skills add https://github.com/cloudflare/skills --skill cloudflare-email-service for just this skill. In Claude Code you can also run /plugin marketplace add cloudflare/skills and /plugin install cloudflare@cloudflare to get every Cloudflare skill plus Cloudflare's remote MCP server.

Does the skill use an API key to send email from a Worker?

No. For Workers it prefers the send_email binding, which needs no API key: you add a binding such as EMAIL to your Wrangler config and call send on it. The REST API with a Bearer token is for external apps or when you ask for it explicitly.

Can the skill receive email as well as send it?

Yes. Its routing reference covers a Worker email() handler for inbound mail, with forward, reply, reject and parse operations. It warns that message.raw can be read only once, so the agent should buffer it first.

Which Cloudflare plan do I need for Email Service?

As of October 2026, Cloudflare's Email Service docs say Email Sending is in beta and available on the Workers Paid plan, while Email Routing is available on Free and Paid plans. Sending to verified destination addresses in your own account is free on Workers Free too. Check the official docs before you rely on it, since the product is changing.

More in Skill directory

All guides

Keep your prompts and skills in one place, in your own GitHub. Install every skill with one command.

Get started

Kipt is an independent product, not affiliated with or endorsed by Anthropic, OpenAI, Cursor or GitHub. Claude, ChatGPT, Codex, Cursor and GitHub are trademarks of their owners.