Custom Engineering / Nimex Solutions
WhatsApp Communication Integration
Customer conversations on WhatsApp used to live on one salesperson's phone. Now they live in Odoo: paired by QR code, matched to the contact, with quotations and invoices sent from the record and logged in its chatter.
Unofficial WhatsApp Web protocol (QR-paired session), not the official WhatsApp Business API.
The problem
The most important customer channel was invisible to the ERP.
Customers asked for prices, sent purchase orders and chased deliveries on WhatsApp. The answers came from personal phones; nothing reached the contact card, the quotation or the invoice, and when a salesperson was away, so was the history.
Standard Odoo can send WhatsApp messages only through the official Business Platform, with Meta-approved templates and Meta's messaging fees, and it does not show the team's existing day-to-day chats. What the business needed was its own number, with its existing conversations, inside Odoo.
What we engineered
A full WhatsApp Web client, wired to Odoo's records.
What users expect from WhatsApp Web, plus what an ERP needs: the right contact, the right document and a trace on the record.
Session and transport
- One record per company number, paired by QR code from the Odoo screen.
- Built-in engine (one thread per number, 20-second heartbeat, automatic restart) or an external Node.js bridge.
- Bridge events reach Odoo through a signed webhook (HMAC-SHA256), batched and retried while Odoo restarts.
- Session persisted: a server rebuild does not need a new scan.
Chat application
- Account switcher, pinned and archived chats, unread counters, typing and presence.
- Replies, reactions, forward; edit within 15 minutes, delete for everyone within two days.
- Images, video, audio, documents, stickers, locations and contact cards.
- Start a chat by number with an "is on WhatsApp" check.
Records and control
- Stored phone key on every contact; chats re-matched when a number changes.
- WhatsApp button in the chatter of contacts, quotations and invoices, with templates and PDFs.
- Department defaults choose the sending number; users and managers per number.
- 14-day rolling retention by default; record-linked messages are never purged.
Documents over WhatsApp
The same channel for quotations, pro-formas and invoices.
WhatsApp becomes a sending method in Odoo's invoice Send wizard, including bulk sends, with the choice between Odoo's PDF and the official e-invoice PDF where the invoice was already sent through Nilvera. Quotations offer quotation, pro-forma and order-confirmation texts; a second send shows when the document already went out. One global switch stops every automated send; manual buttons keep working.
How it works
From QR code to a logged quotation.
- Pair the number
An administrator opens the account and scans the QR code shown in Odoo: Disconnected → Waiting for QR scan → Connecting → Connected. Contacts, chats and history stream in.
- Messages arrive live
The engine or the bridge delivers messages, delivery statuses and presence; the browser is updated over Odoo's bus.
- Match the chat to the contact
The sender's number is compared with the stored phone key of every contact; the chat shows the linked contact, or can be linked by hand.
- Send from the record
The WhatsApp button on a contact, quotation or invoice proposes the record's people, a message template and the PDF, generated on demand.
- Track the status
pending → sent → delivered → read, or failed with Retry. A status never moves backwards.
- Keep the trace
The send becomes a note with the PDF in the record's chatter, and the message remembers which record it came from.
Integration points
- WhatsApp sessionmessages · media · statuses · presence →Chats, Discuss bus
- WhatsApp sessionsender number → phone keyContacts
- WhatsApp session← text · PDF · edits · reactionsQuotations, invoices
- Nilveraofficial e-invoice PDF →Invoice Send wizard
- Bridge servicesigned webhook → · ← bearer-token RESTAccount, Message Log
Related solutions