16-Jun-2026 — inbox-aware email routing and Contact Us delivery #278

build 698commit 0fa5561


📖 New to this feature? See Setting up a Gmail inbox for committee replies for the step-by-step setup guide.

Reworks how committee roles route email - outbound senders, inbound forwarding, and the Contact Us form - so the admin screens describe what actually happens for each group's setup: a connected Gmail inbox, a Cloudflare catch-all, fan-out to several people, or individual personal addresses. Part of the Gmail inbox work in #278.

What's new for committee admins

Contact Us routing, per role

Each role has a dedicated Contact Us tab controlling where contact-us form submissions for that role are sent, separate from the role's Inbound Forwarding.

Inbound forwarding clarity

Contact Us system role

Committee roles table

Email routing status

Gmail inbox setup (External systems -> Mail)

Technical details


show sync error detail instead of [object Object]

build 699commit 9f281dc


When a Salesforce sync fails (for example TOKEN_MISSING), the failure banner rendered the error object directly, so it read "Salesforce sync failed: [object Object]". The error is now passed through a small helper that extracts errorMessage, message or errorCode (falling back to a JSON string), so the banner shows the real detail. The precise message was already visible in the audit-log table below the banner; this makes the banner itself readable. Surfaced while testing the inbox work.