Shipped · 2026-08-23
Sending a test of an email campaign was failing for everyone with a blanket "All test emails failed." It now sends successfully, and the message lands in the inbox.
Live in production · confirmed working
Opening an email campaign, going to the Email Builder, and pressing Send Test produced a single error toast: "All test emails failed." No test email ever arrived. Two related symptoms were also reported: an error mentioning public.email_preferences, and manually-typed recipient addresses disappearing when a send was attempted.
Before sending anything, the system checks an "unsubscribe" list so it never emails a person who has opted out. The database table holding that list was missing, so the check crashed — and the crash stopped the send before it ever reached the email service. Every test email failed with a 500 error. Separately, the email service's own login credentials had gone missing, which would have blocked sending even after the crash was fixed. Because the send blew up on every attempt, the form also wiped the recipient addresses each time — the second reported symptom, and a knock-on effect of the same failure.
| Moment | What the recording shows |
|---|---|
| Before | The same request returns HTTP 500 — "Could not find the table 'public.email_preferences'" — and never reaches the email service. |
| After | The identical request returns HTTP 200 with an Amazon SES message id, meaning the email service accepted the message. |
| Arrival | The email lands in a live test inbox from no-reply@politogyvrm.com, carrying the same Amazon SES message id — genuinely sent and delivered. |
If you had the Email Builder open before the fix, reload the tab so it picks up the corrected send path.
The reporter's account reaches the Email Builder through a set-up organization. The verification account lands in a brand-new organization that redirects to billing before the builder, so the test was run against the exact same production send endpoint the Send Test button calls, with a real signed-in session — rather than the button itself. The request, the 500-then-200 result, and the delivered email are all real.