Mandrill

Mandrill BCC Not Working

Mandrill BCC requires a documented method: a type:bcc recipient in the API to array, or bcc_address or X-MC-BccAddress for a silent copy of every message.

Updated Jun 26, 2026

The short answer

"Mandrill BCC Not Working" is not an SMTP error code but a behavior issue: BCC recipients don't receive mail or appear exposed. Mandrill (Mailchimp Transactional) ignores ambiguous BCC usage and offers two documented paths instead — add a recipient with "type":"bcc" in the API "to" array, or use the bcc_address message field / X-MC-BccAddress SMTP header for a single silent copy.

"Mandrill BCC Not Working" is not an SMTP reply code (it is not a 4xx/5xx response defined in RFC 5321). It is a behavior report: a blind-carbon-copy recipient configured in Mailchimp Transactional (formerly Mandrill) either never receives the message, or the "blind" part fails and recipients can see each other. The fix depends on which of Mandrill's two distinct BCC mechanisms you intend to use.

What causes "Mandrill BCC Not Working"?

The most common root cause is using a BCC pattern Mandrill does not honor and assuming it failed silently. Specifically:

  • A plain Bcc: MIME/SMTP header is not the documented path. Mandrill exposes its own headers and API fields for recipient control; relying on an ad-hoc Bcc: header produces inconsistent results.
  • Confusing preserve_recipients with BCC. Setting preserve_recipients (API) / X-MC-PreserveRecipients (SMTP) to false does not create a BCC. Per Mailchimp's docs, when preserve_recipients is false, Mandrill sends one copy per recipient and rewrites the To/Cc headers so each person sees only their own address. That hides addresses from each other, but every address still receives the mail as a primary recipient — it is privacy masking, not BCC.
  • Account-level default flips visibility. The global "Expose the list of recipients when sending to multiple addresses" setting (Sending Defaults) sets the default for preserve_recipients. If it is unchecked, your per-message expectation can be silently overridden.

How do I fix "Mandrill BCC Not Working"?

Pick the mechanism that matches your goal.

Option 1 — BCC a recipient inside the API to array (per-message recipients)

Add the BCC recipient to the to array with "type": "bcc", and put preserve_recipients at the message level (a sibling of to, not inside it). With preserve_recipients: true, the To/Cc headers list the to/cc addresses and the message is blind-copied to the bcc addresses; the bcc recipients are not shown to anyone.

{
"message": {
"subject": "Your receipt",
"from_email": "billing@yourdomain.com",
"preserve_recipients": true,
"to": [
{ "email": "customer@example.com", "name": "Customer", "type": "to" },
{ "email": "audit@yourdomain.com", "name": "Audit Copy", "type": "bcc" }
]
}
}

Note: if you send batch/merge mail with per-recipient data, Mandrill (and wrappers like Anymail) force preserve_recipients to false so recipients can't see one another — in that mode a type:bcc entry still receives mail, but header behavior differs. Verify each address in Outbound Activity after sending.

Option 2 — Silent copy of every send via bcc_address / X-MC-BccAddress

To always blind-copy one fixed archive/monitoring address on every message, use the message-level bcc_address field (API) or the X-MC-BccAddress SMTP header. This accepts a single email address, sends an exact duplicate (including tracking data), and — per Mailchimp's SMTP-headers docs — the BCC'd address does not appear in Outbound Activity and is not counted as a separate recipient.

X-MC-BccAddress: archive@yourdomain.com

Verify

  1. Check Outbound Activity in the Mailchimp Transactional dashboard — type:bcc recipients appear there; bcc_address copies do not.
  2. Confirm your Sending Defaults "Expose the list of recipients…" setting matches your intended preserve_recipients default.
  3. Inspect a received message's headers to confirm BCC addresses are absent from To/Cc.

If you send through Courier with Mandrill as a provider, set recipients/headers via the provider override so these fields reach Mandrill unchanged.

FAQ

Common questions

You likely used preserve_recipients/X-MC-PreserveRecipients to mask addresses rather than a real BCC. For a true BCC, add the recipient with "type":"bcc" in the API to array (with message-level preserve_recipients: true), or use bcc_address / X-MC-BccAddress for a single silent copy.

One API, every provider

Stop debugging raw provider errors

Courier connects to your email, SMS, and push providers, handles retries and failover, and surfaces delivery errors in plain language.

Last reviewed Jun 26, 2026. Courier is not affiliated with third-party providers; error behavior may vary by implementation.