An org admin can see and change the whole opt-out list

FeatureEmailService
Shipped
September 12, 2026 at 6:36 AM UTC
Author
Kamo
Commit
f2097ed

Settings -> Email -> Opt Out now has its API under /api/email/opt-outs, behind MANAGE_EMAIL_OPT_OUTS (god bypasses): a summary with the last 30 days, the list filtered by state, reason and address, one address with its full history and everywhere else it appears in the organization, the org-wide activity, a CSV export, and changes and notes made through the opt-out ledger. Every change is recorded against the member, the client address the proxy passed on, and a hash of their session. Ids are sent as strings and times as ISO-8601, as the web app expects. Until the history tables exist the list, summary, address and export still work from the do-not-email list alone, and a change answers 503 with HISTORY_UNAVAILABLE instead of being half made. The schema probe now builds its query over the primary database. It was being given the only JdbcTemplate bean in this service, the mail server's MySQL one, so it could never see the opt-out tables and every member's change would have been refused.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing