Client conversations belong to the company, not to a phone.
Connect real personal Telegram accounts to Odoo Discuss. Every operator keeps their own number, every conversation lands in the CRM your team already runs, and the first message from a new contact becomes a lead on its own.
Buy on Odoo AppsOdoo 18.0 · self-hosted only · the companion service ships with the module
The situation
Your strongest salesperson talks to clients from a personal number. Nobody else can read that history, no manager can review it, and the day that person leaves, the conversation walks out with them.
Bot integrations wait for the client to find the bot and press Start. Real sales starts the other way round — you write first, to a phone number, as a person rather than a service.
Sales, support and whoever covers the weekend each need their own number — on the same Odoo database, without their chats getting mixed together.
Before you read further
It is not for everyone, and we would rather you find that out here than after paying.
Not sure about your setup? Describe it to us — we will tell you honestly whether the module fits.
What changes
History stops being private property and becomes a company record.
No "one account per database" ceiling. Every Discuss channel is bound to the account it belongs to, so conversations never get mixed up.
One company number can be worked by a whole team: colleagues see every conversation of the account and reply — without a Telegram account of their own.
Read and answer without leaving Odoo. Replies sent from the operator's own phone show up in Discuss too, with no duplicates.
Every first message and every phone lookup is recorded with the operator and the date. Managers see who contacted whom.
The first message from a stranger is already a CRM record.
A new contact's first message creates a lead pre-filled with the partner record and the message body, tagged source Telegram, medium Direct.
One button on the contact form tells you whether that phone number is on Telegram — so operators write first only to people they can reach.
sending → sent → read, updated in real time without reloading the page.
Emoji reactions sync both ways, and inbound photos up to 20 MB land inline in Discuss.
A personal account is an asset. The module treats it like one.
Caps on cold first messages and on phone lookups, set per account and driven by the audit log.
When Telegram signals peer-flood, the account stops on its own instead of digging deeper.
Telegram sessions are stored Fernet-encrypted in your own database. Not on our servers — there are none.
Disconnecting an account revokes its Telegram session immediately.
Getting started
Drop the module into your addons path and bring up the companion service with docker compose up. It talks to Telegram; Odoo talks to it through PostgreSQL. No broker, no third-party cloud.
An operator's account is linked from inside Odoo through Telegram's own device linking — the same mechanism Telegram Desktop uses, 2FA included. Once per operator.
Chats arrive in their own Discuss section and new contacts become leads. Nobody has to open the Telegram app to do their job.
Honest comparison
Most teams are already doing one of the first two. Here is what each actually gives you.
| A personal phonewhat most teams do today | A shared botthe standard Bot API | This modulepersonal accounts in Odoo | |
|---|---|---|---|
| Who holds the history | The operator | The company | The company |
| Writing first | Yes, from a real number | No — the client must find the bot and press Start | Yes, from a real number |
| How many numbers | One per person, none of them shared | One bot for the whole company | One per operator, and a team can share any of them |
| Where the team works | The Telegram app, next to personal chats | Odoo, through whatever webhook logic you build | Odoo Discuss, out of the box |
| What the CRM sees | Nothing | Whatever you wrote code for | Chats, automatic leads and the outbound log |
Real screenshots from an Odoo 18 database with the module installed.
Settings → Telegram: a readiness checklist, API credentials, connected accounts, live service status and a built-in FAQ.