LemuAI

WhatsApp Messaging

Send WhatsApp messages from a live call or from a journey, using your own WhatsApp Business provider

Lemu can send WhatsApp messages on your behalf — either while a voice agent is on a call, or as a step inside a journey. Both paths use the same organization-level WhatsApp configuration, so you only connect a provider once.

There are two ways WhatsApp sending shows up in the product:

  • A "Send Message" tool you attach to an agent node, so the model can send a WhatsApp message (a link, a confirmation, a follow-up) to the caller mid-conversation.
  • A message node inside a journey, so a workflow can text someone as one of its steps — for example after a call ends, or when a trigger condition fires.

WhatsApp sending must go through an approved WhatsApp Business Solution Provider (BSP). Lemu does not provide WhatsApp numbers or templates itself — you connect your own provider account.

Connect a WhatsApp provider#

Configuration lives on Telephony → Messaging in the dashboard. Choose one of the supported providers and save its credentials:

ProviderCredentials
WATIAPI endpoint, API token
Meta Cloud APIPhone number ID, access token, and (optional) WhatsApp Business Account ID — needed to list templates
GupshupAPI key, source WhatsApp number, and (optional) app name — needed to list templates
Twilio WhatsAppAccount SID, auth token, WhatsApp-enabled from number — or reuse your existing telephony Twilio credentials

Saved secrets (API tokens, access tokens, auth tokens) are masked once stored — the dashboard shows them back as asterisks, and re-saving the form without touching a masked field keeps the existing value.

Once a provider is connected, use Test send on the same page to send a real WhatsApp template message to a number you specify, confirming your credentials and template are working before wiring them into a call or journey.

Session messages vs. template messages#

Every WhatsApp send is one of two kinds:

  • session — a free-form text message. This only works if the recipient has messaged your WhatsApp number within the last 24 hours (WhatsApp's session window).
  • template — a pre-approved WhatsApp message template. This works at any time, which makes it the right choice for anything business-initiated (outbound reminders, payment links, confirmations).

Templates must already be approved in your WhatsApp Business account. Lemu lists your approved templates by calling your provider's API — it doesn't create or submit templates for approval.

Working with templates#

Wherever you configure a WhatsApp send — the in-call tool or a journey node — you pick a template from a searchable picker that:

  • Loads your approved templates from the connected provider
  • Shows a WhatsApp-style preview of the template body, with {{variable}} placeholders highlighted
  • Lets you fill in a value (or a template expression like {{context.name}}) for each variable the template defines
  • Shows a URL button suffix field if the template has a URL button, so you can fill in the dynamic part of the link (for example, a payment or callback URL)

If no approved templates are found, the picker falls back to a plain text field for the template name and shows a hint pointing back to the messaging configuration page.

Sending WhatsApp during a call#

Attach a Send Message tool to an agent node so the model can send a WhatsApp message while the call is active. In the tool's configuration you set:

  • Destination — either the current caller (the tool defaults to the phone number on the call) or the model provides the number (the model must pass a phone number as an argument)
  • Message kind — session or template, and if template, which template and its variables/URL button suffix (via the same template picker described above)
  • Spoken line before sending — optional; None, or a custom line the agent says before it sends the message (for example, "I'm sending that on WhatsApp now.")

At runtime, the model can still pass a link or name argument when it calls the tool — these fill in remaining template variables (a URL button suffix, or a name variable) even if you didn't set them at configuration time. If the destination is set to "current caller", Lemu resolves the recipient's number from the call itself; you don't need the model to know or repeat it.

Session messages sent from this tool only succeed if the caller has an open 24-hour WhatsApp session with your number — otherwise, use a template.

Sending WhatsApp from a Journey#

Inside a journey, a message node sends a WhatsApp message as one step in the workflow. Its configuration includes:

FieldPurpose
to / to_fieldRecipient phone number, or a template expression that resolves to one (e.g. {{context.phone}})
kindsession or template
template_nameWhich approved template to send (required for template)
languageTemplate language code (defaults to en)
template_paramsValues for the template's variables, keyed by variable name or position (e.g. {"1": "{{context.name}}"})
button_url_suffixDynamic part of the template's URL button, if it has one

A message node fails validation (and won't run) if it's missing a recipient, or a template send is missing a template, or a session send is missing a body.

See Journey Nodes & Triggers for how the message node fits alongside other journey steps.

Phone number format#

Recipient numbers should be in E.164 format (e.g. +919876543210). Lemu normalizes numbers before sending and will reject an unsendable number — a 10-digit US-style number without a + is assumed to be +1; anything else without a recognizable country code is treated as invalid.

Troubleshooting#

  • "No organization on this call; cannot send a message" — the call isn't associated with an organization; this shouldn't happen in normal use.
  • Messaging not configured — no WhatsApp provider has been saved for your organization yet, or the saved configuration is incomplete. Go to Telephony → Messaging and save valid credentials for a provider.
  • No approved templates found — your provider account has no templates in an approved state, or a piece of provider config needed to list them is missing (Meta Cloud API needs a WABA ID; Gupshup needs an app name). Outbound WhatsApp must use an approved template outside the 24-hour session window.
  • Invalid recipient — the phone number couldn't be normalized to E.164. Check the number (or the field/expression supplying it) includes a country code.
  • Provider rejected the send — Lemu surfaces the upstream provider's error message as-is; check the template's approval status and parameter count against what the provider expects.

Support#

If you run into an issue connecting a provider or sending a message, reach out to ashish@lemuai.com.

© 2026 LemuAI. Built with our own docs platform.