> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.jambonz.org/tutorials/telephony-integrations/whats-app/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.jambonz.org/_mcp/server. # WhatsApp Jambonz now supports [WhatsApp Business Calling](https://developers.facebook.com/documentation/business-messaging/whatsapp/calling) ## WhatsApp configuration Consult the WhatsApp documentation for how to get your WhatsApp business number enabled for calling, > **Note** > > There are certain restrictions on making outbound calls to WhatsApp users; generally they need to give you permission to call them. We use the SIP integration from WhatsApp (not the graph API) and we recommend using SDES as the media transport instead of ICE/DTLS. In order to setup your WhatsApp number for SIP you will need to [make an API call](https://developers.facebook.com/documentation/business-messaging/whatsapp/calling/sip#configureupdate-sip-settings-on-business-phone-number) to WhatsApp to set the server HOSTNAME and PORT. The hostname should be your jambonz.cloud sip realm found on your account page, e.g.`accountname.sip.jambonz.cloud`; the port is \`5061. Once you have configured this on the WhatsApp API you should then be able to get your SIP\_USER\_PASSWORD from [this link](https://developers.facebook.com/documentation/business-messaging/whatsapp/calling/sip#include-sip-user-password). > **Note** > > Our friends at [NimbleApe](https://nimblea.pe) have written a [bash script](https://github.com/nimbleape/whatsapp-business-sip-setup/tree/main) to help with this setup ## jambonz configuration On jambonz we have added WhatsApp as a pre-defined carrier that will create a new Carrier in your account from our template. On the Add a carrier screen simply select WhatsApp from the dropdown at the top. ![](/_fern-img/66be65f95e407c77af77f67f73411f44d4cf21b69495f892d9da5fd0a00c4e3a.webp) This will create an Auth Sip Trunk with an outbound gateway with TLS/SRTP to `wa.meta.vc` port 5061. Now click the `Inbound` tab and edit the Username to be your WhatsApp Business number without the + symbol (e.g. 12125551212), and in the Password field enter the SIP\_USER\_PASSWORD you got from the WhatsApp API. ![](/_fern-img/3c3b9373420b23b98fc9743d6ea3dd7538ef1dd0082d71c904984e2826731451.webp) Next on the `Outbound` section add these same values to the Authentication section. ![](/_fern-img/44767c0cc72b75b9b7689435498faa8988eaf52004f4c349b3d43abef87a218a.webp) That's it for the carrier settings, you can leave the rest as they are set and click the Save button. ### Add phone number Finally, add and configure your WhatsApp number in the jambonz portal. Navigate to "Phone Numbers" on the left-hand side and click the "Add phone number" button. Enter your WhatsApp number, using international format and only numerical characters (e.g. "12125551212"). Next, select "the WhatsApp carrier you crated as the "Carrier", and select the jambonz application you want to handle incoming WhatsApp calls. > **Note** > > To initially validate your configuration we suggest that you test using the simple "Hello World" application. ![](/_fern-img/40761c08c8073f25ac0a25343af588bb4258431ae3c57402e00cb2860063c7e3.webp) To finish, click "Save". Now calls to your WhatsApp number should be routed to your jambonz application. ## Note about Outbound calling. When making an Outbound call from jambonz to WhatsApp you need to specify an additional header in the [Dial](https://docs.jambonz.org/verbs/verbs/dial) verb or the [Create Call](https://docs.jambonz.org/reference/rest-call-control/calls/create-call#request.body.headers) method. This header is named `X-Preferred-From-Host` and the value should be your jambonz sip realm; this is required otherwise WhatsApp rejects the call. ## Self Hosted Customers Customers self-hosting with version 10.0.4 or greater can use this feature. You will need to add an additional environment variable to the `ecosystem.config.js` file for `sbc-inbound`. The line is `JAMBONES_ACCEPT_AND_TRANSCODE: 'opus/16000'`