The Voice channel requires paid accounts on ElevenLabs and Twilio. Twilio charges per minute of call usage. See Twilio’s Voice pricing for current rates. The cost is typically low for conversational AI use cases, especially during after-hours when the AI handles routine inquiries.
Before you start
You need:- Administrator access to your Nexudus account.
- An ElevenLabs account — provides the AI agent, speech-to-text (STT), and text-to-speech (TTS) engine. Sign up at elevenlabs.io.
- A paid Twilio account with Voice capabilities enabled (free trial accounts have limited Voice capabilities).
- A phone number that can receive inbound voice calls. This can be a new number purchased through Twilio or an existing number you own.
Make sure the AI assistant is already enabled for your space. The Voice channel is an extension of the existing AI assistant — it will not work unless the base AI assistant is active.
Overview
The setup involves four main stages:- Create an ElevenLabs agent — Configure the AI agent with a prompt and the Nexudus webhook tool.
- Configure the webhook tool — Point the agent’s webhook to your Nexudus portal.
- Acquire a Twilio phone number — Purchase or port a number for voice calls.
- Connect to Nexudus — Link your Twilio number to the ElevenLabs agent, then enter credentials in Nexudus settings.
ElevenLabs credentials overview
The Voice channel uses two separate ElevenLabs credentials, each serving a different purpose:| Credential | Used for | Where to find it |
|---|---|---|
| Bearer Token | Inbound calls — authenticates the webhook that ElevenLabs calls when a member or prospect calls your number | ElevenLabs → API Keys |
| Auth Token | Outbound calls — authenticates API requests when the AI initiates calls to members or prospects | ElevenLabs → Account Settings → API Keys |
Outbound calling also requires the Agent ID (your ElevenLabs agent’s unique identifier) and the Phone Number ID (the ElevenLabs phone number linked to your Twilio number). These are configured in the same ElevenLabs account. See Outbound calling below for details.
Stage 1 — Create an ElevenLabs agent
Your AI voice agent is created in ElevenLabs. You will configure the agent with a prompt and a webhook tool that connects to your Nexudus portal.Go to the Agents page
In your ElevenLabs account, navigate to https://elevenlabs.io/app/agents.
Create a new agent
Click Create Agent and give it a name such as “Nexudus Voice Assistant” or your space’s name followed by “AI Assistant”.
Configure the agent prompt
In the agent’s Instructions field, paste the following prompt:This prompt instructs the agent to delegate all user requests to Nexudus through the webhook tool you will configure next.
Configure voice settings
Select a voice from the ElevenLabs voice library. Choose a voice that matches your brand personality — professional, friendly, or energetic.Adjust the stability and similarity settings to your preference. Lower stability gives more expressive speech; higher stability sounds more consistent.
Stage 2 — Configure the webhook tool
The webhook tool is how your ElevenLabs agent communicates with your Nexudus portal. It sends user requests to Nexudus and receives AI responses back.Add a tool to your agent
In your ElevenLabs agent configuration, go to the Tools section and click Add Tool.Select Webhook as the tool type.
Name the tool
Name the tool
nexudus_hq. This name must match the tool name referenced in your agent’s prompt.Configure the webhook settings
Set the following parameters:
Replace
| Setting | Value |
|---|---|
| Method | GET |
| URL | https://{portal_sub_domain}.nexudus.com/api/public/ai/chats/elevenlabs/{eleventlabel_conversation_id} |
{portal_sub_domain} with your Nexudus portal sub-domain. Go to Settings > Website in your Nexudus admin panel (e.g., https://dashboard.nexudus.com/settings/2/0/0) and copy the domain shown there. For example, if your portal is mymembers.nexudus.com, use mymembers.Do not replace {eleventlabel_conversation_id} — it is a path variable, not a placeholder. In the webhook tool settings below, you will map this variable to the system__conversation_id system variable so ElevenLabs passes the conversation ID at runtime.Configure headers
Add the following header:
Replace
| Header | Value |
|---|---|
| Authorization | Bearer {your_secret_key} |
{your_secret_key} with your Nexudus voice channel secret key. Go to Settings > Channels > Voice in your Nexudus admin panel (e.g., https://dashboard.nexudus.com/settings/5/0/0) and copy the secret key shown there.Configure path and query parameters
In the webhook tool configuration, map the path variable to a system variable:
This tells ElevenLabs to substitute the conversation ID at runtime. The
Replace the placeholder values with the appropriate parameters for your setup.
| Path Variable | System Variable |
|---|---|
eleventlabel_conversation_id | system__conversation_id |
system__conversation_id is a built-in ElevenLabs variable that holds the unique ID for each conversation.Add any additional path or query parameters that your Nexudus API endpoint expects. These are typically used to identify the business or location context.For example:| Parameter | Value | Required |
|---|---|---|
| businessId | {business_id} | Yes |
Add session_id variable assignment
In the Variable Assignments section of the webhook tool configuration, add a new variable:
The session_id variable is not required and is used to identify the caller’s session context. This is separate from the query parameters section — ElevenLabs stores variable assignments in their own dedicated section in the tool configuration.
| Setting | Value |
|---|---|
| Variable Name | session_id |
| JSON Path | session_id |
The webhook uses the GET method because ElevenLabs voice conversations send user input as query parameters. The
{portal_sub_domain} placeholder must be replaced with your actual portal domain. The {eleventlabel_conversation_id} path variable is mapped to system__conversation_id in the webhook tool settings and is substituted at runtime by ElevenLabs.Stage 3 — Acquire a Twilio phone number
Verify Voice capabilities
In the Twilio Console, go to Account > Settings > Capabilities and ensure that Voice is enabled for your account.If Voice is not enabled, contact Twilio support to activate it. Free trial accounts may need to be upgraded to a paid plan first.
Stage 4 — Acquire a phone number
You need a phone number that can receive inbound voice calls. You have two options:| Option | Best for | Details |
|---|---|---|
| Buy a number through Twilio | Most operators | Twilio provides the number. No need to port an existing number. Go to Phone Numbers > Manage > Buy a number in the Twilio Console. |
| Port your own number | Operators with an existing business number | You can keep your current number and port it to Twilio. This may take several business days. |
The phone number should be able to receive inbound voice calls. Most Twilio numbers support this by default, but verify when purchasing.
Stage 4 — Connect to Nexudus
Connect Twilio to ElevenLabs
In the Twilio Console, go to Phone Numbers > Manage > Active numbers and select your voice number.Under Voice & Fax configuration, set the following:
- A call comes in: Select Webhook
- URL: Enter your ElevenLabs agent webhook URL (found in your ElevenLabs agent settings under the Voice tab)
- HTTP method: POST
Open your AI settings in Nexudus
In the Nexudus administration panel, go to Settings and find the AI assistant section.
Switch on AI Voice
Toggle the AI Voice setting to on. This activates the voice channel for your space.
Enter your Twilio credentials
Once enabled, Nexudus displays:
- Your Twilio webhook URL — this is where Twilio should send incoming call events
- The fields for Account SID and Auth Token
Outbound calling
In addition to answering incoming calls, the AI can initiate outbound calls to members and prospects. Outbound calling is used for:- Booking confirmations and reminders
- Tour reminders
- Follow-up inquiries
- Payment notifications
How it works
When the AI needs to make an outbound call, it uses your ElevenLabs agent configuration to place the call through your linked Twilio phone number. The caller experiences the call the same way as an inbound call — they hear the AI’s voice and can respond naturally.Required credentials
Outbound calling requires four ElevenLabs values configured in Nexudus:| Setting in Nexudus | Where to find it |
|---|---|
| ElevenLabs Bearer Token | ElevenLabs → Account Settings → API Keys → New Personal API Key |
| ElevenLabs Auth Token | ElevenLabs → Account Settings → API Keys → Same key as Bearer Token (the key value serves both purposes) |
| ElevenLabs Agent ID | ElevenLabs → Agents → click your agent → copy the Agent ID from the URL or agent details page |
| ElevenLabs Phone Number ID | ElevenLabs → Voice → Phone Numbers → select your number → copy the Phone Number ID |
Enabling outbound calls
- Enter all four ElevenLabs credentials in Settings > AI assistant > Voice > ElevenLabs credentials in your Nexudus admin panel.
- Configure calling hours in Settings > AI assistant > Voice > Calling hours to control when outbound calls are made.
- Use the Test Outbound Call button (shown when Agent ID and Phone Number ID are both configured) to verify your setup.
Outbound calls respect the calling hours configured in Nexudus by default. Calls outside the calling window are automatically deferred until the next available window. You can disable this enforcement for testing purposes, but it is not recommended for production use.
Test the Voice channel
Call your space's number
From any phone, call your space’s AI voice number. The AI should answer and greet you.
Try a simple question
Ask a basic question like “What are your opening hours?” or “Where are you located?” to verify the AI responds correctly.
Troubleshooting
| Problem | Possible cause | Solution |
|---|---|---|
| Call connects but no audio | Webhook not configured correctly | Verify the Twilio webhook URL matches what Nexudus provides |
| AI doesn’t understand the caller | Speech-to-text accuracy varies with noise/background | Encourage callers to use a quiet environment; ensure the phone number has good signal |
| AI responds but caller can’t hear | Text-to-speech not configured | Verify Twilio Voice capabilities are active; check Twilio logs for errors |
| Wrong location’s AI answers | Multiple locations sharing a number | Ensure each location has its own dedicated phone number |
What the caller can do
On the Voice channel, callers can:- Ask about opening hours, location, and facilities
- Browse and book meeting rooms and desks
- Inquire about day passes and membership plans
- Request a tour of private offices
- View and manage their existing bookings
