BambooForge Labs

Marketing Automation All in One with SMS and WhatsApp

Marketing automation over SMS and WhatsApp: journey steps sent through your own Twilio or Meta account, delivery status back, STOP honoured.

Buy on the Odoo Apps StoreOpen the live demoMarketing€208Community & Enterprise

Available for Odoo 16.0, Odoo 17.0, Odoo 18.0, Odoo 19.0, Odoo 20.0. Technical name bambooforge_ma_messaging.

Odoo 16.0Odoo 17.0Odoo 18.0Odoo 19.0Odoo 20.0
Screens and walkthrough for
Transcript of the walkthrough (Odoo 20)

Marketing Automation All in One with SMS and WhatsApp. Marketing automation over SMS and WhatsApp: journey steps sent through your own Twilio or Meta account, delivery status back, STOP honoured. Said before you buy, because it is the half that decides whether the app fits: In the next few minutes: marketing automation all in one with sms and whatsapp, then gateways, then callbacks, then steps, then the log. Then what this app deliberately does not do, so you can tell before you buy whether it fits.

Everything lives under Gateways then Messages. 1. Copy bambooforge_ma_messaging into your addons path and update the app list, or install the ZIP from the Odoo Apps Store. 2.

Install Marketing Automation Suite: SMS & WhatsApp. 3. Open Gateways - its menus are Messages. Marketing Automation All in One with SMS and WhatsApp.

An add-on for BambooForge Marketing Automation (17.0). Two journey step types that send SMS and WhatsApp through Twilio or Meta's WhatsApp Cloud API with your own account, plus a Sandbox to rehearse on; a message log with delivery status coming back; STOP honoured. Gateways. Marketing Automation ▸ Gateways.

One record per sender: Sandbox - writes every send to the log with a fake reference; nothing leaves the server. Use it to rehearse a journey. Twilio - Account SID, auth token, and From: a Twilio number in E.164, a Messaging Service SID (MG…), or your approved WhatsApp number. Channel SMS or WhatsApp (a Twilio account doing both is two gateway records).

Meta WhatsApp Cloud API - Phone number ID and a permanent access token. WhatsApp only. Send test posts one message to the Test number and writes it to the log: the way to prove a gateway before it meets a journey. Callbacks.

Each gateway shows two URLs (with a secret token in the path): Status callback - Twilio: attached to every message automatically. Meta: statuses arrive on the webhook below. Inbound / webhook - Twilio: paste as the number's "A message comes in" webhook. Meta: paste as the app's webhook URL; it answers Meta's verification GET with the Webhook verify token shown on the record; subscribe to messages.

Steps. What happens on a participant: the number is taken from mobile then phone (19.0 dropped res.partner.mobile, so there it is simply phone); no number → skipped with a note; a blacklisted number → the participant exits the journey (STOP is regulatory); otherwise the message is rendered and sent, the send is logged, a trace is written, the journey advances. The sending window holds these steps like e-mails. Run Test writes "would send SMS via …" and sends nothing.

