Skip to Content

Odoo marks all your emails as read: how to keep a shared mailbox readable

October 22, 2026 by
Odoo marks all your emails as read: how to keep a shared mailbox readable

You connect the info@ mailbox to Odoo so that your customers’ replies land in the quotations. The next day, the person who reads that same mailbox in Gmail is lost: every email is marked as read, newsletters and personal messages included. Here is why Odoo does it, why the obvious fix is a trap, and the free module we published to keep both.

💡 In short

With Fetchmail Keep Unread, Odoo only marks as read the emails it actually files on a document. Everything else stays unread in Gmail, Outlook or your IMAP server. Free, for Odoo 18, 19 and 20, Community and Enterprise.

1. Odoo reads everything, including what is none of its business

Every five minutes, Odoo fetches the incoming mail servers you have set up. For each unread email, it looks for the document it belongs to: a reply to a quotation, a message for a lead, a ticket. Then it marks it as read in the mailbox, whether it filed it or not.

For a mailbox dedicated to Odoo, that does no harm. For a shared mailbox, it is a real problem: the front desk, the manager or the volunteers of a non-profit who read info@ in their mail client see the supplier’s newsletter, a partner’s invitation or the internet provider’s invoice turn “read” without ever opening them. What is not in Odoo is no longer seen by anyone.

💡 The usual dilemma

Either Odoo does not fetch the shared mailbox, and customer replies never reach the chatter. Or it does, and the mailbox can only be read through Odoo. Most teams pick the first option, and lose track of their exchanges.

2. The obvious fix, and why it breaks

The idea that comes first: only mark as read what Odoo filed, and leave the rest. That is what we did in a first version, and that is where the trap shows. In Odoo 19 and 20, the standard fetch picks up all unread emails, oldest first, in batches of 50. If ignored emails stay unread, they are read again on every run.

A calculation from Odoo’s code, on a mailbox that keeps 60 newsletters unread:

  • 288 runs a day (one every five minutes);
  • on every run, the 50 oldest unread emails are downloaded and analysed again, that is 14,400 downloads a day for the same emails;
  • and above all, a customer reply that arrives after those 50 is never reached: it does not enter Odoo until someone clears the mailbox.

In Odoo 18 there is no batch: all unread emails are picked up on every run. Replies get through, but the 60 newsletters are downloaded 288 times a day.

💡 Read it as a calculation, not a measurement

These figures follow from the standard frequency and batch size (5 minutes, 50 emails), checked in the code of Odoo 18, 19 and 20. The real volume depends on your mailbox; the mechanism is always the same.

3. The module: each email examined only once

Fetchmail Keep Unread is switched on server by server, with a toggle on the incoming mail server form, under Actions to Perform on Incoming Mails. Once it is on:

  • an email is marked as read only if Odoo created or updated a record with it;
  • all the others stay unread, as if Odoo had never been there;
  • Odoo remembers the last email examined (its IMAP number, the UID): an ignored email is never downloaded again, and a recent reply never gets stuck behind it;
  • the content is read without setting the “read” flag, and filed emails are flagged in a single command per run.

It works with Gmail, Outlook and any IMAP server. Servers without the option keep Odoo’s standard behaviour. The module is tested on Odoo 18, 19 and 20, with a fake IMAP server and Odoo’s real routing: a reply to a document is filed and marked as read, a newsletter and a duplicate stay unread.

💡 Key takeaway

The 60 newsletters of the example are downloaded once, not 14,400 times a day. And the shared mailbox can be read normally again, with Odoo working in the background.

4. The trade-offs, owned

Three choices are worth knowing before you install:

  • On the first run, only the unread emails of the last two days are examined. Older ones stay as they are, unread. This is deliberate: connecting Odoo to a mailbox holding years of unread mail must not pull them all in at once.
  • An email that fails to process is not retried. It stays unread in the mailbox and the error is logged; it never blocks the next ones.
  • Odoo still downloads each new email once, to know whether it belongs to a document. The module does not change what Odoo sees, only what it marks as read. POP servers, which have no “read” flag, are not concerned.
💡 The real issue behind this module

Your mail settings decide what your teams see, in Odoo as well as in their mailbox. It is one of the points we review during an audit of your Odoo, along with aliases and routing rules.

⚔️ The Match: standard Odoo vs Kameos module

Criterion Standard Odoo Fetchmail Keep Unread
Newsletter, personal email Marked as read Stays unread
Reply to a quotation, new lead Filed, marked as read Filed, marked as read
Ignored email, on the next run Marked read, so not read again Unread, and never read again
Mailbox also read outside Odoo Unusable Normal
Servers concerned All Those where you switch it on

Behaviours checked in the code of Odoo 18, 19 and 20 and by the module’s automated tests.

🛒 On the Odoo App Store

Fetchmail Keep Unread is free, under the LGPL-3 licence, translated into French, Dutch, Spanish and German: see the module on the Odoo Apps Store or its presentation on our website.

The Verdict: Odoo in the shared mailbox, without holding the mailbox hostage

A shared mailbox can feed Odoo and stay readable for those who check it elsewhere: Odoo just has to mark as read only what it files, and examine each email only once.

Does your team, or do your volunteers, work on the same address? We help you connect it to Odoo properly, and train your users to work from the chatter. For non-profits, see also our Odoo for non-profits (ASBL).

Request a Free Audit
Odoo slow for no reason? A bot may be taking over your server