Fleet Workshop WhatsApp
Your customers follow their repair on WhatsApp — through the official Meta Cloud API
Add-on for Fleet Workshop App, which is required and sold separately.
Try it live
Use the Live Preview button of this page — user demo, password demo. The demo runs in test mode: move a work order to another stage and see the message logged, without any Meta account and without sending anything.
Official, not a gateway
- WhatsApp Business Cloud API of Meta: no phone scanning, no risk of number ban
- Your own Meta Business account; conversation fees paid directly to Meta
- Credentials visible to administrators only; signed webhook
A message for every stage
- Link your approved templates to the workshop stages: received, quotation ready, ready for delivery...
- Parameters filled from the work order: customer, plate, amount, branch
- Dynamic URL button to the repair portal (approve the quotation from WhatsApp)
- One template per language, chosen from the customer's language
Reliable delivery
- Sending queue processed after commit, automatic retries on temporary errors
- Sent / delivered / read / failed status for every message
- Customer replies land in the chatter of their open work order
Compliance
- Explicit WhatsApp opt-in per customer, with date
- Nothing is sent without opt-in and a valid international number
- Test mode for demos and trainings
What you need
To send real messages
- A Meta Business account with the WhatsApp Cloud API enabled and a registered phone number
- Its phone number ID, a permanent access token and the app secret, entered in the Workshop settings
- Your message templates created and approved by Meta (same name and language as in Odoo)
- Six starter templates (received, quotation ready, ready for delivery, in Spanish and English) are included, archived: use them as the model for the templates you submit to Meta
- An Odoo address reachable over HTTPS, so Meta can call the webhook (delivery status and replies)
- Meta bills its conversation fees to you directly; they are not included in this module
To try it first
- Test mode works without any Meta account: messages are rendered, queued and marked as sent, and nothing leaves Odoo
- Use it to train the team and to check templates and parameters before going live
- The Python library
phonenumbersmust be installed on the server (already present in the official Odoo Docker images)
Templates linked to the workshop stages

Parameters filled from the work order

Message log: sent, delivered, read, failed and customer replies

Manual sending, with the customer opt-in in sight

Settings: credentials, webhook and test mode

