Vonage is one of the three carriers Voxa can dial through. Like the others it is bring-your-own-account: your calls run on your Vonage credentials and bill to you at your rates, with no markup from Voxa.
Setup needs three values. Everything on the Vonage side, the Application, the keypair and the webhook wiring, is created for you.
Before you start
You need:
- A Vonage API account.
- A voice-capable phone number on that account.
- An admin role in Voxa. Connecting a provider needs the
org.settings.managepermission, which the Admin role has by default.
One thing to check first: if your number is already linked to another Vonage Application, connecting it to Voxa re-points it. Voice traffic for that number will start flowing to Voxa's webhooks instead of wherever it went before. If the number is live in another system, use a different number for Voxa.
Step 1: collect three values from Vonage
| Value | Where it is |
|---|---|
| API Key | Vonage API Dashboard home, in the API credentials panel |
| API Secret | Same panel, revealed behind a Show button |
| Phone number | Numbers, Your numbers, in E.164 format like +15551234567 |
Use the account-level API Key and Secret, not an Application ID. Voxa creates the Application itself in the next step.
Step 2: connect it in Voxa
- Open Settings, Telephony (
/settings/telephony). - Pick Vonage from the provider tabs.
- Enter the API Key, API Secret and the phone number in E.164 format, including the leading
+. - Click Connect Vonage.
Voxa talks to Vonage while you wait. On success the page shows a Connected badge with the provider and number, and calling turns on for your agents.
Step 3: what Voxa creates in your Vonage account
| What | Why it exists |
|---|---|
| A voice Application named after your organization | Holds the answer URL and event URL that point back at Voxa. Vonage uses NCCO for call control, its equivalent of TwiML |
| An RSA keypair, generated by Vonage | The private key signs the JWTs that authorize each agent's browser client. Your API Secret never reaches the browser |
| A link from your number to that Application | So inbound and outbound voice for the number is handled by Voxa |
Two details worth knowing:
- Signed callbacks are turned on explicitly. Vonage leaves signed webhooks off by default for legacy applications, so Voxa asks for them when it creates the Application and verifies the signature on every callback it receives. Nothing arrives unverified.
- The private key is only ever returned once, at Application creation time, and cannot be fetched again later. Voxa persists it immediately alongside the rest of your configuration. This is different from Twilio and SignalWire, where an API key secret can be recreated.
Step 4: place a test call
- Open any lead and click Call, or start a dialer session.
- Allow microphone access when the browser asks.
- The call places through Vonage and connects in the browser.
The errors you might see
"Could not authenticate with Vonage using this API Key and Secret."
Voxa could not create the Application. Usual causes: a typo or trailing space in the secret, credentials copied from a different Vonage account, or an account that has not finished verification.
"This phone number was not found on the provided Vonage account, or could not be linked."
The credentials worked but the number could not be attached to the new Application. Usual causes: the number is formatted without the + or with spaces, it belongs to a different Vonage account, or it is not voice-capable.
Script audio goes into the call
When an agent plays an AI voice line or a quick response, the clip has to reach the customer rather than just the agent's speakers.
Twilio and SignalWire both expose a hook for replacing the outbound audio stream. Vonage does not, so Voxa takes a different route on this provider: it wraps the browser's own microphone capture so the SDK receives a live mix of the agent's mic and the clip bus instead of the raw mic.
That mixed track deliberately proxies its settings through to the real microphone. It matters more than it sounds: Vonage's noise suppression and echo cancellation toggles re-capture audio using the track's device ID, and a synthetic ID would break that after the SDK had already released the live microphone, which loses call audio mid-conversation. Voxa also runs an automated browser test that fails if a future Vonage SDK release stops going through the wrapped capture path, so the mixing cannot silently break on an upgrade.
In Recorded mode the agent's mic is muted while a clip plays. In Live mode nothing plays and the script is an on-screen guide. Take over switches the current call to Live with one click, and the next call starts back in the agent's usual mode.
Switching or disconnecting later
Disconnect deletes the Application from your Vonage account and clears all stored Vonage values on Voxa's side, including the private key. Agents fall back to manual call logging. Your number stays yours, though it will no longer be linked to the deleted Application, so re-link it in Vonage if another system should take it over.
Switching providers to Twilio or SignalWire disconnects Vonage first. An organization runs one live calling provider at a time.
What you pay
Vonage bills you directly for numbers and minutes. Voxa adds no per-minute markup and takes no cut of your carrier spend. The same holds across the other integrations: Google Places searches bill to your own Google Cloud project, and AI features run on your own Anthropic or OpenAI key.
Compliance checks do not change
Whichever carrier you connect, Voxa checks the number against your do-not-call list and blacklist before the call rings, blocks calls outside 8am to 9pm in the lead's own time zone by default, holds back leads with no known time zone, and requires a manager-approved override with a reason on record for exceptions.
Voxa enforces your own internal lists, not the National Do Not Call Registry, so keep scrubbing against the registry through a registry service if you call consumers. Background reading: internal do-not-call lists and AI voice disclosure on calls.
Prefer a different carrier?
The same bring-your-own-account setup works with Twilio and SignalWire.