WhatsApp

Send WhatsApp messages from your agents.

Some things are just easier in writing. A payment link, a booking reference, a “here’s where to sign” - the caller can’t scribble those down while they’re on the phone, and reading a long URL out loud never ends well. So oyehello lets your agent send a WhatsApp message during or right after the call: “Great, I’ve just sent that to your WhatsApp.”

The important thing to understand up front is that WhatsApp runs on your own account, not ours. You connect your own WhatsApp Business setup, messages go out from your verified business number, and they’re billed by your provider - not from your oyehello call wallet. That’s a deliberate choice, and it has real consequences for how you set this up, so let’s walk through the whole thing.

The one rule that governs everything here: oyehello can only send a WhatsApp message if your workspace has connected a WhatsApp account and the message uses a pre-approved template. No connection, no send. No approved template, no send. There’s no way around either - it’s WhatsApp’s rule, not ours.


What it’s for

The Send WhatsApp action is a follow-up, not a chat. Your agent isn’t going to have a text conversation with the caller - it sends one useful message at the right moment. Good uses:

  • Send a link the caller can’t take down by voice - a payment page, a form, a location, a calendar link.
  • Send a confirmation so there’s a written record of what was agreed on the call.
  • Send next steps after the call so the caller knows what happens now.

It can fire in two places:

  • During the call - the agent triggers it mid-conversation via the Send WhatsApp tool (more on that below), then refers to it out loud.
  • After the call - an outcome-board or campaign automation can send a template based on how the call went (for example, “send the brochure to everyone who asked for one”).

Step 1 - Connect your own WhatsApp account

This lives under Integrations → WhatsApp Business. You’ll pick one of two ways to connect, and you only need one. Whichever you connect becomes your active provider - the one all your templates and sends run through.

Why your own account, and not ours? Two reasons, both in your favour. Ownership: the sender is your verified business number and the templates are your templates, so your brand and your WhatsApp relationship with the customer stay entirely yours. Billing: WhatsApp messages are billed directly by your provider to you - they never touch your oyehello wallet, so your call credit and your messaging spend stay cleanly separate. See Billing & wallet for what the wallet does cover (spoiler: calls, not WhatsApp).

You need admin access to connect or change any of this. If you’re a regular member, you’ll see the settings but the fields will be locked - ask a workspace admin.

Option A - MSG91

MSG91 is a WhatsApp business solution provider (BSP). If you already send WhatsApp through MSG91, this is the quickest path. You’ll fill in three things:

  • MSG91 auth key - the API key from your MSG91 account. This is stored write-only: once you save it, oyehello never shows it back to you (the field stays blank), which is why on later edits you can leave it empty to keep the key you already saved. You only type it again if you’re changing it.
  • WhatsApp number - the business number connected to your MSG91 WhatsApp account. Enter it country code first, digits only, no + - for example 919000000000. This is the number your customers will see the message come from.
  • Default template language - the language oyehello assumes for your templates unless a specific template says otherwise. Set it to the language your customers actually read.

Option B - Facebook (Meta Cloud API)

If you run WhatsApp directly through your own Meta app (the Cloud API), connect that instead. There’s no Facebook login here - you just paste three values from your Meta app:

  • Permanent access token - the system-user access token from your Meta app. Like the MSG91 key, it’s write-only: saved once, never shown back, leave blank on later edits to keep it.
  • Phone number ID - found under WhatsApp → API Setup in your Meta app. This is the ID of your sending number (not the number itself).
  • WhatsApp Business Account (WABA) ID - needed so oyehello can list and create your message templates. Without it, connecting still works but template management won’t.

You can only have one active provider at a time. If you happen to connect both, the templates and every send use whichever one is marked active. Switch providers and you should re-check the templates picked in your agents and automations - a template that exists in one provider may not exist in the other.

Prove it works

Once you’re connected, use Send a test message: pick a number and one of your already-approved template names, hit send, and confirm it lands. This checks your credentials end-to-end before you point a live agent at it. If the test lands, you’re genuinely connected.


Step 2 - Create and approve templates

Here’s the part that trips people up if they’re new to WhatsApp: you cannot send free text. Any message your business starts (outside a live 24-hour customer-care window, which agent follow-ups always are) must use a template that Meta has reviewed and approved in advance. This is WhatsApp’s anti-spam rule, and oyehello enforces it - the send port is template-only by design.

