| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
AI (ai_app)
• WhatsApp Messaging (whatsapp) • Discuss (mail) |
| Lines of code | 555 |
| Technical Name |
suite_whatsapp_ai |
| License | OPL-1 |
| Website | https://suitestate.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
AI (ai_app)
• WhatsApp Messaging (whatsapp) • Discuss (mail) |
| Lines of code | 555 |
| Technical Name |
suite_whatsapp_ai |
| License | OPL-1 |
| Website | https://suitestate.com |
AI Customer Service for WhatsApp
Connect Odoo native AI Agents to WhatsApp Business — automatic replies, tool dispatch, and human handoff
Keywords: AI WhatsApp chatbot, customer service bot, auto-reply, AI agent, tool dispatch, human handoff, RAG knowledge base, LLM, GPT, Gemini, Claude, DeepSeek, WhatsApp Business API, automated conversation, support helpdesk, native ai.agent, WhatsApp conversations list, conversation dashboard, conversation management, WhatsApp AI assistant, WhatsApp automation, 24/7 customer support, AI customer service, WhatsApp bot
The Problem
Your WhatsApp Business inbox receives customer messages 24/7 — product questions, order status, pricing, returns. Staff cannot be online around the clock, and late replies mean lost sales.
On the other side, Odoo 19 ships a powerful native AI Agent framework (prompts, knowledge sources, tools) — but it only works inside the web interface. There is no bridge to WhatsApp.
And even without AI, Odoo provides no list view of WhatsApp conversations. Operators have no dashboard to see which customers are waiting, which conversations are active, or when the 24-hour service window expires. Every conversation must be opened individually in Discuss.
This module solves both problems: it connects your AI Agent to WhatsApp, and gives your team a proper conversations management dashboard.
The Solution: Native AI Agent on WhatsApp
This module is a pure transport layer. It does not build
its own AI pipeline or chatbot engine. Instead, it bridges Odoo's native
ai.agent framework directly to the WhatsApp Business inbox:
- The agent's System Prompt defines the AI's behavior, workflow, and rules.
- The agent's Knowledge Sources contain your business background — product catalogs, pricing, policies, FAQs.
- The agent's Topics & Tools enable live data queries — stock levels, order status, customer-specific pricing.
All of this is configured on the standard ai.agent record in
Odoo. This module only handles the transport: receiving WhatsApp messages,
building conversation context, dispatching to the agent, and delivering
the reply back to WhatsApp.
How the AI Agent Works for WhatsApp
Odoo 19's native AI Agent has two key configuration areas that directly control how your WhatsApp bot behaves:
System Prompt = Your AI's Workflow
The system prompt is where you define how the AI operates. This is not just a personality description — it is the complete workflow specification:
- What language(s) to use and when to switch
- How to greet customers and handle introductions
- When to offer product suggestions vs. wait for specific questions
- How to handle pricing (show public prices, or ask for customer name first)
- When to escalate to a human (and what to say before handing off)
- What information to collect before creating a quotation
- Tone, formality, response length limits
Knowledge Sources = Your Business Background
Upload documents (PDF, text, spreadsheets) as the agent's knowledge sources. The AI uses RAG (Retrieval-Augmented Generation) to find relevant information and answer customer questions from your actual data:
- Product catalog — names, descriptions, specifications, categories
- Pricing list — public prices, bulk discounts, seasonal offers
- FAQ / Return policy — shipping times, warranty terms, return process
- Company info — working hours, locations, contact methods
For most businesses, a well-written prompt + uploaded documents is all you need. No code, no server actions, no technical setup beyond the agent configuration. The AI answers from your documents with citations stripped clean before WhatsApp delivery.
WhatsApp Account Configuration
Open WhatsApp > Configuration > WhatsApp Business Accounts. The form gains an AI Configuration section below the standard WhatsApp fields.
| Field | What It Does |
|---|---|
| Enable AI | Master switch. When off, the module is completely dormant — no AI replies, no background processing, zero overhead. Safe to install before you are ready to configure. |
| AI Agent | Select which ai.agent handles this WhatsApp number. Each WhatsApp Business Account can use a different agent with different prompts, knowledge, and tools — useful for multi-brand or multi-language setups. |
| Bot User | The internal Odoo user whose identity appears on AI replies in Discuss. Must be a real internal user (not portal/public). This user's avatar shows in the conversation and their name appears as the message author. Tip: create a dedicated user like "AI Assistant" so the team can instantly distinguish AI replies from human messages. |
| History Depth | How many recent messages are sent to the LLM as conversation context (default: 20). Higher values give the AI better memory of the conversation but cost more tokens. For simple Q&A, 10 is sufficient. For complex multi-turn negotiations, 30-50 may be needed. |
| Notification Channel | A Discuss channel where the module posts operator alerts: human handoff requests (with customer name and reason), AI configuration errors, and provider failures. Your support team monitors this channel to know when a customer needs human attention. Leave empty to disable notifications. |
| Media Auto-Reply | Text automatically sent when a customer sends only voice / image / video (no text caption). The LLM is not called — no tokens are spent. Customize the message for your audience and language. Leave empty to silently ignore media messages without replying. |
Advanced: Custom Tools for Live Data
For businesses that need the AI to query live ERP data
(not just static documents), Odoo's native tool system is fully
supported. Tools are standard ir.actions.server records
attached to the agent's topics.
How Tools + Prompt Work Together
The system prompt tells the AI when to use a tool. The tool definition tells the AI what parameters it needs. The tool code executes the query and returns a result the AI incorporates into its reply.
Example setup:
| Component | Content |
|---|---|
| Prompt excerpt | "When a customer asks about product availability, use the check_stock tool. When they ask about pricing, use the get_price tool. Always confirm the product name before calling a tool." |
| Tool: check_stock | Schema: {"product_name": "string"}Code: queries stock.quant for available qty, returns "iPhone 15: 42 in stock" |
| Tool: get_price | Schema: {"product_name": "string"}Code: looks up the customer's pricelist via record.whatsapp_partner_id, returns "iPhone 15: $999 (incl. VAT)" |
The tool's execution context includes the discuss.channel
as the active record, giving tool code access to:
record.whatsapp_partner_id— the customer's partner recordrecord.wa_account_id— the WhatsApp Business Account (with pricelist, settings)record.whatsapp_number— the customer's WhatsApp number
This means tools can return customer-specific answers (their pricelist, their order history, their delivery status) without generic responses.
WhatsApp Conversations Dashboard
Native Odoo has no list view for WhatsApp conversations. You cannot see at a glance which customers are waiting, which conversations are still within the 24-hour window, or which ones need human attention.
This module adds a dedicated Discuss > WhatsApp Conversations list view that solves this gap — with or without AI enabled:
- Customer name & WhatsApp number — identify conversations at a glance
- Window Open / Window Expires — see the 24-hour service window status so you know which customers you can still reply to
- Last Activity — sort by most recent to prioritize responses
- AI Active toggle — enable or disable AI per conversation directly from the list (inline editable)
- Visual indicators — muted rows for expired windows, warning color for conversations where AI is off but the window is still open (needs human attention)
- Filters & grouping — filter by AI Active / AI Off, group by WhatsApp Account or AI status
Even if you only use this module for the conversations dashboard and never enable AI, this view alone saves operators significant time navigating between individual Discuss channels.
Human Handoff & Team Takeover
Automatic AI Pause
When any internal user posts a reply in a WhatsApp conversation channel, AI automatically pauses on that channel. The customer talks to your team from that point forward. No manual toggle needed — just start typing and the bot steps aside.
AI-Initiated Handoff
A bundled suite_handoff tool is always available to the AI
regardless of your agent's topic configuration. When the customer
asks for a human, or when the AI determines it cannot help, it:
- Sends a closing message to the customer in their language
- Flips AI Active to off on the channel
- Posts a notification in the conversation ("AI requested human handoff. Customer: ... Reason: ...")
- Posts the same notification in your team's Notification Channel
One-Click Resume
When the human interaction is done, tick AI Active back on from the conversations list. The next customer message will be answered by AI again.
Channel Membership & Visibility
Native Odoo's WhatsApp channel creation calls Command.clear()
which wipes all channel members on certain flows. This module automatically
re-adds:
- Bot User — so AI replies are delivered through the correct identity
- All WhatsApp Admin users — so your team sees the conversation in Discuss without manually joining
Member addition is idempotent (DB-level dedup prevents duplicates even under concurrent message bursts). Your team always sees every WhatsApp conversation automatically.
Concurrency & Reliability
- Per-channel lock — prevents duplicate AI replies when multiple messages arrive simultaneously
- Thread pool (10 workers) — AI calls run in background threads, never blocking Odoo's main request handling
- Serialization retry — database conflicts are automatically retried up to 3 times with exponential backoff
- Idempotency check — if the bot already replied after a trigger message (webhook retry, race condition), the duplicate is skipped
- Post-commit dispatch — AI processing starts only after the inbound message is safely committed to the database
Operator Error Protection
If AI cannot reply due to misconfiguration (agent not selected, bot user missing, LLM provider API key expired), the customer sees nothing — no error message, no broken reply. Instead:
- A single notification is posted in your team's Notification Channel explaining what is wrong
- Notifications are deduplicated — one notice per reason, not per message
- Once you fix the configuration and AI works again, the dedup resets so future breakages produce fresh alerts
Data Transmission & Privacy
This module transmits data to the AI provider configured in Settings > AI
(OpenAI, Google Gemini, or providers added by suite_ai_provider_pool)
over HTTPS.
What is sent to the LLM
- Text body of recent WhatsApp messages (up to History Depth)
- The agent's system prompt
- RAG context retrieved from the agent's knowledge sources
- Customer name and WhatsApp number (for personalized responses)
What is never sent
- Media attachments (voice, image, video) — only text is processed
- Internal partner records, addresses, or financial data (unless your tools explicitly query them)
- Other customers' data
Requirements
- Odoo 19 Enterprise — depends on
whatsappandai_app(both native Enterprise modules). - A WhatsApp Business Account configured in Odoo with a verified phone number capable of receiving messages.
- An LLM provider API key configured under Settings > AI (OpenAI, Google, or third-party via
suite_ai_provider_pool). - An
ai.agentrecord with a system prompt. Knowledge sources and tools are optional.
Related Modules
- AI Provider Pool (
suite_ai_provider_pool) — adds Anthropic Claude, DeepSeek, and self-hosted OpenAI-compatible providers to the native AI pool. Free, open source.
License & Support
Licensed under OPL-1 (Odoo Proprietary License v1).
Maintained by SuiteState (ElectroState FZCO).
For questions, bug reports, or feature requests, visit
suitestate.com or contact
hello@suitestate.com.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module