RECIPIENT_EMAIL_SUPPRESSED error, and how to get a wrongly-suppressed address cleared.
How Firma sends emails
When you send a signing request, Firma builds the email and hands it to Resend for delivery. Resend sends delivery events back to Firma through a webhook —sent, delivered, bounced, complained, opened, clicked — so Firma always knows the last known state of an email it sent.
Signing invitations are transactional, not marketing email — recipients don’t subscribe to them and can’t opt out of a specific signing request. The suppression mechanics on this page exist to stop sending to addresses that can’t or won’t accept mail, not to manage consent.
The suppression list, explained
An email address gets suppressed when there’s a strong signal it can’t or shouldn’t receive any more mail from Firma. There are two automatic triggers, plus one manual one:
Soft bounces are intentionally not suppressed: a full mailbox or a momentary server outage usually resolves on its own, and treating every temporary bounce as permanent would suppress addresses that were never actually broken. Only a permanent (hard) bounce or a spam complaint adds an address to the list.
The RECIPIENT_EMAIL_SUPPRESSED error
If you try to send a signing request and any signer’s email address is on the suppression list, Firma rejects the entire send before anything goes out:- HTTP status:
422 - Scope: the check runs against every signer on the request, not just the next one in sequence. A signing request with three signers is rejected up front if signer #3’s email is suppressed, even though signers #1 and #2 are fine — this avoids a request getting stuck partway through with credit already spent and some signers already signed.
- Side effects: nothing is sent, no credit is deducted, and the signing request is not marked as sent. You can safely fix the address and resend.
the address bounced, a previous email was marked as spam, or the address has been blocked.
Diagnosing it
- Read the address out of the
errormessage — that’s the recipient that’s blocked. - Check for a typo in that address. A mistyped domain or a stale address from an old contact list is the most common cause of a hard bounce.
- If the address is correct and you believe the suppression is wrong (a spam complaint you don’t recognize, or a bounce that looks like it should have been transient), continue to Requesting removal.
A signer’s email address can’t be changed after a signing request has been sent. If a multi-signer request is already stuck because one signer’s address got suppressed mid-flow, clearing the suppression won’t retroactively fix that request — cancel it and create a new one once the address is cleared.
Requesting removal
Firma support can review and clear a suppression entry, but there’s no self-service way to do it from the dashboard or API today. To request removal:- Contact Firma support and provide the exact recipient email address and, if you have it, the signing request ID that hit the error.
- Support checks the suppression reason against the underlying Resend delivery record for that address.
- If the suppression was caused by a transient issue misclassified as permanent, or the complaint doesn’t hold up, support removes the entry.
Preventing re-suppression
- Verify addresses before sending. A typo’d domain or a stale address from an imported contact list is the single most common cause of a hard bounce.
- Avoid role-based or shared inboxes like
info@,noreply@, oradmin@for signer addresses. Nobody owns them individually, so they’re more likely to auto-filter incoming mail to spam (generating a complaint) or to be turned off entirely (generating a hard bounce). - Watch for a pattern across signing requests. If several signers at the same company domain bounce, it’s more likely a company-wide mail server change than several unrelated typos — worth confirming with the customer before resending.
- Send from a custom domain. Firma’s shared sending domain carries the combined sending reputation of every customer using it. A verified custom domain isolates your reputation, which reduces the odds of a hard bounce or spam classification caused by someone else’s sending behavior.
Next steps
- Custom Domains — set up your own sending domain for better deliverability and branding
- Webhooks — subscribe to
signing_request.recipient.signedandsigning_request.recipient.declinedevents to track signing progress - Sending a Signing Request — creating and sending signing requests via the API