Skip to content

WhatsApp via Infobip

Connect WhatsApp through Infobip, a managed Meta BSP — three fields, the secret-URL webhook, delivery reports and sender registration for MENA/APAC.

Beta — request access for your workspace
Note:

This provider route is in beta and off by default. To enable Infobip WhatsApp for your workspace, open Support in your dashboard and send a request, or email help@evoriqa.com. Each provider route is enabled separately, so ask for Infobip by name — enabling it says nothing about the other one. Until it is enabled, the WhatsApp connect screen offers the Meta Cloud API route only — which is the recommended one anyway: your own Meta app, no per-message provider fee, and the app branding is yours. See WhatsApp via Meta Cloud API. The other beta route, requestable on its own, is WhatsApp via Telnyx. Follow one page, not several.

Infobip is a Meta BSP with managed onboarding, reusing the same credential set as your Infobip SMS and voice channels, and a WhatsApp channel already connected on Infobip keeps working regardless of the beta switch.

How a WhatsApp message reaches Evoriqa through the Infobip phone-provider transport, the same inbound-webhook flow as SMS
How a WhatsApp message reaches Evoriqa through the Infobip phone-provider transport, the same inbound-webhook flow as SMS

How the channel works

WhatsApp on Infobip is the same transport as SMS on Infobip — one inbound webhook URL (https://…/api/channels/{channelId}/inbound?secret=…) authenticated by the secret in the URL — with two differences: the sender is an Infobip-registered WhatsApp sender, and outbound replies go to Infobip's WhatsApp endpoint (/whatsapp/1/message/text) instead of the SMS one. If you have already connected SMS on Infobip, everything below will feel familiar.

What you need

  • An Infobip account.
  • An Infobip-registered WhatsApp sender.
  • Your API key and your account base URL.

Connect

  1. 1
    On the chatbot's Channels tab, add a WhatsApp channel, choose Infobip, and fill — all three required:

    The base URL is validated to match https://<subdomain>.api.infobip.com exactly — at connect and again on every send.

  2. 2
    Copy the webhook URL shown after connecting — it already carries a ?secret=… query param, shown once. Treat the whole URL as a credential and keep it private; the connected-channels list masks it afterwards, and losing it means reconnecting the channel.
  3. 3
    In the Infobip portal, set that full webhook URL (including ?secret=) as the sender's inbound-message webhook and its delivery-report webhook — both point at the same channel URL.

How webhooks are verified

Infobip does not sign webhooks: the secret in the URL is what authenticates its calls, compared in constant time on every request. A wrong or missing secret is rejected (403) and flips the health chip to Signature rejected. A single Infobip POST can carry inbound messages and delivery reports together; both are processed. Credentials are stored encrypted.

Note:

Sender registration. WhatsApp on Infobip needs a template-approved sender, and many MENA/APAC destinations require a pre-registered sender ID. Infobip's onboarding team registers these for you; until a sender is approved for a destination, messages there may be blocked or rewritten. Register before launch, not at first send.

Connect with the API

`POST /channels` takes the same three credentials. config.provider selects the transport — infobip here — and all four keys are required:

Omit provider and the call fails 422 with "Pick a provider for this channel." baseUrl must match https://<subdomain>.api.infobip.com exactly — anything else is rejected at connect, because that host is used to build every outbound call. The inboundSecret in the response is the ?secret= value for this channel's webhook URL, shown once: Infobip does not sign webhooks, so that secret is the whole of its inbound authentication. The same credentials connect SMS and Voice; only type changes.

Verify it works

Message the WhatsApp sender. The conversation should appear in the Inbox tagged WhatsApp, and the AI should reply. The health chip separates "Infobip is not calling us" (No messages yet) from "Infobip is calling with a bad secret" (Signature rejected).

Message flow

Inbound messages link the sender to a contact by phone number, join their open WhatsApp thread on this chatbot (or start a new one), and are deduplicated by provider message id so Infobip retries never duplicate. An inbound message can carry one media URL — download anything you need to keep, provider links can expire.

With AI replies on (default), the AI answers new threads through the same grounded pipeline as the widget; asking for a person escalates to the inbox wait queue. Off, every new thread lands flagged needs_human. A failed AI turn degrades to the human queue rather than going silent.

Replies are normalised for WhatsApp — markdown bold becomes WhatsApp's single-star *bold*, links become label: url. Outbound is text-only: no attachments, and no template messages.

The 24-hour window

WhatsApp only allows free-form replies inside a 24-hour customer-service window, which resets on each customer message. Outside it, the provider refuses the send: the message is marked Not delivered with the provider's reason. Evoriqa does not send re-engagement template messages, so a conversation that went cold has to be restarted by the customer.

Delivery reports

Infobip posts delivery reports to the same channel webhook, synced onto each outbound reply's row: DELIVEREDDelivered; UNDELIVERABLE, REJECTED, EXPIREDNot delivered with the stored reason and a one-click Retry. Intermediate PENDING/ACCEPTED reports are ignored, and statuses only move forward — a late report never downgrades a message. Infobip does not expose the read receipts or typing indicator that the Meta Cloud API provides.

Limits

  • Inbound webhook: 120 requests per minute per channel/IP; body capped at 2 MiB.
  • Inbound media: 1 attachment per message.
  • Outbound: free-form text only.
  • A paused channel rejects new inbound but still delivers replies to open threads.
  • One sender = one channel; connecting it twice shows a duplicate-number warning naming the other bot.

Troubleshooting

Where to go next

Last updated