09-Jul-2026 — Setting up direct-to-inbox for committee replies


This is the companion to Setting up a Gmail inbox for committee replies. It covers the newer direct-to-inbox option, where committee mail arrives in your NGX inbox straight from Cloudflare with no Gmail account, no Google Cloud project, and no OAuth to maintain. If you are choosing how a group should receive committee replies, read both and pick one; you do not need both.

Introduction

Every NGX site can receive committee replies in one of three ways:

Direct-to-inbox is the simplest to run because there is no Google side at all. It is push-only, so replies appear in the inbox the moment they are received.

How direct-to-inbox compares to the Gmail inbox

Gmail inbox Direct-to-inbox
Google account A dedicated Gmail account per mailbox None
Google Cloud / OAuth / Pub/Sub Required None
How mail travels Cloudflare forwards the role address into Gmail; NGX reads it via the Gmail API A Cloudflare Worker posts the message straight to NGX
Delivery Poll every 30s, or push via Pub/Sub Real-time on receipt
7-day token expiry to watch Yes (Testing-mode refresh token) Not applicable — there is no token
Where you set it up Mostly in Google Entirely in NGX — Cloudflare API calls made within Admin → Mail Settings & Admin → Committee Settings

Before you start

You need:

There is also one platform-level prerequisite that a platform administrator sets once for the whole system, not per group: the shared secret NGX_INBOUND_SECRET must be set in the platform admin shared secrets and the site redeployed. Until it is, the "route into inbox" action returns a clear error telling you to set it. If you are a group administrator and hit that error, ask whoever runs the platform to set it.

Part 1 — Choose the direct-to-inbox provider

  1. Go to Admin → Mail Settings and open the Inbox tab.
  2. Under "How this inbox receives mail", choose Direct to inbox — via Cloudflare Email Routing, no Gmail account. The choice saves immediately.

That switches the site's inbox provider. The next step wires Cloudflare up to actually deliver the mail, and it depends on whether your site owns its zone or is a subdomain.

Admin → Mail Settings → Inbox: choose “Direct to inbox” as the provider.

Part 2 (own-zone site) — Route your committee mail into the inbox

If your site owns its Cloudflare zone:

  1. Make sure Cloudflare Email Routing and MX are configured and your committee role addresses exist as routing rules (Admin → Committee Settings → Email routing, or the MX and authentication-record tools).
  2. On the Inbox tab, click Route this site's committee mail into the inbox. NGX deploys the shared email-inbox-router worker and repoints every @yourdomain routing rule at it. You will see a confirmation such as "Mail for N addresses now arrives in this inbox."
  3. If it reports "No committee addresses were found", add the role addresses as Cloudflare routing rules first, then click the button again.

The Direct-to-inbox panel: no Gmail setup, then “Route this site’s committee mail into the inbox”.

Part 2 (shared-zone subdomain) — Use the parent zone's router

If your site is a subdomain of a shared zone, there are no Cloudflare rules to add on the subdomain itself — delivery is provided by the parent zone's router. Two things need setting:

  1. On your subdomain site: with the provider set to Direct to inbox (Part 1), go to Committee Settings → Email routing and choose where this site's unmatched @domain mail should go — deliver to this inbox, forward to an address, or drop. This is the only catch-all choice a subdomain can make.
  2. On the parent (apex) site: an administrator of the parent site goes to Committee Settings → Email routing → Edit catch-all and selects Shared inbox router (deliver to inboxes, forward the rest). They also provide a safety-net forward address, used only if a site cannot be reached, and set the apex site's own unmatched-mail destination.

Once both are set, the router fans each message out by recipient domain to the right site's webhook, and each site files it according to its own provider and catch-all setting. A subdomain cannot edit the shared zone's catch-all — that is set once, on the apex site.

Part 3 — Map roles and set the catch-all

These apply to both cases:

Notifications work the same regardless of provider: the same "notify the assigned member" per-role controls apply, and a digest of new inbox messages goes out every five minutes.

Reading replies

Committee replies appear in Admin → Inbox for whoever holds each role, exactly as they do with the Gmail route. Delivery is real-time — a message is filed the moment Cloudflare receives it.

The Email inbox on Kent (kent.ngx-ramblers.org.uk, a shared-zone subdomain): a reply delivered straight into the site's inbox by direct-to-inbox.

What makes this robust

Troubleshooting