Cloudflare Email Service
cloudflare/skills
Implement or troubleshoot Cloudflare Email Sending and Email Routing integrations and their delivery configuration.
Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing).
$ npx skills add hodgef/apiker --skill cloudflare-email-service -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hodgef/apiker cloudflare-email-service --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/hodgef/apiker.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/cloudflare-email-service .claude/skills/cloudflare-email-service && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "cloudflare-email-service" agent skill from https://github.com/hodgef/apiker/tree/master/.agents/skills/cloudflare-email-service into .claude/skills/cloudflare-email-service/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-email-service", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/hodgef/apiker/tree/master/.agents/skills/cloudflare-email-serviceType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add hodgef/apiker --skill cloudflare-email-service -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hodgef/apiker cloudflare-email-service --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hodgef/apiker.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/cloudflare-email-service .agents/skills/cloudflare-email-service && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "cloudflare-email-service" agent skill from https://github.com/hodgef/apiker/tree/master/.agents/skills/cloudflare-email-service into .agents/skills/cloudflare-email-service/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-email-service", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hodgef/apiker --skill cloudflare-email-service -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hodgef/apiker cloudflare-email-service --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hodgef/apiker.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/cloudflare-email-service .cursor/skills/cloudflare-email-service && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "cloudflare-email-service" agent skill from https://github.com/hodgef/apiker/tree/master/.agents/skills/cloudflare-email-service into .cursor/skills/cloudflare-email-service/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-email-service", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/hodgef/apiker.git --path .agents/skills/cloudflare-email-service--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add hodgef/apiker --skill cloudflare-email-service -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hodgef/apiker cloudflare-email-service --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hodgef/apiker.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/cloudflare-email-service .gemini/skills/cloudflare-email-service && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "cloudflare-email-service" agent skill from https://github.com/hodgef/apiker/tree/master/.agents/skills/cloudflare-email-service into .gemini/skills/cloudflare-email-service/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-email-service", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install hodgef/apiker cloudflare-email-serviceInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add hodgef/apiker --skill cloudflare-email-service -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hodgef/apiker.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/cloudflare-email-service .github/skills/cloudflare-email-service && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "cloudflare-email-service" agent skill from https://github.com/hodgef/apiker/tree/master/.agents/skills/cloudflare-email-service into .github/skills/cloudflare-email-service/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-email-service", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add hodgef/apiker --skill cloudflare-email-service -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hodgef/apiker cloudflare-email-service --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hodgef/apiker.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/cloudflare-email-service .opencode/skills/cloudflare-email-service && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "cloudflare-email-service" agent skill from https://github.com/hodgef/apiker/tree/master/.agents/skills/cloudflare-email-service into .opencode/skills/cloudflare-email-service/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cloudflare-email-service", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
cloudflare-email-serviceSend and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing).
Cloudflare Email Service is an agent skill from hodgef/apiker. Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing). Use when building email sending (Workers binding or REST API), email routing, Agents SDK email handling, or integrating email into any app — Workers, Node.js, Python, Go, etc. Also use for email deliverability, SPF/DKIM/DMARC, wrangler email setup, MCP email tools, or when a coding agent needs to send emails. Even for simple requests like "add email to my Worker" — this skill has critical config details.
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/cli-and-mcp.md`, `references/deliverability.md` and `references/rest-api.md`).
It sits in Backend & APIs, covering Transactional email and REST APIs. It works with Cloudflare, Cloudflare Workers, Model Context Protocol and Python. The repository describes itself as: 🔼 Create Serverless APIs with Cloudflare Workers, Durable Objects & Wrangler. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 444ace2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
wranglernpxnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
developers.cloudflare.comnpmjs.comgithub.comapi.cloudflare.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Cloudflare Email Service loads about 2k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 133 tokens; SKILL.md has 825 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from hodgef/apiker at commit 444ace2, republished under its MIT licence (© hodgef). 825 words, ~1,982 tokens.
.claude/skills/cloudflare-email-service/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.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.
| 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 |
Before writing any email code, verify the basics are in place:
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.send_email in wrangler.jsonc (for Workers)npm ls postal-mime (only needed for receiving/parsing emails)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 |
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: "user@example.com",
from: { email: "welcome@yourdomain.com", name: "My App" },
subject: "Welcome!",
html: "<h1>Welcome!</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.
For apps outside Workers, or within Workers if the user explicitly requests it. Key differences from the Workers binding:
POST https://api.cloudflare.com/client/v4/accounts/{account_id}/email/sending/sendfrom object uses address (not email): { "address": "...", "name": "..." }replyTo is reply_to (snake_case){ delivered: [], permanent_bounces: [], queued: [] } (not messageId)See rest-api.md for curl examples, response format, and error handling.
| 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 user@gmail.com 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 anything@that-domain.com |
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 |
Read the reference that matches your situation. You don't need all of them.
email() handler, forwarding, replying, parsing. For receiving emails.© hodgef, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (references) in .agents/skills/cloudflare-email-service of hodgef/apiker.
Open the folder on GitHubat commit 444ace2
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in hodgef/apiker, which our catalogue first saw on October 7, 2026.
Cloudflare Email Service next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Cloudflare Email Service this skillhodgef/apiker | 127 | 2 repos | ~2k | Automated safety check: Pass | MIT | |
| Cloudflare Email Servicecloudflare/skills | 3k | 2 repos | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Cloudflare Email Serviceswyxio/skills | 175 | — | ~684 | Automated safety check: Pass | MIT | |
| Prepare Cloudflare Production DeploymentLubomirGeorgiev/cloudflare-workers-nextjs-saas-template | 786 | — | ~5.9k | Automated safety check: Notes | MIT | |
| Cloudflare Sandboxsecondsky/claude-skills | 227 | — | ~4.5k | Automated safety check: Pass | MIT | |
| Cloudflare Browser Renderingeinverne/dotfiles | 121 | — | ~4.9k | Automated safety check: Pass | GPL-3.0 |
cloudflare/skills
Implement or troubleshoot Cloudflare Email Sending and Email Routing integrations and their delivery configuration.
swyxio/skills
Implement or debug Cloudflare Email Service sending, Email Routing, or an Agents SDK email handler.
LubomirGeorgiev/cloudflare-workers-nextjs-saas-template
Source-of-truth runbook for preparing this Vinext Cloudflare Workers SaaS template for production deployment.
secondsky/claude-skills
Cloudflare Sandboxes SDK for secure code execution in Linux containers at edge.
einverne/dotfiles
Guide for implementing Cloudflare Browser Rendering - a headless browser automation API for screenshots, PDFs, web scraping, and testing.
databuddy-analytics/Databuddy
Integrate Databuddy analytics using the SDK, REST API, or MCP.
hodgef/apiker
Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), feature flags (Flagship), networking (Tunnel, Spectrum), security (WAF…
hodgef/apiker
Create and review Cloudflare Durable Objects. An agent skill from hodgef/apiker.
hodgef/apiker
Analyzes web performance using Chrome DevTools MCP. An agent skill from hodgef/apiker.
hodgef/apiker
Reviews and authors Cloudflare Workers code against production best practices.
hodgef/apiker
Develop, review, and extend the Apiker library — a framework for building serverless REST APIs on Cloudflare Workers + Durable Objects.
hodgef/apiker
Build AI agents on Cloudflare Workers using the Agents SDK. An agent skill from hodgef/apiker.
Categories
Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing). Cloudflare Email Service is an agent skill from hodgef/apiker. Send and receive transactional emails with Cloudflare Email Service (Email Sending + Email Routing).
Cloudflare Email Service fits situations like: building email sending (Workers binding; agents SDK email handling; integrating email into any app — Workers; email deliverability.
Run `npx skills add hodgef/apiker --skill cloudflare-email-service -a claude-code`. Or copy the skill folder (.agents/skills/cloudflare-email-service in hodgef/apiker) into .claude/skills/cloudflare-email-service in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hodgef/apiker --skill cloudflare-email-service -a codex`. Or copy the skill folder (.agents/skills/cloudflare-email-service in hodgef/apiker) into .agents/skills/cloudflare-email-service in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hodgef/apiker --skill cloudflare-email-service -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cloudflare-email-service, .gemini/skills/cloudflare-email-service, .github/skills/cloudflare-email-service and .opencode/skills/cloudflare-email-service in your project.
Going by SKILL.md and its folder, Cloudflare Email Service needs the command-line tools its instructions call (wrangler, npx and npm). Our summary lists: Node.js.
SKILL.md names 4 domains. In commands or code: developers.cloudflare.com, npmjs.com, github.com and api.cloudflare.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Cloudflare Email Service is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 7.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Cloudflare Email Service: Cloudflare Email Service (cloudflare/skills, 3k stars), Cloudflare Email Service (swyxio/skills, 175 stars), Prepare Cloudflare Production Deployment (LubomirGeorgiev/cloudflare-workers-nextjs-saas-template, 786 stars) and Cloudflare Sandbox (secondsky/claude-skills, 227 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hodgef (a GitHub user) maintains it in hodgef/apiker, which has 127 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on August 20, 2026.
Source: hodgef/apiker on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.