Shipped · 2026-08-23

The "test email" send is fixed — it now sends and arrives

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

52-second walkthrough — the real API send, before and after the fix. Captions are burned in; there is no audio.

What was reported

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.

What was actually wrong

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.

What changed

Proof

MomentWhat the recording shows
BeforeThe same request returns HTTP 500"Could not find the table 'public.email_preferences'" — and never reaches the email service.
AfterThe identical request returns HTTP 200 with an Amazon SES message id, meaning the email service accepted the message.
ArrivalThe email lands in a live test inbox from no-reply@politogyvrm.com, carrying the same Amazon SES message id — genuinely sent and delivered.
A proof panel showing the after state: an HTTP 200 response with an Amazon SES message id, and the delivered email from no-reply@politogyvrm.com with matching subject, timestamp 2026-08-24 00:42:21 UTC, and a note that the delivered email carries the same SES message id.
The successful send (HTTP 200 + SES message id) and the email as it actually arrived.

If you had the Email Builder open before the fix, reload the tab so it picks up the corrected send path.

One honesty note on how this was verified

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.