Troubleshooting: EMAIL_TEST_RECIPIENT_NOT_VERIFIED
When your organization has no verified sending domain of its own, outbound email rides the platform’s shared sender. To keep that shared sender’s reputation intact, the send pipeline gates each recipient against an allowlist before dispatch: the recipient must be a saved contact on your audience, a verified member of your organization, or an address on the legacy verified-recipient list. A recipient in none of those buckets rejects with422 EMAIL_TEST_RECIPIENT_NOT_VERIFIED —
this is the test-mode gate. Verify your own sending domain and the gate
steps aside for that sender entirely. Definitions live in the
Error Code Reference; this page owns the
recovery ladder.
Symptom
A send attempt returns422 with code: EMAIL_TEST_RECIPIENT_NOT_VERIFIED
per recipient. Replaying the same send produces the same reject — the
gate is deterministic: nothing changed between attempts, so the same
recipient fails identically every time. On a campaign or batch fan-out,
each unverified recipient fails its own send while the verified rest of
the batch proceeds.
Where the gate fires
The gate runs on the send’s admission path, before anything reaches the email provider, and only while the send resolves to the shared sender — the platform-default posture for an organization that has not verified its own sending domain. Three independent checks run there, in order:- Suspension — a support-imposed halt (
403 FORBIDDEN, “Email sending is suspended for this organization”). Unconditional: no allowlist or cap state overrides it. - Daily cap — the shared sender enforces a per-organization daily
ceiling; exhaustion rejects with
429 RATE_LIMIT_EXCEEDEDrather than this code. - Recipient allowlist — the gate this page covers. The allowlist is the union of (a) your saved contacts, (b) verified organization members, and (c) any addresses on the legacy verified-recipient list from the retired OTP-verify surface (still honored where present).
Recovery ladder
Pick the step that matches why the recipient is missing:- Save the recipient as a contact. If the recipient is a customer or lead you deliberately target, save them under Audience → Contacts and retry. This is the normal fix — the gate admits recipients your address book already claims.
- Invite them as an organization member. If the recipient is a teammate you are testing with, add them under Settings → Team; a member whose email is verified joins the allowlist automatically.
- Verify your own sending domain. Complete the DNS records under Email → Senders (see Domain Setup). A send from a verified domain skips the recipient allowlist entirely — this is the production posture, the right long-term answer for real traffic, and the moment test-mode scoping stops applying to that sender at all.
Bulk path — campaigns and batch sends
The campaign executor aggregates per-recipient rejections: an audience with unverified recipients fails those rows withEMAIL_TEST_RECIPIENT_NOT_VERIFIED and completes the rest. Do not
re-fire the whole campaign and read the failures one at a time. Instead
sample first:
- Run a small slice of the audience through Messages → Batch (or
POST /messages/batch) — the per-recipient receipt names each address that hits the gate, same as the bulk-review shape on messaging pre-send gates. - Fix the list — save the failing addresses as contacts, or drop them from the audience.
- Then re-fire the campaign.
What not to do
Do not loop retries. A deterministic 422 fails identically every time — a retry against an unchanged recipient list only burns your daily send ceiling and floods your own logs. Fix the recipient’s state first, then send exactly once.When to escalate
The gate persisting after the recipient is saved as a contact (or verified as a member) is abnormal. Escalate to support with:- Your organization ID — Settings → Organization, or from
GET /api/v1/me. - The exact code and
meta.request_idfrom the rejected envelope. - The recipient address and which allowlist step you completed (contact save, member invite, or domain verification).
See also
- Error Code Reference — the
EMAIL_TEST_RECIPIENT_NOT_VERIFIEDdefinition. - Email channel — sender setup and domain verification, the exit from test mode.
- Rate-limit and cooldown taxonomy — the three-class retry taxonomy this deterministic gate belongs to.
- Troubleshooting: messaging pre-send gates — the sibling routing card for deterministic SMS/MMS refusals.
- Troubleshooting: email bounces and complaints — provider-side rejections after a send does dispatch.