← Back to Skills Marketplace
creativerezz

Cloudflare Email Service

by Reza · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
22
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install cloudflare-email-service
Description
Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing). Use when building email sending (Workers binding or REST...
README (SKILL.md)

Cloudflare Email Service

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.

Cloudflare Email Service lets you send transactional emails and route incoming emails, all within the Cloudflare platform. Your knowledge of this product may be outdated — it launched in 2025 and is evolving rapidly. Prefer retrieval over pre-training for any Email Service task.

If there is any discrepancy between this skill and the sources below, always trust the original source. The Cloudflare docs, REST API spec, @cloudflare/workers-types, and Agents SDK repo are the source of truth. This skill is a convenience guide — it may lag behind the latest changes. When in doubt, retrieve from the sources below and use what they say.

Retrieval Sources

Source How to retrieve Use for
Cloudflare docs cloudflare-docs search tool or URL https://developers.cloudflare.com/email-service/ API reference, limits, pricing, latest features
REST API spec https://developers.cloudflare.com/api/resources/email_sending OpenAPI spec for the Email Sending REST API
Workers types https://www.npmjs.com/package/@cloudflare/workers-types Type signatures, binding shapes
Agents SDK docs Fetch docs/email.md from https://github.com/cloudflare/agents/tree/main/docs Email handling in Agents SDK

FIRST: Check Prerequisites

Before writing any email code, verify the basics are in place:

  1. Domain onboarded? Run npx wrangler email sending list to see which domains have email sending enabled. If the domain isn't listed, run npx wrangler email sending enable userdomain.com or see cli-and-mcp.md for full setup instructions.
  2. Binding configured? Look for send_email in wrangler.jsonc (for Workers)
  3. postal-mime installed? Run npm ls postal-mime (only needed for receiving/parsing emails)

What Do You Need?

Start here. Find your situation, then follow the link for full details.

I want to... Path Reference
Send emails from a Cloudflare Worker Workers binding (no API keys needed) sending.md
Send emails from an AI agent built with Cloudflare Agents SDK onEmail() + replyToEmail() in Agent class sending.md
Send emails from an external app or agent (Node.js, Go, Python, etc.) REST API with Bearer token rest-api.md
Send emails from a coding agent (Claude Code, Cursor, Copilot, etc.) MCP tools, wrangler CLI, or REST API cli-and-mcp.md
Receive and process incoming emails (Email Routing) Workers email() handler routing.md
Set up Email Sending or Email Routing wrangler email sending enable / wrangler email routing enable, or Dashboard cli-and-mcp.md
Improve deliverability, avoid spam folders Authentication, content, compliance deliverability.md

Quick Start — Workers Binding

Add the binding to wrangler.jsonc, then call env.EMAIL.send(). The from domain must be onboarded via npx wrangler email sending enable yourdomain.com.

// wrangler.jsonc
{ "send_email": [{ "name": "EMAIL" }] }
const response = await env.EMAIL.send({
  to: "[email protected]",
  from: { email: "[email protected]", name: "My App" },
  subject: "Welcome!",
  html: "\x3Ch1>Welcome!\x3C/h1>",
  text: "Welcome!",
});

The binding is recommended for Workers — no API keys needed. If a user specifically requests the REST API from within a Worker (e.g., they already have an API token workflow), that works too — see rest-api.md.

See sending.md for the full API, batch sends, attachments, custom headers, restricted bindings, and Agents SDK integration.

Quick Start — REST API

For apps outside Workers, or within Workers if the user explicitly requests it. Key differences from the Workers binding:

  • Endpoint: POST https://api.cloudflare.com/client/v4/accounts/{account_id}/email/sending/send
  • from object uses address (not email): { "address": "...", "name": "..." }
  • replyTo is reply_to (snake_case)
  • Response returns { delivered: [], permanent_bounces: [], queued: [] } (not messageId)

See rest-api.md for curl examples, response format, and error handling.

Common Mistakes

Mistake Why It Happens Fix
Forgetting send_email binding in wrangler config Email Service uses a binding, not an API key Add "send_email": [{ "name": "EMAIL" }] to wrangler.jsonc
Sending from an unverified domain Domain must be onboarded onto Email Sending before first send Run wrangler email sending enable yourdomain.com or onboard in Dashboard
Reading message.raw twice in email handler The raw stream is single-use — second read returns empty Buffer first: const raw = await new Response(message.raw).arrayBuffer()
Missing text field (HTML only) Some email clients only show plain text; also helps spam scores Always include both html and text versions
Using email for marketing/bulk sends Email Service is for transactional email only Use a dedicated marketing email platform for newsletters and campaigns
Forwarding to unverified destinations message.forward() only works with verified addresses Run wrangler email routing addresses create [email protected] or add in Dashboard
Testing with fake addresses Bounces from non-existent addresses hurt sender reputation Use real addresses you control during development
Hardcoding API tokens in source code Tokens in code get committed and leaked Use environment variables or Cloudflare secrets
Ignoring the from domain requirement The from address must use a domain onboarded to Email Service Verify the domain first, then send from [email protected]
Using email key in REST API from object REST API uses address not email for from object Use { "address": "...", "name": "..." } for REST, { "email": "...", "name": "..." } for Workers
Using replyTo in REST API REST API uses snake_case field names Use reply_to for REST API, replyTo for Workers binding

References

Read the reference that matches your situation. You don't need all of them.

Usage Guidance
Install this only if you want an agent to help configure or use Cloudflare Email Service. Before allowing commands or API calls, confirm the sender, recipients, content, attachments, routing changes, and whether a message will actually be sent. Use least-privilege Cloudflare tokens, keep them in secrets or environment variables, avoid logging them, and do not send sensitive content unless that is explicitly intended.
Capability Tags
requires-oauth-tokenrequires-sensitive-credentials
Capability Assessment
Purpose & Capability
The artifacts consistently cover Cloudflare Email Service setup, transactional sending, routing, deliverability, REST API use, Wrangler, and MCP examples, matching the stated purpose.
Instruction Scope
The trigger description is broad and includes coding agents sending emails, but the instructions remain tied to Cloudflare email tasks and do not introduce unrelated or hidden behavior.
Install Mechanism
The package contains Markdown guidance and reference files only; there are no executable scripts, install hooks, obfuscation, or background components.
Credentials
Cloudflare API tokens, outbound email, forwarding, routing changes, and suppression-list management are sensitive but proportionate for this integration; the skill includes some token and test-address guidance.
Persistence & Privilege
The skill does not install persistence or request privilege escalation, though it provides purpose-aligned examples for Durable Object email storage and Cloudflare account or routing mutations.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install cloudflare-email-service
  3. After installation, invoke the skill by name or use /cloudflare-email-service
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of Cloudflare Email Service skill. - Provides guidance for sending and receiving transactional emails using Cloudflare Email Service via Workers binding, REST API, and Email Routing. - Includes setup instructions, common pitfalls, and links to authoritative references. - Covers integration points for Workers, Agents SDK, and external apps (Node.js, Python, Go, etc.). - Offers troubleshooting tips for onboarding, domain verification, and email deliverability. - Emphasizes always retrieving latest information from Cloudflare documentation and related sources.
Metadata
Slug cloudflare-email-service
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Cloudflare Email Service?

Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing). Use when building email sending (Workers binding or REST... It is an AI Agent Skill for Claude Code / OpenClaw, with 22 downloads so far.

How do I install Cloudflare Email Service?

Run "/install cloudflare-email-service" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Cloudflare Email Service free?

Yes, Cloudflare Email Service is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Cloudflare Email Service support?

Cloudflare Email Service is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Cloudflare Email Service?

It is built and maintained by Reza (@creativerezz); the current version is v1.0.0.

💬 Comments