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).
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).