Send SMS (gateway) - gateway + Message (inline placeholders: Hi {{ object.name }}). The log. Marketing Automation ▸ Messages: gateway, number, journey, step, body, state (queued → sent → delivered → read, or failed with the provider's error), reference, last status time. Statuses never go backwards (a late "sent" after "delivered" is ignored).

Tests sent with the button are flagged and hidden by default. Retention. The message log is swept by Odoo's daily vacuum: rows older than bambooforge_ma_messaging.log_retention_days (a system parameter, 365 by default) are deleted. Set it to 0 to keep everything - some regulators ask for that, and then it is a decision rather than an oversight.

STOP. An inbound STOP (also STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT) on either platform adds the number to Odoo's phone blacklist (phone_validation installed) and is logged; the next gateway step for that number exits the participant. Honest about proof. Twilio and Meta were implemented against their published REST contracts and are exercised by this module's tests against recorded stubs.

The screenshots and the video run on the Sandbox gateway. Live delivery is proven on your account with Send test; no third-party credentials were used to build this module, and none are shipped. Technical notes Uses Marketing Automation 1.10.0's hooks: _messaging_step_types (sending window), _run_step_<type> dispatch, _dry_run_label. Python dependency: requests.

Community only. The external services are the ones you already pay for. How we make sure it works. Before every release, 33 automated checks run against this app on Odoo 16, 17, 18, 19 and 20.

Among them: A gateway in use cannot be deleted. Dry run names the gateway and sends nothing. A normal reply is not a stop. No number is refused before any call.

No number is skipped with a note. The complete list is in the source you receive. The complete manual is at docs dot bambooforge dot dev, the demo database is linked from the store page, and support answers within twenty-four hours. Links are in the description.

Log - bambooforge_ma_messaging
Log
Providers - bambooforge_ma_messaging
Providers
Step - bambooforge_ma_messaging
Step

Key facts

What it is
Marketing automation over SMS and WhatsApp: journey steps sent through your own Twilio or Meta account, delivery status back, STOP honoured.
For
Marketing
Odoo versions
16.0, 17.0, 18.0, 19.0, 20.0 - Community and Enterprise
Runs on
Odoo.sh or Odoo you host yourself - not Odoo Online, which accepts no third-party apps
Price
208 EUR, one-time, on the Odoo Apps Store
Technical name
bambooforge_ma_messaging
Not for
Said before you buy, because it is the half that decides whether the app fits:; Start a WhatsApp conversation without an approved template - only a template can.; Move a status backwards - a late sent after delivered is ignored.
Manual
https://docs.bambooforge.dev/bambooforge_ma_messaging/
Live demo
https://demo20.bambooforge.dev/odoo/action-bambooforge_ma_messaging.action_bf_messaging_provider
Store page
https://apps.odoo.com/apps/modules/20.0/bambooforge_ma_messaging
Manual last updated
2026-10-15

Marketing Automation All in One with SMS and WhatsApp

An add-on for BambooForge Marketing Automation (17.0). Two journey step types that send SMS and WhatsApp through Twilio or Meta's WhatsApp Cloud API with your own account, plus a Sandbox to rehearse on; a message log with delivery status coming back; STOP honoured.

Gateways

Marketing Automation ▸ Gateways. One record per sender:

  • Sandbox - writes every send to the log with a fake reference; nothing leaves the server. Use it to rehearse a journey.

  • Twilio - Account SID, auth token, and From: a Twilio number in E.164, a Messaging Service SID (MG…), or your approved WhatsApp number. Channel SMS or WhatsApp (a Twilio account doing both is two gateway records).

  • Meta WhatsApp Cloud API - Phone number ID and a permanent access token. WhatsApp only.

Send test posts one message to the Test number and writes it to the log: the way to prove a gateway before it meets a journey.

Callbacks

Each gateway shows two URLs (with a secret token in the path):

  • Status callback - Twilio: attached to every message automatically. Meta: statuses arrive on the webhook below.

  • Inbound / webhook - Twilio: paste as the number's "A message comes in" webhook. Meta: paste as the app's webhook URL; it answers Meta's verification GET with the Webhook verify token shown on the record; subscribe to messages.

Steps

Two new step types on a journey:

  • Send SMS (gateway) - gateway + Message (inline placeholders: Hi {{ object.name }}).

  • Send WhatsApp - gateway + either Message (a session message, only deliverable inside the 24-hour customer window) or a WhatsApp template name + language + Template variables (comma-separated inline expressions in {{1}}, {{2}} order). A template is the only way to start a conversation on WhatsApp; Meta approves them in your Business Manager, Twilio maps them to Content SIDs - name them as your provider expects.

What happens on a participant: the number is taken from mobile then phone (19.0 dropped res.partner.mobile, so there it is simply phone); no number → skipped with a note; a blacklisted number → the participant exits the journey (STOP is regulatory); otherwise the message is rendered and sent, the send is logged, a trace is written, the journey advances. The sending window holds these steps like e-mails. Run Test writes "would send SMS via …" and sends nothing.

The log

Marketing Automation ▸ Messages: gateway, number, journey, step, body, state (queued → sent → delivered → read, or failed with the provider's error), reference, last status time. Statuses never go backwards (a late "sent" after "delivered" is ignored). Tests sent with the button are flagged and hidden by default.

Retention

The message log is swept by Odoo's daily vacuum: rows older than bambooforge_ma_messaging.log_retention_days (a system parameter, 365 by default) are deleted. Set it to 0 to keep everything - some regulators ask for that, and then it is a decision rather than an oversight.

STOP

An inbound STOP (also STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT) on either platform adds the number to Odoo's phone blacklist (phone_validation installed) and is logged; the next gateway step for that number exits the participant.

Honest about proof

Twilio and Meta were implemented against their published REST contracts and are exercised by this module's tests against recorded stubs. The screenshots and the video run on the Sandbox gateway. Live delivery is proven on your account with Send test; no third-party credentials were used to build this module, and none are shipped.

Technical notes

  • Uses Marketing Automation 1.10.0's hooks: _messaging_step_types (sending window), _run_step_<type> dispatch, _dry_run_label.

  • Python dependency: requests.

  • Community only. The external services are the ones you already pay for.

How we make sure it works

Before every release, 33 automated checks run against this app on Odoo 16, 17, 18, 19 and 20. Among them:

  • A gateway in use cannot be deleted.

  • Dry run names the gateway and sends nothing.

  • A normal reply is not a stop.

  • No number is refused before any call.

  • No number is skipped with a note.

The complete list is in the source you receive.

What it does not do

Said before you buy, because it is the half that decides whether the app fits:

  • Start a WhatsApp conversation without an approved template - only a template can.

  • Move a status backwards - a late sent after delivered is ignored.

Install

  1. Copy bambooforge_ma_messaging into your addons path and update the app list, or install the ZIP from the Odoo Apps Store.

  2. Install Marketing Automation Suite: SMS & WhatsApp.

  3. Open Gateways - its menus are Messages.

Questions people ask

Which Odoo versions does it run on?

Odoo 16.0, 17.0, 18.0, 19.0, 20.0, on the series you buy it for; each series is its own listing.

Community or Enterprise?

Both. It needs no Enterprise app.

What does it need?

The standard Web; marketing automation (BambooForge) must be installed first app. No extra Python package.

Where does it show up?

Under the Gateways menu (Messages).

Does anything leave my server?

It makes calls outside your server only where its manual says so - read the section on that service before you connect it.

What happens if I uninstall it?

Odoo drops the app's own tables and fields; the standard records it worked on (contacts, orders, products) stay as they are.