Getting started
The Documentation tab of this page is the basic configuration manual: what you need in Meta, credentials, webhook, templates, consent, test mode and what to check before going live.
- Activate the add-on and tick WhatsApp notifications and Test mode in the workshop settings.
- Get the starter templates (or your own) approved in Meta, then activate them in Odoo.
- Record the WhatsApp consent of your customers on their work orders.
- Enter your Meta credentials, verify the webhook, test with your own phone and only then switch off the test mode.
Requires Fleet Workshop App · Odoo 18, 19 and 20 · Community & Enterprise · Multi-company
WhatsApp is a trademark of its respective owner · By Sapientia SpA — contacto@sapientia.cl
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Fleet (fleet)
• Inventory (stock) • Repairs (repair) • Sales (sale_management) • Discuss (mail) • Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 7030 |
| Technical Name |
sapi_fleet_workshop_whatsapp |
| License | OPL-1 |
| Website | https://www.sapientia.cl |
Fleet Workshop WhatsApp
Basic configuration manual for Odoo 20.0. WhatsApp notifications for the work orders of Fleet Workshop App, through the official WhatsApp Business Cloud API of Meta. Menu paths, buttons and field names are written as they appear in Odoo 20.0 with the English interface.
Read "Before going live" first: sending real messages needs an account and approved templates on the side of Meta, and this cannot be done from Odoo. The test mode lets you try everything else without Meta.
Requirements
In Odoo
- Odoo 20.0, with Fleet Workshop App (sapi_fleet_workshop) version 1.0.1 or later installed and configured. This add-on is sold separately and does not work without that app.
- The Python library phonenumbers on the server. It is present in the official Odoo Docker images; elsewhere install it with pip. Odoo refuses to install the add-on without it.
- For real messages: your Odoo must be reachable from the internet over HTTPS, so that Meta can call the webhook, and the server must be able to open outgoing HTTPS connections to graph.facebook.com.
- An Odoo administrator (user form, tab Access Rights, section Roles, field Role: Administrator) to enter the credentials; the workshop role Manager / Administrator to manage the templates.
In Meta
You need, from your own Meta Business account:
- an app with the WhatsApp product (WhatsApp Business Cloud API);
- a phone number registered in that product, and its Phone Number ID;
- the WhatsApp Business Account ID that owns the number;
- a permanent access token of a system user of your Meta Business account, allowed to send WhatsApp messages. The temporary token shown in the developer console expires after a few hours and is only useful for a first test;
- the App Secret of the app;
- your message templates created in WhatsApp Manager and approved by Meta, one per language.
Meta bills its conversation fees to you directly. They are not included in the price of this add-on. The screens of Meta change often: follow the current documentation of Meta to obtain each of these items.
Installation
- Copy the folder sapi_fleet_workshop_whatsapp into the addons path of your Odoo server, next to sapi_fleet_workshop, and restart the Odoo service.
- Activate the developer mode, open Apps and click Update Apps List, then Update.
- In Apps, remove the Apps filter from the search bar, search for Fleet Workshop WhatsApp and click Activate.
The add-on adds the menus Workshop > Operations > WhatsApp Messages and Workshop > Configuration > WhatsApp Templates, the button WhatsApp Template and the switch WhatsApp Notifications on the work order, and a section WhatsApp Business in the workshop settings.
After the installation nothing is sent: the notifications are disabled and the six starter templates are archived. (On a database created with demo data, four of them are active and the test mode is enabled.)
Try it in test mode
The test mode does everything except calling Meta: messages are prepared, queued and marked as sent, and nothing leaves Odoo. Use it to check your templates and to train the team.
- Open Workshop > Configuration > Settings (Odoo administrator), section WhatsApp Business. Tick WhatsApp notifications and Test mode. Click Save.
- Open Workshop > Configuration > WhatsApp Templates and switch on Active on a starter template, for example "Quotation ready" (see "Templates" below).
- Open a work order whose customer has a mobile number and switch on WhatsApp Notifications (tab Reception, section Privacy).
- Move the order to the stage of the template. A message appears in Workshop > Operations > WhatsApp Messages with the state "Queued" and, within five minutes, "Sent"; a note with the text is written in the history of the order.
In test mode the messages never become "Delivered" or "Read", because Meta is not involved.
Initial configuration
1. Credentials
Open Workshop > Configuration > Settings, section WhatsApp Business, with WhatsApp notifications ticked. The credentials are only visible to Odoo administrators.
Under Meta Cloud API credentials:
- Phone Number ID
- WhatsApp Business Account ID (kept for reference)
- Access Token: the permanent token
- App Secret: used to check that the webhook calls really come from Meta
- Graph API Version: v23.0 by default; change it only if Meta retires that version
Click Save.
2. Webhook
The webhook is how Meta tells Odoo that a message was delivered, read or failed, and how the replies of the customers arrive.
In the same section, under Webhook, Odoo shows:
- Callback URL: /workshop/whatsapp/webhook/ followed by the number of the company, on the address of your Odoo. If it shows localhost or an internal address, log in once as administrator through the public address, or set the system parameter web.base.url.
- Webhook Verify Token: generated by Odoo for each company.
In the WhatsApp product of your app in Meta, open the webhook configuration, paste the callback URL and the verify token, verify, and subscribe to the field messages.
The verification only succeeds if WhatsApp notifications is ticked and saved in Odoo, and if Meta can reach the callback URL. The App Secret must be filled in: without it Odoo rejects every webhook call.
3. Templates
WhatsApp only allows a business to start a conversation with a template that Meta approved. Create each template in WhatsApp Manager first, wait for its approval, then register it in Odoo.
Open Workshop > Configuration > WhatsApp Templates. The list also shows the archived templates.
The add-on ships six starter templates, archived (greyed in the list):
- "Vehicle received": Meta name workshop_vehicle_received, stage Reception, parameters customer name, plate and branch name, with URL button.
- "Quotation ready": Meta name workshop_quotation_ready, stage Quotation / Approval, parameters customer name, plate and quotation total, with URL button.
- "Ready for delivery": Meta name workshop_vehicle_ready, stage Ready for Delivery, parameters customer name, plate and branch name, no button.
Each one exists in Spanish (language es) and in English (language en_US). They are a starting point, not approved templates: create in WhatsApp Manager a template with the same name, the same language, the same number of parameters and the same button, wait for the approval of Meta, and only then switch on Active on the line of the template. If Meta approved a different name or text, change the template in Odoo to match it. A template that stays archived sends nothing.
A template linked to the stage Reception is sent when the work order is created, and again if an order is moved back to that stage.
To add your own template, click New:
- Name: your own name for the template.
- Meta Template Name: the exact name approved in WhatsApp Manager (lowercase letters, digits and underscores only).
- Language: the exact language code of the approved template, for example es, es_MX, en_US or pt_BR.
- Send on Stages: the workshop stages that send the template automatically. Leave it empty for a template that is only sent by hand.
- Body: a copy of the approved text with its placeholders {{1}}, {{2}}... It is only used to show and log what was sent; the real text is the one approved by Meta.
- Parameters: one line per placeholder, in order. Value is a
field of the work order, for example partner_id.name (customer),
license_plate or vehicle_id.model_id.name, or one of the special
values:
- company_name: the name of the branch (or of the company)
- amount_total: the total of the quotation
- stage_name: the current stage
- portal_url: the full link to the customer portal
- portal_path: the same link without the address of your Odoo
- URL Button Parameter: fill it in only if the approved template has a button with a dynamic web address. Use portal_path and, in Meta, define the button address as the address of your Odoo followed by /{{1}}. The button then opens the portal page of the order, where the customer can approve the quotation.
The number of parameters must be the same as in the approved template. Fields restricted to some users (for example the credentials) and files cannot be used as parameters.
For a second language, create another template in Odoo with the same stage and the other Language. Odoo chooses the template whose language matches the language of the customer, or else the first one.
4. Opt-in of the customers
WhatsApp requires the explicit consent of each customer. Nothing is sent to a customer without it.
- On the work order, tab Reception, section Privacy: switch on WhatsApp Notifications. The consent and its date are saved on the customer and apply to the following orders.
- The same switch is in the window opened by WhatsApp Template.
- The consent is saved on the contact: receptionists and managers can switch it on, technicians cannot.
The number used is the phone number of the customer. Write it in international format (+56 9 ...); a number without prefix is completed with the country of the customer, or else of the company.
Before going live
Switch off Test mode only when all of this is true:
- The phone number is registered in the WhatsApp product of your Meta app and you have its Phone Number ID.
- The Access Token is permanent (system user), not the temporary one.
- The App Secret is filled in.
- Every template that is active in Odoo is approved in WhatsApp Manager, with exactly the same name, language and number of parameters, and the same URL button if it has one. This includes the starter templates: being shipped with the add-on does not make them approved.
- Your Odoo is reachable over HTTPS, and the webhook is verified and subscribed to messages.
- A test with your own phone works: give your consent on a test order, move it to a stage with a template and check that the message arrives, that its state becomes "Delivered" and "Read", and that your reply appears in the history of the order.
This add-on is delivered tested in test mode and with simulated answers of Meta. The test with your real Meta account (point 6) must be done on your own installation before you rely on it.
Daily use
- Automatic messages: when a work order reaches a stage that has a template, the message is queued and sent in the background (at once, and at the latest by the scheduled action "Workshop: send queued WhatsApp messages", every five minutes). A note with the text is added to the history of the order.
- Manual message: on the order, click WhatsApp Template, choose the Template, check the preview and click Send.
- Follow-up: the menu Workshop > Operations > WhatsApp Messages lists every message with its state: "Queued", "Sent", "Delivered", "Read", "Failed", "Received" (a reply of a customer) or "Not sent" (with the reason). The button WhatsApp at the top of the order opens the messages of that order.
- Errors: a temporary error of Meta is retried automatically, up to five attempts with a growing delay. A permanent error marks the message "Failed" with the message of Meta, and writes a note on the order. After correcting the cause, open the message and click Retry.
- Replies: a text reply of the customer is saved as "Received" and posted in the history of the open work order of that customer (the most recent one). For photos, audio and other kinds of message, Odoo only notes that something was received: read it in WhatsApp.
The button WhatsApp in the row of buttons of the order (next to Send Link) belongs to Fleet Workshop App: it opens WhatsApp on your device with the portal link and does not use the Cloud API.
Roles and permissions
- Technician / Mechanic: reads the templates and the messages.
- Receptionist / Service Advisor: sends templates by hand, sets the consent of the customer, retries failed messages.
- Manager / Administrator: creates and changes the templates.
- Odoo administrator: enables the notifications and the test mode, and is the only one who sees the credentials and the webhook data.
Multi-company
- The credentials, the test mode and the webhook are per company. Each company has its own callback URL (it ends with the number of the company) and its own verify token, and normally its own phone number.
- A template belongs to the company where it was created; clear its field Company to share it.
- A reply of a customer is attached to an order of the company whose webhook received it.
Troubleshooting and FAQ
- The message is "Not sent": "The customer has not accepted WhatsApp notifications."
- Switch on WhatsApp Notifications for the customer and send the template by hand.
- The message is "Not sent": "The customer has no valid mobile number."
- Correct the phone of the customer, with the international prefix.
- "You are not allowed to modify 'Contact' records" when switching on the consent.
- The user lacks the standard right to edit contacts: see "Opt-in of the customers".
- No message is created when the order changes stage.
- WhatsApp notifications is not enabled for the company, or no active template has that stage in Send on Stages. The starter templates are archived until you switch on Active. With Fleet Workshop App 1.0.0 a template on the stage Reception is not sent when the order is created: update the app to 1.0.1.
- "WhatsApp Business is not enabled in the workshop settings."
- Shown by WhatsApp Template. Tick WhatsApp notifications in the settings.
- The message is "Failed": "WhatsApp is not configured: phone number ID and access token are required."
- The test mode is off and the credentials are empty. Enter them, or tick Test mode.
- The message is "Failed" with a message of Meta.
- The text comes from Meta. The usual causes are a template that does not exist with that name and language, a different number of parameters, an expired token or a number that is not on WhatsApp. Correct it and click Retry.
- Meta cannot verify the webhook.
- Check that the callback URL is the public HTTPS address, that the verify token is the one shown in Odoo for that company and that WhatsApp notifications is ticked and saved.
- Messages stay "Sent" and never become "Delivered".
- In test mode this is normal. Otherwise the webhook is not subscribed to messages, or the App Secret is wrong: the Odoo log then shows "WhatsApp webhook rejected ... (invalid signature)".
- The reply of a customer does not appear on the order.
- The customer has no open work order in that company, or the number of the reply does not match the phone of any customer. The reply is still listed in the WhatsApp messages.
- The add-on cannot be installed: "phonenumbers".
- Install the Python library phonenumbers on the server and restart Odoo.
Support and scope
Support: contacto@sapientia.cl (Sapientia SpA). Please include your Odoo version, the installed version of the add-on, the state and the error of the message, and never your access token or your app secret.
Included: the add-on for your Odoo series and the fixes of its defects on a standard Odoo installation.
Not included:
- Fleet Workshop App itself (sold separately).
- Your Meta Business account, the registration of the phone number, the creation and approval of the templates and the fees of Meta.
- Installation, the publication of your Odoo on the internet, training and customizations.
- Free-text conversations, marketing campaigns, and messages for appointments or maintenance reminders: the add-on sends approved templates for the stages of the work orders and receives the replies.
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