WhatsApp AI Sales Agent
ECOSIRE WhatsApp AI Sales Agent connects your WhatsApp Business phone number to Odoo and answers incoming customer messages with an AI assistant. The assistant looks up your own products, prices and stock in Odoo, creates leads and draft quotations, and passes the conversation to a salesperson when the customer asks for a person or the assistant cannot help.
You bring your own Meta WhatsApp Business account and your own Anthropic (Claude) or OpenAI (GPT) API key. All calls to Meta and to the AI provider are made by your Odoo server; keys are never sent to the browser and never written to the logs.
| Technical name | ecosire_whatsapp_ai_agent |
| Current shipped version | 17.0 -> 17.0.1.0.1, 18.0 -> 18.0.1.0.1, 19.0 -> 19.0.1.0.1 |
| Compatibility | Odoo 17, 18 and 19 (Community and Enterprise) |
| Price | $399 USD (one-time) |
| Category | Sales / CRM |
| Dependencies | crm, sale_management, product, mail (standard Odoo apps) |
| You also need | A Meta WhatsApp Business account (Cloud API) and an Anthropic or OpenAI API key |
It does not need the Odoo Enterprise WhatsApp app: the module has its own WhatsApp Cloud API connection, so it works on Community too.
What it does
- Answers customers on WhatsApp — every incoming text, button or list reply is saved in Odoo and answered by the AI assistant.
- Grounded on your Odoo data — the assistant can only answer from tools that read your database:
search_products— find sellable products by name;get_price— the product's list price and currency;check_stock— quantity on hand (needs the Inventory app; without it the assistant sees 0);create_lead— create a CRM lead or opportunity linked to the conversation;create_quote— create a draft sales quotation for the customer (nothing is confirmed or sent automatically);handoff_to_human— stop the assistant and pass the chat to a person.
- Choice of AI provider — Anthropic Claude or OpenAI GPT, with the model, temperature, reply length and number of tool steps per reply set by you.
- Your sales persona — edit the system prompt to set tone, language, what to offer and what not to promise.
- Respects WhatsApp's 24-hour rule — free-form replies are only sent within 24 hours of the customer's last message. Outside that window, only an approved message template can be sent, and the module blocks anything else.
- Message templates — pull your templates and their approval status from Meta with one click.
- Full audit trail — every conversation, message, delivery and read status, and every tool call the assistant made, with its input and result.
- AI cost tracking — token counts and an estimated cost per AI reply, based on the per-1,000-token prices you enter.
- Read receipts — incoming messages are marked as read on WhatsApp.
- Multi-company — accounts, conversations, messages, templates and tool logs are kept separate per company.
Installation
- Download the module from the Odoo Apps Store (or from your ecosire.com order) and add it to your addons path.
- Make sure the Python package
requestsis installed on the Odoo server (it is present in standard Odoo installations). - Restart Odoo, update the Apps list and install ECOSIRE WhatsApp AI Sales Agent.
The module installs on its own; no other ECOSIRE module is required.
Access rights
Two groups are added under Settings → Users & Companies → Users → WhatsApp AI Agent:
| Group | Can do |
|---|---|
| WhatsApp AI Agent / User | See the WhatsApp AI menu, conversations, messages and tool logs |
| WhatsApp AI Agent / Manager | Everything a User can, plus configure accounts and templates and send messages |
The secret fields (access token, app secret, webhook verify token and AI API key) can only be read and edited by Odoo administrators (Settings access).
Setting up your WhatsApp number
1. Prepare the Meta side
In the Meta App Dashboard, create (or open) an app with the WhatsApp product and note:
- the Phone Number ID of the WhatsApp number you want to use;
- the WhatsApp Business Account ID (WABA ID);
- a permanent access token (a System User token from Meta Business Settings is recommended; temporary tokens expire after 24 hours);
- the app's App Secret (App settings → Basic).
2. Create the account in Odoo
Open WhatsApp AI → Configuration → Accounts and click New:
| Field | What to enter |
|---|---|
| Name | A label for this number, e.g. Sales line |
| Phone Number ID | From Meta (required) |
| Display Number | The number as customers see it (optional) |
| WhatsApp Business Account ID | Your WABA ID — needed for Test Connection and Sync Templates |
| Graph API Version | Default v23.0. Meta retires versions over time; set the current stable version here |
| Access Token | Your Meta access token |
| App Secret | Your Meta App Secret — used to verify that incoming webhooks really come from Meta |
| Webhook Verify Token | Any secret phrase you choose; you will enter the same phrase in Meta |
| LLM Provider | Anthropic (Claude) (default) or OpenAI (GPT) |
| LLM API Key | Your Anthropic or OpenAI API key |
| LLM Model ID | The exact model id from your provider, e.g. a current claude-… or gpt-… model |
| Temperature | Default 0.4 — lower is more predictable |
| Max Tokens / Turn | Default 1024 — the longest reply the assistant may write |
| Max Tool Iterations | Default 5 — how many tool steps the assistant may take per customer message |
| AI Agent Enabled | On by default. Switch off to store incoming messages without automatic replies |
| Sales Persona / System Prompt | The instructions the assistant follows; a sensible sales default is filled in |
| LLM Input / Output $/1k tokens | Optional — your provider's prices, used for the cost estimate on each AI reply |
| Default Salesperson | Who gets a To Do activity when a conversation is handed over to a person |
Save, then click Test Connection. A green Connection OK message confirms the token and WABA ID work.
3. Connect the webhook
After saving, the account shows a Webhook URL of the form:
https://<your-odoo-domain>/whatsapp/webhook/<account_token>
In the Meta App Dashboard → WhatsApp → Configuration → Webhook:
- Paste the Webhook URL as the Callback URL.
- Enter your Webhook Verify Token as the Verify token and click Verify and save.
- Subscribe to the messages webhook field.
Your Odoo site must be reachable from the internet over HTTPS for Meta to deliver messages.
4. Sync your templates
Click Sync Templates on the account to import your approved message templates from Meta. They appear under WhatsApp AI → Configuration → Templates with their language, category and approval status.
Daily use
Conversations
WhatsApp AI → Conversations lists one conversation per customer number and account, with the linked contact, linked lead or opportunity, and status:
| Status | Meaning |
|---|---|
| Active | The assistant is answering this customer |
| Awaiting Human | The chat was handed over; the assistant stays silent until a person takes it back |
| Closed | Closed by a user, or automatically after 30 days without messages. A new customer message re-opens it |
Each conversation shows whether the 24-hour reply window is open and when it closes. Use Hand off to Human to stop the assistant on a conversation, and Close to close it.
When a conversation is handed over, a To Do activity is scheduled for the account's Default Salesperson (or, if none is set, the user who created the account) so a person can pick it up.
Leads and quotations
When a customer shows buying interest, the assistant can create a CRM lead and link it to the conversation. When the customer asks for a quote, it creates a draft quotation for the products discussed (creating the contact from the WhatsApp name and number if needed). Review and confirm quotations in Sales as usual — the assistant never confirms an order.
Messages and tool log
- WhatsApp AI → Messages — every incoming and outgoing message with its delivery status (sent, delivered, read, failed), whether it was written by the AI, the model used, tokens and estimated cost.
- WhatsApp AI → Configuration → Tool Log — every tool call the assistant made, with its arguments and result, so you can see exactly what data each answer was based on.
Scheduled action
WhatsApp: Close Stale Conversations runs once a day and closes active conversations with no messages in the last 30 days. You can adjust or switch it off under Settings → Technical → Scheduled Actions.
Technical reference
| Endpoint | Method | Auth | Purpose |
|---|---|---|---|
/whatsapp/webhook/<account_token> | GET | public | Meta's webhook verification. Returns the hub.challenge value only when hub.verify_token matches the account's Webhook Verify Token; otherwise 403 |
/whatsapp/webhook/<account_token> | POST | public | Incoming messages and delivery/read statuses from Meta |
How the public webhook is protected:
- Each account has its own random URL token; an unknown or archived token gets
404. Regenerate Webhook URL on the account issues a new one (update the Callback URL in Meta afterwards). - Every POST must carry a valid
X-Hub-Signature-256header, an HMAC-SHA256 of the raw request body signed with your App Secret. A missing or wrong signature gets403and nothing is processed. - Messages are de-duplicated on their WhatsApp message id, so Meta's retries never create duplicates or double replies.
- If the payload names a phone number id that belongs to a different account, it is ignored.
- Once the signature is valid, the endpoint always answers
200so Meta does not retry endlessly; processing errors are written to the Odoo server log.
Outgoing messages, read receipts and template lists use Meta's Graph API (/<phone-number-id>/messages and /<waba-id>/message_templates). AI replies use the Anthropic Messages API or the OpenAI Chat Completions API.
Tips
- Start with AI Agent Enabled switched off for a day to see the incoming traffic, then switch it on.
- Keep the system prompt short and specific: what you sell, your tone and language, and when to hand over to a person.
- Customers who have not written for over 24 hours can only be contacted with an approved template, by WhatsApp's own rules.
- Set your provider's prices in the cost fields to see the AI cost of each conversation.
Changelog
1.0.1 (2026-08-18)
- New app icon, consistent with the rest of the ECOSIRE catalogue.
- Maintenance release; no change to how the module works.
1.0.0 (2026-06-23)
- Initial release: WhatsApp Cloud API connection with signed, de-duplicated webhooks; AI assistant on Anthropic Claude or OpenAI GPT with product, price, stock, lead, quotation and hand-over tools; 24-hour window enforcement; template sync; conversation, message and tool-call audit with AI cost tracking; multi-company rules.
Support
Email info@ecosire.com with your Odoo version and a description of the conversation or setting in question. Setup support is included.