Skip to content

Send status and error codes

Every value the Send transactional email action can return, what it means, and what to do about it.

Each time the Send transactional email action runs, it returns a Send status (status). If the email didn’t send, Error code (error_code) holds the same value; it’s empty for sent and queued_warmup. The workflow history shows the explanation below for every outcome except sent, and App Home’s Errors in the last 7 days counts each error code.

Code Label in HubSpot What it means What to do
sent Sent The email was accepted by Amazon SES for delivery. Nothing. Delivery, bounces, and complaints show up in the send log.
queued_warmup Queued (warm-up) Queued: today’s warm-up limit was reached; the email sends after midnight UTC. Nothing. Don’t resend it. See How warm-up works.
suppressed Suppressed Not sent: the recipient hard-bounced, marked an email as spam, or soft-bounced 3 times in a row. Correct the contact’s address, or have a Super Admin clear the suppression if you’re sure it’s valid. See How suppression works.
contact_not_found Contact not found Not sent: no HubSpot contact has this as its primary email address. Create the contact first, or map Recipient email to a contact’s Email property.
sender_invalid Sender invalid Not sent: the sender profile is missing, or a live account chose the sandbox sender or has no verified domain. Pick a sender profile that exists (the sandbox sender only works before you go live), and check your sending domain is verified. See Managing sender profiles.
review_failed Review failed Not sent: the template was flagged as promotional by the transactional content review. Edit the email in HubSpot. See Fixing a template that failed review.
review_pending Review pending Not sent: the template review did not finish in time. Try again shortly. Re-enroll the record in a few minutes. If it keeps happening, email support@cambiumapps.com.
recipient_rate_limited Recipient rate limited Not sent: this recipient already received 5 transactional emails in the last 24 hours. Check for workflows that email the same person repeatedly. Re-enroll later if the email is still needed.
recipient_invalid Recipient invalid Not sent: the recipient address is malformed or its domain cannot receive email. Fix the contact’s email address.
quota_exhausted Quota exhausted Not sent: your email allowance for this period is used up. On Base, auto-buy is off or has reached your monthly budget: raise the budget in Settings → Billing, or wait for the next billing period. In the sandbox, go live. See How your email allowance works.
tenant_paused Sending paused Not sent: sending is paused for your account. Resume it from the app settings. Find out why it paused, then click Resume sending in the Sending is paused banner. If Amazon SES itself suspended sending, email support. See Sending limits and auto-pause.
template_incompatible Template incompatible Not sent: the template uses modules or content that transactional sending does not support. Replace the unsupported modules. See Supported email modules.
account_disabled Account disabled Not sent: the account is uninstalled or disabled for non-payment. Pay the open invoice, subscribe again if your subscription ended, or reinstall the app. See Failed payments and disabled accounts.
internal_error Internal error Not sent: an unexpected error occurred. Cambium has been notified. Re-enroll the record. We’re alerted automatically and investigate.

A few codes cover more than one situation:

  • contact_not_found also covers an address that’s only one of a contact’s additional email addresses: Transactional Email looks contacts up by their primary Email only.
  • quota_exhausted also means the sandbox’s 20 sends are used up, or an automatic purchase of extra emails failed.
  • suppressed also covers an address suppressed for 30 days after 3 soft bounces in a row.
  • sender_invalid also covers a live account whose sending domain was removed or stopped verifying. Once you’ve been live, sends don’t fall back to the sandbox address.
  • template_incompatible also covers a template that was deleted in HubSpot, has no subject, or is too large to send.
  • account_disabled also covers a subscription that ended without being renewed.
  • internal_error also covers a send interrupted partway through. It’s never retried automatically, so an email can’t go out twice.

The send log tracks what happens before and after the workflow gets its answer. These values never reach the workflow:

Code Label in the send log What it means
queued Queued The send is waiting to be processed.
held_review Held for review The send is waiting for the template’s content review to finish (up to 10 minutes).
sending Sending The email is being handed to the mail server.
delivered Delivered The recipient’s mail server accepted the email.
bounced Bounced The email bounced, permanently or temporarily. The log shows the bounce type.
complained Marked as spam The recipient marked the email as spam.

Are failed sends retried? No. The workflow gets the answer once; to try again, fix the cause and re-enroll the record. The exceptions are queued_warmup, which sends automatically after midnight UTC, and a brief burst of more than 10 sends a second, which waits and goes out a moment later without an error.

Do failed sends use my email allowance? No. Only emails handed over for delivery count — against your paid allowance or the 20 sandbox sends. A send that fails for any reason, from suppression or a missing contact to an internal error, gives back anything it had set aside. See How your email allowance works.