Manage templates under Integrations → WhatsApp (they belong to your active provider). Each template you create has:

  • Template name - an internal ID in lowercase letters, numbers, and underscores only, like order_update. This is the name you’ll reference later, not something the customer sees.
  • Category - Utility (transactional: confirmations, updates, reminders), Marketing (promotional), or Authentication (OTP-style). Pick honestly - Meta reviews against the category, and the wrong one gets rejected.
  • Language - the language this specific template is written in.
  • Message body - the actual text. This is where variables come in (next section).
  • Sample values - if your body has variables, you supply example values so Meta’s reviewer can see a filled-in version. Required for review; not sent to real customers.
  • Footer - an optional line at the bottom, like Team Acme.

When you submit, the template goes to Meta for approval. You’ll see a status against each one:

  • Approved - ready to send. Only approved templates can be used by an agent.
  • Pending - still under review (usually just a few minutes).
  • Rejected - Meta declined it; fix it and resubmit.

Plan ahead. A brand-new template can’t be used the instant a call needs it - it has to clear approval first. Create the templates you’ll need before you launch the campaign, not during it.

Variables: the {{1}}, {{2}} placeholders

To personalise a template, drop numbered placeholders into the body:

Hi {{1}}, your order {{2}} is confirmed.

Each {{n}} is a slot that gets filled in per contact when the message is sent - so one template greets Priya about order #4471 and the next person about theirs. You number them in order: {{1}} is the first value you’ll supply, {{2}} the second, and so on.

Every variable must resolve to a real, non-empty value. WhatsApp rejects a template send if any placeholder comes back blank - and it fails with an unhelpful error. So a template with two variables must get two actual values at send time, or oyehello won’t send it (and will log why rather than fire a broken message). Keep this in mind when you map variables in the next step.


Step 3 - Turn on the Send WhatsApp tool for an agent

Connecting an account and approving templates makes sending possible. To let a specific agent actually send during a call, add the Send WhatsApp tool to that agent (under Tools & actions - see also Create an agent, Step 3). If your workspace hasn’t connected WhatsApp yet, the tool shows a warning and won’t send anything, so connect first.

Inside the tool you build a small list of templates the agent is allowed to send. For each one you add:

  • Display name - a friendly label for you, like “Loan follow-up.” Helps you tell entries apart.
  • Approved template - you pick from a dropdown of your approved templates only. (Pending or rejected ones don’t appear - there’s nothing to gain from letting the agent try to send them.)
  • Variable mapping - for every {{n}} in the chosen template, you tell oyehello which contact field fills it. If the body is Hi {{1}}, your order {{2}} is confirmed, you might map {{1}} → name and {{2}} → order_id. At send time, oyehello pulls those values from the contact and drops them in.
  • When the agent sends it - a short description of the moment this should fire, like “After the caller confirms a delivery slot.” This is required, and it’s what the agent reads to decide when to send. Be specific: a vague description means the agent guesses.

The mapping is where sends succeed or fail. Remember the non-empty rule from Step 2: the contact fields you map here must actually contain values for the contacts you’re calling. Map {{1}} → name but leave the name column empty for half your list, and those sends will be skipped rather than sent broken. Line your template variables up with columns your contact list genuinely has - this is the same discipline as custom variables in the agent’s call context.

Save the tool, publish the agent, and the agent can now send that template mid-call and mention it naturally.


The limits (so nothing surprises you)

Everything above adds up to a few hard boundaries worth stating plainly:

  • Template-only. No free-form messages. The agent can only send templates you’ve built and Meta has approved.
  • Approval is mandatory and takes time. A template must be approved before an agent can use it - create them ahead of your launch.
  • A connection is required. No connected provider means the tool simply doesn’t send. oyehello will never quietly fall back to some shared platform number - there isn’t one.
  • Variables must fill. Any placeholder that resolves to empty blocks that one send. Map to columns your contacts actually have.
  • You own the account and the bill. Messaging is billed by MSG91 or Meta to you directly, separate from your oyehello call wallet.

Get the account connected, a couple of clean approved templates in place, and the tool mapped to real contact fields - and “I’ve just sent that to your WhatsApp” becomes a genuinely reliable part of your calls.


Next: Billing & wallet →