Email CC BCC Rules
Real email CC BCC on Odoo mail - a Bcc field on templates, the composer and mail.mail that actually reaches the recipient.
The video below shows Email CC BCC Rules running on a real Odoo 19 database. Want it driven against your own data, or a question answered first? Ask and we will set up a session.
What it does
A Bcc that actually arrives
Odoo's mail server already handles Bcc correctly - it builds the delivery list from the To, Cc and Bcc addresses, then strips the Bcc line before sending. What is missing is any field to put an address in. Adding one by hand does not work either: Odoo checks every delivery address against the message's own recipients and quietly discards the rest, so a Bcc added as a header alone is thrown away. The mail is marked sent and nothing is logged. This puts the address where both steps can see it.
Blind, and tested for it
There is a test that sends a message through a stand-in mail server and checks the address is in the delivery list and absent from every header the recipients receive. For a feature whose entire purpose is being invisible, "it says sent" is not evidence.
Sent once, not once per recipient
A message to several people becomes several emails inside Odoo, one each, so every copy can be personalised. A Bcc added to all of them would deliver one copy per recipient - six recipients, six copies in the archive mailbox. This attaches it to exactly one, the way Odoo itself handles Cc.
Standing rules for an archive address
Always blind-copy an address on messages sent from a chosen record type - an archive mailbox, a shared inbox, a compliance address - and narrow it to only the records you mean. A rule that cannot be read is skipped rather than stopping the message, and a filter that cannot be parsed is refused when you save it, not discovered at send time.
On templates, the composer and the mail itself
A Bcc box in the send-by-email composer, and a Bcc field on mail templates where placeholders work - so an automated email can blind-copy an address taken from the record it is about.
What it does not do
It does not Bcc other people's chatter replies. Only messages you send through the composer, a template, or a standing rule. A colleague replying in the chatter is not silently blind-copied to anyone.
It does not thread replies from a blind-copied address. Someone reading a Bcc is reading a message the record does not know they received. Quietly attaching their reply to the thread would show everyone following it that they were copied - the one thing a Bcc must never do. Their reply arrives in their mailbox and stays there.
It does not change who Odoo notifies. Followers, subscriptions and recipients are untouched. The Bcc is added after Odoo has decided who the message goes to, so nothing about your existing notifications moves.
It does not send a Bcc-only message. Odoo treats a mail with no visible recipient as a failure before it reaches this module. A Bcc rides along with a real message; it cannot replace one.
Rules match one record type each. A rule covers one model - contacts, or invoices, or tasks - not a mixture. Cover several by adding a rule for each, which also keeps the filter on each one readable.
Screenshots

Requirements
- Odoo 19.0, Community or Enterprise.
- Odoo.sh or On-Premise only. Third-party apps cannot be installed on Odoo Online (SaaS) databases — check your hosting before buying.
- Module
mh_email_cc_bcc, version 19.0.1.0.6, licensed OPL-1.
Related apps
Eleven access tools in one app, from who-can-do-what across every model to safe offboarding
See exactly what every user can read, write, create and delete across every model, resolved through group inheritance and record rules
Set the default list view columns for a model and assign them per group, so a team opens the same layout instead of rebuilding it