Messages WhatsApp with a simple personal account
by ezway technology https://ezway-technology.com$ 116.49
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) • Sales (sale_management) |
| Lines of code | 1404 |
| Technical Name |
whatsapp_sales_free |
| License | OPL-1 |
| Website | https://ezway-technology.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) • Sales (sale_management) |
| Lines of code | 1404 |
| Technical Name |
whatsapp_sales_free |
| License | OPL-1 |
| Website | https://ezway-technology.com |
📱 WhatsApp Sales Free
No Meta API · No monthly fees · Works with any WhatsApp account
What is WhatsApp Sales Free?
WhatsApp Sales Free adds green "Send via WhatsApp" and "Remind via WhatsApp" buttons directly on your Odoo quotations and customer invoices. One click opens WhatsApp with a pre-filled message including secure portal links — no Meta Business API, no webhook, no monthly cost.
The module uses the free wa.me protocol: Odoo builds the message, your salesperson
clicks once to open WhatsApp (web or app), and sends it. Everything is traced in the chatter
and closed as a done activity.
Key Features
Quotation via WhatsApp
Send a pre-filled message with quote number, amount, and secure links to sign, refuse, or ask a question.
Invoice via WhatsApp
Send the invoice with the due amount, due date, and a direct payment link from the Odoo customer portal.
Smart Reminders
Dedicated reminder buttons for quotes (have you seen it?) and invoices (please pay), with interactive response links.
Per-action Security Tokens
Each portal link (refuse, question, seen, pay) uses its own unique UUID token, regenerated on every WhatsApp send. Tokens expire after a configurable number of days.
Automatic Follow-up
A daily cron creates a follow-up activity for the salesperson when a quotation has had no response, or when an invoice is overdue. Configurable delays — set 0 to disable.
Anti-spam & Revocation
The "Ask a question" link is limited to a configurable number of uses (default 3). A red "Revoke links" button instantly invalidates all active portal links.
Bilingual FR / EN
Templates automatically selected based on the customer's language (partner.lang). 8 customisable templates with a length warning above 600 characters.
Full Traceability
Every send is logged in the chatter with sender, number, and message. Activities are created and closed automatically.
Per-Salesperson Number
Each salesperson sets their WhatsApp number in their profile. Company fallback number used when none is configured.
How It Works
Salesperson clicks
"Send via WhatsApp"
Odoo builds the message
with fresh secure links
WhatsApp opens
pre-filled
Salesperson
hits Send
Chatter & activity
auto-updated
Message Examples
Quotation
Quotation Reminder
Invoice Payment Reminder
Customer Portal Pages
All portal pages are lightweight, public (no login required), and accessible on any device.
| Customer Action | What Happens in Odoo |
|---|---|
| ✅ Signs the quotation | Redirected to Odoo portal signature page |
| ❌ Refuses the quotation | Chatter note + To-do activity for salesperson + all quotation tokens invalidated |
| 💬 Asks a question | HTML form → message saved in chatter + activity (max N uses per link) |
| 👀 Confirms they reviewed it | Chatter note + pending reminder activity closed |
| 💳 Pays online | Redirected to Odoo payment portal |
| ✅ Confirms transfer made | Chatter note + activity "Please verify payment" |
Security
| Feature | Detail |
|---|---|
| Per-action UUID tokens | Each link type (refuse, question, seen, paid) has its own unique UUID token. A leaked link cannot be used for a different action. |
| Token rotation | All tokens are regenerated on every WhatsApp send. Old links are immediately invalidated. |
| Token expiration | Links expire after a configurable number of days (default: 7). Expired links return a friendly error page. |
| Revoke links button | Red button on the quotation / invoice form to instantly invalidate all active portal links. |
| Refusal invalidation | When a customer refuses, all remaining quotation tokens (question, seen) are cleared at once. |
| Question anti-spam | The "Ask a question" link is limited to N uses per send (configurable, default 3). Resets on next send. |
Configuration
1 — WhatsApp number per salesperson
Settings → Users → [Salesperson] → WhatsApp
Enter the number in international format: +33612345678
2 — Company fallback number
Settings → Sales → WhatsApp → Company WhatsApp Number
Used when the salesperson has no number configured.
3 — Customer uses WhatsApp
Contacts → [Contact] → "Uses WhatsApp" checkbox
The send button is only active for contacts marked as WhatsApp users.
4 — Token expiration & anti-spam
Settings → Sales → WhatsApp
| Setting | Default | Description |
|---|---|---|
| Token Expiration (days) | 7 | Days before portal links expire. Set to 0 to disable. |
| Max questions per link | 3 | Max uses of the "Ask a question" link per send. Set to 0 for unlimited. |
5 — Automatic follow-up activities
Settings → Sales → WhatsApp → Automatic follow-up activities
| Setting | Default | Description |
|---|---|---|
| Quotation follow-up after (days) | 0 (off) | Days after WhatsApp send with no response before creating a follow-up activity for the salesperson. |
| Invoice overdue follow-up after (days) | 0 (off) | Days after invoice due date before creating a follow-up activity if still unpaid. |
6 — Message templates (8 customisable)
Settings → Sales → WhatsApp
| Template | Language | Used for |
|---|---|---|
| Quotation Template 🇫🇷 | French clients | Send button on quote |
| Quotation Template 🇬🇧 | Other clients | Send button on quote |
| Quotation Reminder 🇫🇷 | French clients | Remind button on quote |
| Quotation Reminder 🇬🇧 | Other clients | Remind button on quote |
| Invoice Template 🇫🇷 | French clients | Send button on invoice |
| Invoice Template 🇬🇧 | Other clients | Send button on invoice |
| Invoice Reminder 🇫🇷 | French clients | Payment reminder on invoice |
| Invoice Reminder 🇬🇧 | Other clients | Payment reminder on invoice |
Template Variables
| Variable | Description |
|---|---|
{partner_name} | Customer name |
{order_name} | Quotation number (e.g. S00042) |
{amount_total} | Total amount (formatted) |
{invoice_name} | Invoice number |
{amount_due} | Remaining amount due |
{currency} | Currency code (EUR, USD…) |
{due_date} | Invoice due date (DD/MM/YYYY) |
{salesperson_name} | Salesperson full name |
{company_name} | Company name |
{order_url} | Portal link to sign the quotation |
{refuse_url} | Link to refuse (creates activity, invalidates all tokens) |
{question_url} | Link to the question form (limited uses) |
{seen_url} | Link to confirm quotation reviewed (reminder only) |
{invoice_url} | Portal link to pay online |
{paid_url} | Link to confirm payment made (reminder only) |
WhatsApp Sales Free vs. Meta WhatsApp Business API
| Feature | WhatsApp Sales Free | Meta WABA (paid) |
|---|---|---|
| Cost | 🆓 Free forever | 💰 Per-message fees + setup |
| Meta account required | ❌ No | ✅ Yes |
| Template approval | ❌ Not required | ✅ Required (24–72h) |
| Works with personal WhatsApp | ✅ Yes | ❌ No |
| One click required to send | ✅ Yes (manual confirm) | ❌ Fully automatic |
| Receive replies in Odoo | Via secure portal links | Via webhook |
| Setup time | 5 minutes | Days / weeks |
FAQ
Does this module send messages automatically?
No. The salesperson clicks the button, Odoo opens WhatsApp with the message pre-filled, and the salesperson clicks Send manually. This is by design — it avoids requiring any Meta approval or paid API. The automatic follow-up feature creates Odoo activities for the salesperson, not automatic WhatsApp sends.
Can I use it with a personal WhatsApp account?
Yes! wa.me works with any WhatsApp account — personal, WhatsApp Business app (free), or WhatsApp Business Platform. The only requirement is that the salesperson has WhatsApp installed on their phone or desktop.
What happens when the customer clicks a link?
They land on a lightweight Odoo portal page (no login required). Their action (refuse, question, seen, paid confirmation) is immediately logged in the chatter and an activity is created for the salesperson. If the customer refuses, all remaining portal links (question, seen) are immediately invalidated.
Are the portal links secure?
Yes. Each action (refuse, question, seen, paid) uses its own unique UUID token, separate from Odoo's generic access_token. Tokens are regenerated on every WhatsApp send, expire after a configurable number of days (default 7), and are invalidated when the customer refuses. You can also revoke all links manually with the "Revoke WhatsApp links" button on the form.
Is the module compatible with Odoo 17 / 18?
The module is developed and tested for Odoo 19. It may work on 17/18 with minor adjustments but this is not officially supported.
Can I customise the message templates?
Yes. All 8 templates (quotation/invoice × send/reminder × FR/EN) are fully customisable in Settings → Sales → WhatsApp. Changes apply immediately, no restart required. A warning is shown if a template exceeds 600 characters.
Pricing
- Unlimited quotations & invoices
- Unlimited salespersons
- No subscription
- No Meta account
- Source code included
WhatsApp Sales Free · ezway technology · OPL-1 · Odoo 19
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