saasmail

by choyiny

The centralized inbox for SaaS teams, self-hosted on Cloudflare Workers. Requires a domain on Cloudflare with Email Routing and Workers Paid plan. Supports inbound email via Cloudflare Email Routing and outbound via Cloudflare Email Sending, Resend, Bavimail, or Postmark. Configuration of API keys and email bindings is done via environment variables and Cloudflare worker bindings.

Business & enterprisestdioCommunity

Repository-wide counts · Cached 2026-08-30

Overview

The saasmail MCP server is a publicly available project. Review the upstream repository for installation instructions, supported tools, compatibility, permissions, and current maintenance status.

Configuration

Configuration, transport, authentication, and runtime requirements vary by project. Open the repository before connecting and use the smallest set of credentials and permissions required.

Open the saasmail repository to read the latest documentation.

KEEP EXPLORING

Compare source, connection, and authentication details before choosing an implementation.

View the complete category

MCP Atlassian

sooperset

Community

Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Supports Cloud and Server/Data Center deployments. Distributed as a Docker image. Configure via environment variables for authentication and filtering.

Google Workspace MCP Server

Taylor Wilsdon

Community

一款生产就绪的 MCP 服务器,集成了 Google Workspace 服务(日历、云端硬盘、Gmail、文档、表格、幻灯片、表单、聊天)与 AI 助手。需要在项目根目录的 client_secret.json 文件中配置 Google Cloud OAuth 2.0 凭据,并设置环境变量以指定服务器的基础 URI 和端口。

Meta Ads MCP

nictuku

Community

Model Context Protocol (MCP) server for interacting with Meta Ads API. Enables AI models to access, analyze, and manage Meta advertising campaigns through a standardized interface. Requires PIPEBOARD_API_TOKEN environment variable for authentication with Pipeboard service.

Google 广告 MCP

cohnen

Community

用于模型上下文协议(MCP)的 Google 广告 API 集成。需要通过环境变量或 JSON 配置文件(详见 README)配置 Google 广告 API 凭据。

FROM THE SOURCE

Repository README

Build-time snapshot · Retrieved 2026-10-05

View original

saasmail

Tests E2E CodeQL Latest release License: Apache 2.0 Cloudflare Workers

The centralized inbox for SaaS teams. One unified timeline per customer — marketing, notifications, and support emails collapsed into a single view, per person.

Every interaction with a customer matters, and context compounds. saasmail pulls the promo blast, the billing receipt, and the support thread into the same conversation, so anyone on your team can respond with the full history already in hand.

Self-hosted on Cloudflare Workers. Receive with Cloudflare Email Workers. Send with Cloudflare Email Sending, Resend, Bavimail, or Postmark.

saasmail-new

Who this is for

SaaS teams that want a self-hosted email stack on Cloudflare Workers — one shared, per-customer inbox for marketing, transactional, and support mail — without renting a VM or operating a traditional mail server. If you have a domain, a Cloudflare account, and want to own your customer email data for ~$5/month, this is for you.

Quickstart

Prerequisites: a domain on Cloudflare with Email Routing available, the Workers Paid plan, and Node.js v18+.

The fastest path is the Claude Code onboarding skill — it provisions every Cloudflare resource, fills out your config, runs migrations, and deploys for you:

git clone https://github.com/choyiny/saasmail.git
cd saasmail
claude   # then run /saasmail-onboarding

First successful result: your worker is live at your domain, and visiting it prompts you to create the first admin account. Name an inbox, send yourself a test email, and watch it land on a customer timeline.

Prefer to wire it up by hand? See Setup (~8 steps).

Documentation

Full docs live in docs/.

Deploy and operate: Setup · Email providers · Configuration · Updating · Architecture · Local development

Features: Inboxes and timelines · Email templates · Sequences · Suppressions and unsubscribe · Users and API keys · MCP server · WebMCP · Webhooks

Architecture at a glance

Inbound customer email arrives through Cloudflare Email Routing into a single saasmail Worker, which keeps mail and contacts in D1, attachments in R2, and scheduled sequence steps in a Queue; replies leave through one outbound provider - Cloudflare Email Sending, Resend, Bavimail, or Postmark - and land back with the customer.

Everything runs inside a single Cloudflare Worker — no separate mail server to operate. See Architecture for the full diagram and the component-by-component breakdown.

Sponsors

givefeedback.dev GiveFeedback.dev uses AI to turn client screen recordings into actionable tasks and prevent scope creep.

Demo Video

One person's mail across four inboxes, collapsed into a single timeline — filter by inbox and reply inline.

https://github.com/user-attachments/assets/870186a2-840f-4b95-b859-4acd44863263

Screenshots

One timeline per customer — every inbox a person has emailed collapses into a single conversation, with per-inbox tabs and a chat-style composer.

Unified customer timeline

Agent Plan (WebMCP) — connect a browser AI agent and watch it work the inbox: it reads a playbook, lays out a live plan, and ticks steps off while a bottom-right feed groups each tool call as it runs.

Agent Plan with live plan and activity feed

Table overview — stat tiles plus a sortable people table spanning every inbox, with unread and attachment indicators.

Table overview

Templates & sequences — reusable {{variable}} email templates and multi-step drip campaigns you enroll contacts into.

Email templates

Drip sequences

Features

  • One timeline per customer — marketing, transactional, and support mail from a person, collapsed into one conversation.
  • Multi-inbox with team permissions — many inbound addresses on one deployment; members see only the inboxes they're assigned.
  • Thread or chat, per inbox — formal threading for marketing@, iMessage-style bubbles for support@.
  • Per-inbox forwarding — re-send inbound mail to any address through your own provider, sidestepping the IP blocks that break Email Routing forwards.
  • Email templates — reusable HTML with {{variable}} interpolation, sections, and a validated send contract.
  • Sequences — multi-step drip campaigns with delay overrides and auto-cancel on reply.
  • Suppressions and unsubscribe — RFC 8058 one-click unsubscribe, a suppression list enforced on every send path, and a transactional bypass.
  • Users and API keys — invite-only onboarding, passkeys, and scoped sk_… keys.
  • MCP server — connect Claude or any MCP client to your inbox over OAuth 2.1, scoped to that user's inboxes.
  • WebMCP — 20 in-page tools so a browser AI agent can work the inbox as the signed-in user. Reads and drafts; never sends or deletes.
  • Webhooks — HMAC-signed message.received callbacks for help-desk automation.

Provider Matrix

Cloudflare Resend Bavimail Postmark
Sending ✅ ✅ ✅ ✅
Receiving ✅ ❌ ❌ ❌

Pick one outbound provider at deploy time — see Email providers for the per-provider config and the runtime selection order.

How much does it cost?

$5/month for the Cloudflare Workers Paid plan, which includes 3,000 emails per month of Cloudflare Email Sending at no extra cost. That's it.

No VM to rent. No sprawling cloud console to learn. Just a domain, a Cloudflare account, and the Workers Paid plan.

Roadmap

  • Agentic email steering — AI-driven conversation flows that intelligently gather information from contacts through multi-turn email exchanges

Contributing

See CONTRIBUTING.md. All participants are expected to follow the Code of Conduct. Security issues: see SECURITY.md.

This repo ships a CLAUDE.md at the project root with a few notes the maintainer uses when pairing with Claude Code. It's harmless to ignore if you're not using Claude Code.

License

Apache License 2.0

The name "saasmail" and the saasmail logo are used by the original project to identify it. You are free to fork and redistribute the source under the Apache 2.0 license, but please rename your fork (and replace public/saasmail-logo.png) if you run it as a branded product, so users aren't confused about which project they're installing.