FAQ
The questions asked most often about WhatsApp Sales and Payment Automation, answered.
Is this AI?
No, and none is required. It is a rule engine: a keyword, a condition, an action, tried in order, first match wins. Every automatic reply names the rule that produced it.
That is honest and it is also the better product. A customer who believes the system understands them writes "can you push my delivery to Thursday afternoon" and gets silence. A customer shown a numbered menu types 2 and gets served.
No third-party AI subscription, and no data sent anywhere but Meta.
How does this differ from your WhatsApp Core module?
They do different jobs and neither depends on the other.
| WhatsApp Integration — Messages (technovision_whatsapp_core) | Sending. An outbound channel: one call to send, one message log, templates, retry with backoff, delivery status. It has no webhook and cannot receive anything. |
| This module | Receiving, and answering. A webhook, per-customer conversations, the 24-hour window, keyword rules, order and invoice lookups, payment links, handover, opt-out. |
If you only send notifications from Odoo, Core is cheaper and simpler. If customers message you and you want those conversations answered, this is the one. They keep separate records under separate model names, so installing both is safe.
Has this been tested against Meta?
No call has ever been made to Meta from this module. There is no app, phone number id, system-user token or app secret on the development account.
What is verified, over real HTTP against Meta's documented payload shapes: the verification handshake, signature validation, idempotency on wamid, status transitions, the store-then-acknowledge split, and every send refusal. The outbound request body matches the documented structure, but nobody has watched Meta accept it.
Every documented fact the module relies on is recorded with its source URL and the date it was read, including a table of what could not be confirmed.
Why does nothing send when I first install it?
A new number is created not enabled, and says so on its form. Inbound messages are stored so nothing is lost, but nothing is sent and no rule runs.
That is the state you want while setting rules up — you can watch what people actually ask before letting anything answer them.
My reply was refused. Why?
Three common reasons, all of which are stated rather than silent:
- Outside the 24-hour window. Meta delivers an ordinary message only within 24 hours of the customer's last one. Outside it, only an approved template arrives, so the module refuses before making the request — the alternative is a message that silently never arrives, which looks exactly like a customer who did not reply.
- The customer opted out. Permanent, and nothing overrides it.
- The number is not enabled.
Does an outbound message extend the 24-hour window?
No. Only the customer's own message does. This catches people out, which is why the conversation shows the window state rather than making you remember.
Why will it not tell an unknown number their order status?
Because it would have to guess whose orders to show. A number matching no contact gets a person instead.
Only the anonymous-safe actions run for a stranger: reply, menu, create a lead, handover, opt-out, opt-in, do nothing. Everything that reads records needs to know who it is talking to.
Why will it not send a statement?
A phone-number match is not authentication, and a statement shows a customer's entire position with you — every invoice, every payment, what they owe.
A statement request confirms the request and raises a task. A person checks who they are talking to and sends it.
Why is a quotation created empty?
Because a sentence is not an order. "20 of the blue ones" becomes a draft quotation with no lines and a task for sales. Pricing it automatically would be guessing about product, quantity and price on the customer's behalf, and a wrong guess is a quotation you have to withdraw.
Can it start a conversation?
Never. WhatsApp is the customer's channel and an unsolicited first message from a business is what gets a number blocked.
Do interactive buttons work?
No, deliberately. The reply payload shape for buttons and list messages could not be confirmed from Meta's published documentation, and this module does not parse structures from memory.
The numbered text menu works on every client, needs no template approval, and accepts "2", "status" or the words.
Template sync does not work
It is unverified. The endpoint for listing a business account's templates could not be confirmed against the documentation, so a failed sync says so and changes nothing rather than inventing templates.
Add templates by hand and they work.
Can an agent override an opt-out?
No. The check is in the single function that queues a message, so no rule, button or action can route around it — including a person typing a reply. Opting back in has to come from the customer.
Which payment gateway does it use?
Whichever you have enabled in Odoo. A payment link is Odoo's own portal link, so it works with our Paymob module or anything else, and keeps working if you switch.
Does it read images and documents?
No. They are stored verbatim with their type and handed to a person. Nothing tries to interpret them.