- Choose a provider before you collect any value.
- Complete the provider setup for your choice: Meta setup, Infobip setup, or Gupshup setup.
- Artemis channel configuration: create the connection with the provider’s values, then copy the generated webhook URL.
- Webhook configuration with your provider: register the callback URL so inbound messages reach Artemis.
- Verify the connection with a real two-way WhatsApp conversation.
- The provider selector changes the whole setup: It decides which fields the dialog shows, which webhook route the connection generates, and which in-product setup guide appears. Values from one provider never work on another provider’s route, so pick the provider first and keep every value on that single path.
- Who owns the WhatsApp Business account differs by provider: On Meta Cloud API, you hold the account directly and Meta issues a test sender in minutes. On Infobip and Gupshup, the provider holds the account and onboards the sender for you, which removes the Meta paperwork at the cost of a provisioning wait.
- Inbound verification strength differs by provider: Meta signs every callback with your App Secret. Gupshup can send a signed bearer token if you set a JWT secret. Infobip sends no signature at all, so you protect its route with network controls instead.
- The Meta test token expires within 24 hours: It’s enough to test and not enough to run. See Create a permanent access token.
- A verified webhook proves less than it appears to: A 2xx response proves only that your provider reached the runtime. It says nothing about whether your outbound credentials work, so always finish with a real two-way conversation.
Prerequisites
Collect these before you open the connection dialog, because Meta and the BSPs both gate production on review time you can’t shorten.- An account with your chosen provider: a Meta developer account, an Infobip account, or a Gupshup Enterprise WhatsApp account.
- For production on any path, the business details Meta requires for verification. Every route waits on Meta review, so start early.
- An HTTPS-reachable Artemis runtime, since providers call the callback URL from the public internet.
- Artemis project access with permission to open Deployments -> Channels, and a deployed agent in the environment you intend to bind.
Choose a provider
Each card jumps to that provider’s setup. Read the comparison below the cards first if you haven’t picked one yet.Meta Cloud API
You own the account. Fastest test sender, strongest inbound verification.
Infobip
Infobip owns the sender. Inbound traffic relies on network allowlisting.
Gupshup
Gupshup owns the sender. Optional JWT verification on inbound traffic.
What each provider needs
The routing identifier tells the runtime which connection an inbound callback belongs to. The credentials authenticate outbound messages and, where the provider supports it, inbound callbacks.Webhook route and inbound verification
Each provider gets its own route on the runtime, and the connection generates the right one for you. The route decides which payload format and which verification model the runtime applies.
Never append a phone number, connection ID, or provider slug to these routes yourself. The runtime reads the sender from the callback body.
How Artemis routes WhatsApp events
Every inbound message follows the same path, whichever provider carries it. Knowing the path tells you where to look when a message goes missing. The runtime finds the connection by reading one field from each provider’s callback body. That field must match the routing identifier you saved in Artemis.
The path also splits troubleshooting in two. A session in Sessions means the inbound half worked and the outbound half failed. No session means nothing passed routing and verification.
Meta setup
Complete this section only if you selected Meta Cloud API. Everything here happens in Meta before you open Artemis, and each screen depends on the one before it. Meta covers the same ground in its Cloud API get started guide.1
Register as a Meta developer
- Go to Meta for Developers and sign in with your Facebook account.
- Complete developer registration when Meta prompts you, confirming an email address and a phone number.
2
Create the app
- Open My Apps and select Create App.
- When Meta asks what the app does, choose the business messaging use case, or choose Other and then Business as the app type if Meta shows you that older flow.
- Enter an app name and a contact email, attach a Meta Business portfolio if you have one, and create the app.
3
Add the WhatsApp product
- On the App Dashboard, scroll the Add products to your app list to WhatsApp and select Set up. If you’ve navigated away, the Add product entry in the left menu returns you to the same list.
4
Find the Access Token and Phone Number ID
Go to WhatsApp -> API Setup in the left menu. This screen carries most of what Artemis needs.
- Select Generate access token and complete the prompt, then copy the token. Meta issues a fresh one each time you open this panel, and it expires within 24 hours.
- Below the From field, Meta shows the test business phone number, and directly beneath that, a numeric Phone Number ID. Copy the ID.
5
Find the App Secret
The App Secret lives outside the WhatsApp section, so the left menu is the only way to reach it.
- Go to App settings -> Basic.
- Select Show beside App secret.
- Re-enter your Facebook password when Meta asks, then copy the value.
6
Choose a Verify Token
Meta doesn’t issue this value. You invent a high-entropy secret string and use it in two places: the Artemis connection and the webhook configuration in Meta.The runtime finds the connection by its Verify Token during the handshake, so give each connection its own value. Store it where you can retrieve it, because Meta shows it back to you only while you edit the webhook.
7
Add a test recipient
While the app stays in development mode, Meta delivers only to numbers you register, so your own number receives nothing until you add it.
- Return to WhatsApp -> API Setup.
- Select the To field and choose Manage phone number list.
- Add your WhatsApp number, then enter the confirmation code Meta sends you in WhatsApp.
Infobip setup
Complete this section only if you selected Infobip. Infobip owns the WhatsApp Business account and the sender. You collect the sender number, your account’s API base URL, and one set of outbound credentials from the Infobip web interface.1
Open the right account and get a WhatsApp sender
- Sign in to the Infobip web interface with the account and workspace that own the sender you intend to connect.
- Go to Channels and Numbers -> Channels -> WhatsApp -> Senders.
- Complete sender onboarding if the sender isn’t live yet, then note the sender number.
2
Find your API base URL
Infobip gives every account a personalized base URL in the form
xxxxx.api.infobip.com, shown on the homepage once you sign in. Infobip explains the scheme under base URL.This URL isn’t a credential. It routes your requests to the data center serving your account, so a wrong one degrades or fails the integration rather than exposing it. Enter it in Artemis with the https:// scheme.3
Choose one authentication method
Artemis supports three authentication methods for Infobip outbound calls: API Key, Basic Auth, and Custom Header (API Gateway). Pick the method that matches your Infobip setup. The connection dialog displays and submits only the fields for the selected method.
- API Key: Go to Developer Tools -> API Keys, create a key for this integration, and copy it into your secret manager when Infobip displays it.
- Basic Auth: Use the username and password associated with your Infobip account.
- Custom Header (API Gateway): Select this method when your Infobip connection uses an API gateway that requires a custom header. Enter the Header Name and Header Value required by your gateway.
4
Plan inbound network controls
Infobip doesn’t sign its callbacks, and the API key authenticates only your outbound calls. It never authenticates Infobip’s calls to you.
- Ask your Infobip contact which source addresses their platform sends webhooks from.
- Arrange an allowlist, a trusted gateway, or equivalent network controls in front of the Artemis route before you go live.
X-Webhook-Secret header for typed continuity replies.Gupshup setup
Complete this section only if you selected Gupshup. Gupshup owns the WhatsApp Business account and the sender, and you collect the business number and the account’s API credentials. The Artemis Gupshup fields take an Enterprise account’s user ID and password and route on thewaNumber field that Enterprise callbacks carry.
1
Confirm your account type and open the right account
- Sign in to the Gupshup account that owns the intended WhatsApp sender.
- Confirm with Gupshup that it’s an Enterprise WhatsApp account that authenticates with a user ID and password.
2
Confirm the WhatsApp business number
- Note the WhatsApp business number Gupshup provisioned for the account, as digits only with the country code.
body.waNumber in every inbound callback, and it becomes the routing identifier in Artemis. Don’t use the customer’s number, which Gupshup sends as body.mobile in the same callback.3
Collect the API username and password
- Note the user ID and password for the account. Gupshup issues them when it creates the account.
- Store both in your secret manager.
4
Decide on webhook JWT verification
The Webhook JWT Secret is optional. Set it only when Gupshup or a trusted gateway in front of Artemis sends an
Authorization: Bearer JWT signed with the same secret.- Agree on the shared secret with whoever signs the token.
- Store it in your secret manager for the Artemis connection.
Artemis channel configuration
Create the connection before you register the webhook with your provider. Callbacks can arrive as soon as you save the webhook, and the runtime has to resolve an inbound sender to a saved, active connection before it can authenticate the event.- Open Artemis and select the project.
- Go to Deployments -> Channels -> WhatsApp -> + New. The New WhatsApp Connection dialog opens, with the setup guide on the left and the connection fields on the right.
- Set Provider first. The guide, the field set, and the label of the routing identifier field all change to match. The routing identifier field sits above Provider, so recheck it after you switch providers.
-
Configure the fields that apply to every provider:
-
Configure the routing identifier and credential fields for your provider:
- Meta Cloud API
- Infobip
- Gupshup
- Select Create.
- Open the connection and copy the Webhook URL from the summary panel on the right, or from the Configuration tab. The URL already carries your provider’s route, so copy it rather than building it by hand. If the dialog reports that the Runtime URL is unavailable, configure Runtime first, then reopen the connection to get the complete URL.
Webhook configuration with your provider
The webhook turns a one-way integration into a conversation. Until your provider has the callback URL, your agent can send but never receives.- Meta Cloud API
- Infobip
- Gupshup
In your Meta app, go to WhatsApp -> Configuration in the left menu. The Webhook row sits at the top of this screen.
- Confirm the Artemis connection exists and is Active. The runtime answers Meta’s handshake only for a saved connection.
- Select Edit. Meta opens a dialog with two fields.
- Paste the Artemis Webhook URL into the callback URL field, and the same Verify Token you saved in Artemis into the verify token field.
- Select Verify and save. Meta sends a GET challenge to the URL. The runtime finds the connection by its Verify Token and returns
hub.challengeonly when the token matches. A dialog that closes means the URL verified. A dialog that stays open with an error means the handshake failed. - Below the webhook row, find the webhook fields list, select Manage, and subscribe to the messages field.
- Confirm the right WhatsApp Business Account and phone number attach to this app.
metadata.phone_number_id from each signed POST body, so don’t append the phone number or a provider slug.Validation checklist
Work down this list once per connection. Each row depends on the one above it.Verify the connection
Artemis doesn’t synthesize provider callbacks, so a real WhatsApp message is the only way to confirm the integration works end to end.- Use an approved test recipient. On a Meta app in development mode or a provider sandbox, register the number first. For production, confirm business verification, sender quality, payment, and template approvals are complete.
- From a normal WhatsApp account, send the business sender a short, distinctive message you can search for later.
- Check that the agent replies once, from the intended sender and the intended environment. Duplicate replies point to duplicate provider subscriptions, another automation on the same number, or repeated webhook delivery rather than an agent fault.
- If no reply arrives, open Sessions and search for the message you sent. A session tells you the webhook works and the outbound path failed. No session tells you nothing reached the runtime. The two need different fixes, so make this check before you change any configuration.
- If the agent sends buttons or lists, select a button and a list row and confirm the action returns to the same session. WhatsApp limits how many reply buttons a message carries and how long their labels run, so check that your content renders in WhatsApp rather than only in preview.
- Exercise every message type your provider enables, and confirm the agent handles the downloaded attachment rather than only acknowledging it.
Security and provider boundaries
Each provider protects a different part of the exchange. These rules keep the inbound and outbound halves trustworthy.
These rules apply to every provider:
- Preserve the raw body: Where a provider signs the body, any proxy or middleware in front of Artemis must pass the exact raw bytes through. Re-serializing JSON breaks the signature and fails every callback.
- Rotate in the right order: Rotate credentials without changing the inbound sender identifier. Update Artemis first, then revoke the old credential, then verify both inbound and outbound traffic.
- Separate environments completely: Use separate apps or senders, credentials, webhooks, and connections for development and production.
- Match verification strength to evidence: Keep Provider Verification Strength at Weak unless the provider’s identity assertion carries cryptographic proof, or your deployment adds and validates one.
Create a permanent access token
This section applies to Meta Cloud API only. Infobip API keys and Gupshup passwords don’t expire on a schedule, so rotate them on your own policy instead. The token on the API Setup page expires within 24 hours. Replace it with a system user token, which lasts until you revoke it. Meta explains how the token types differ under access tokens. This work happens in Meta Business Suite rather than the App Dashboard, and it needs a Meta Business admin.1
Create a system user
- Open Meta Business Suite and select your business portfolio from the dropdown at the top of the page.
- Select its settings icon to open Business settings.
- Go to Users -> System users and select Add.
- Name the system user, set its role to Admin, and create it.
2
Assign the app and the WhatsApp account
- Select the system user you created and select Assign assets.
- Assign your app and your WhatsApp Business account, granting full control on each.
- Reload the page and confirm both show as assigned before you continue, because a token generated before the assets attach can’t reach them.
3
Generate and store the token
- Select Generate token, choose your app, and set the expiration to never.
- Select the
whatsapp_business_messagingpermission so the token can send and receive messages, andwhatsapp_business_managementso it can manage templates and account settings. Grant nothing beyond what the integration uses. - Generate the token and copy it straight into your secret manager, because Meta displays it once and never again.
- Update the Access Token on the Artemis connection from the Credentials tab, then revoke the temporary token.
Move to production
A test sender covers development and nothing else. Who does the production paperwork depends on your provider, and every path waits on Meta review.
Two WhatsApp rules shape what your agent can say, whichever provider carries the traffic:
The customer service window. After a customer messages you, you can reply freely for 24 hours. Outside that window, an outbound message needs an approved template, so an agent that reaches out first needs templates approved before it can start a conversation at all. Template approval is its own review, and a rejected template blocks the conversation you wrote it for.
Separate senders per environment. Use different senders, credentials, webhooks, and connections for development and production. Sharing a sender means test traffic lands in the same conversation history as customer traffic.
Manage the channel connection
Open a WhatsApp connection from Deployments -> Channels -> WhatsApp to manage it. The page has a header, three tabs, and a summary panel on the right. Header. Shows the connection name, its environment badge, its status, and when it last changed. The … overflow menu holds the connection-level actions. Summary panel. Stays visible on every tab and carries the values you need on the provider side.- Credentials
- Configuration
- Deployment
The platform encrypts credentials after you save them, so every field reads as saved rather than showing its value. Leave a field empty to keep the current value, or enter a new value to replace it.
Select Save Credentials to apply your changes. Update credentials here before you revoke the old ones at the provider.
Key values reference
Each value sits on a different provider screen, and several look alike enough to swap by accident. Use the table for your provider to collect everything in one pass.- Meta Cloud API
- Infobip
- Gupshup
Troubleshoot connection issues
Start with the Sessions check from Verify the connection, then match the symptom here.Provider reference
Use these pages when you need detail beyond what this article covers.- Meta Cloud API
- Infobip
- Gupshup
Related articles: