Dispatch console

SMS + Email gateway — manual test terminal
not checked

Connection

Held in this tab's memory only — cleared on reload, never stored on disk.

Send test message

Inbound log

No messages fetched yet — check health and connect above.

Registered phones

NameStatusLast seen
Not loaded yet.

Webhook

SMS panels above call your gateway's public API directly from the browser (/v1/messages, /v1/inbound, /v1/phones, /v1/webhook, /health). If requests fail with a network/CORS error in the browser console, your FastAPI server needs CORS enabled for this origin.
Email gateway

Connection

Sent as Authorization: Bearer <key> on every request — held in this tab's memory only, cleared on reload, never stored on disk. This worker is a single stateless POST endpoint (no /health check, no message history), so the "Send test email" button below is the connectivity test. Sender email is locked to this project's allowlist in PROJECTS_CONFIG — the field below is prefilled with the one this project currently allows; changing it to anything else will get a 403 unless it's added to allowedSenders on the Worker side first.

Send test email

At least one of Text content / HTML content is needed — send both if you want to compare rendering.
This panel calls your Brevo worker directly from the browser with a single POST to the worker root, Content-Type: application/json, Authorization: Bearer <project key>. On success it returns { success: true, messageId, project }. On failure: 401 means the project key is missing/wrong, 403 means the sending origin or sender address isn't on that project's allowlist, 429 means the project's daily cap was hit, and anything else surfaces the worker's error (plus message/details when present). Delivery status (Delivered/Bounced/Blocked) isn't visible here — check Brevo Dashboard → Transactional → Logs by messageId, or Cloudflare Dashboard → Workers & Pages → brevo-email-worker → Observability → Logs for request-level logs.