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.
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 credentials, each serving a different purpose:| Credential | Used for | Where to find it |
|---|---|---|
| ElevenLabs Auth Token | Outbound calls — authenticates API requests when the AI initiates calls to members or prospects | ElevenLabs → Account Settings → API Keys |
| ElevenLabs Tool Bearer Token | Inbound calls — a secret you create yourself to authenticate webhook requests from ElevenLabs to your Nexudus portal | Nexudus → Settings > Channels > Voice |
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
Create a new agent
Configure the agent prompt
Configure voice settings
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
Name the tool
nexudus. This name must match the tool name referenced in your agent’s prompt.Configure the webhook settings
| Setting | Value |
|---|---|
| Method | GET |
| URL | https://{portal_sub_domain}.spaces.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
| Header | Value |
|---|---|
| Authorization | Bearer {your_secret_key} |
{your_secret_key} with the value from the Elevenlabs Tool Bearer Token field. This is a secret you create yourself — go to Settings > Channels > Voice in your Nexudus admin panel, type a strong secret key into the Elevenlabs Tool Bearer Token field, and save. Then use that same secret key here in your ElevenLabs webhook configuration. This ensures that only your Nexudus portal can verify incoming webhook requests from ElevenLabs.Configure tool behavior
| Setting | Value |
|---|---|
| Pre-tool speech | Force |
| Execution mode | Immediate |
Configure path parameters
| Parameter | Value Type | Variable Name |
|---|---|---|
eleventlabel_conversation_id | Dynamic Variable | system__conversation_id |
system__conversation_id is a built-in ElevenLabs variable that holds the unique ID for each conversation.Configure query parameters
| Parameter | Required | Value Type | Variable Name / Description |
|---|---|---|---|
prompt | Yes | LLM Prompt | The actual question from the user |
caller_id | Yes | Dynamic Variable | system__caller_id |
session_id | No | Dynamic Variable | session_id |
Add session_id variable assignment
| Setting | Value |
|---|---|
| Variable Name | session_id |
| JSON Path | session_id |
{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
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. |
Stage 4 — Connect to Nexudus
Connect Twilio to ElevenLabs
- In ElevenLabs, go to Deploy > Phone numbers.
- Click Import Number > From Twilio.
- Add a label, enter your phone number, and select or type a new Twilio Account SID.
Open your AI settings in Nexudus
Switch on AI Voice
Enter your credentials and phone number
- Twilio Account ID — your Twilio Account SID (found in the Twilio Console under Account > API keys & tokens)
- Twilio Auth Token — your Twilio Auth Token (found in the Twilio Console under Account > API keys & tokens)
- SMS Phone Number — the Twilio phone number in E.164 format (e.g.,
+14155551234). This number is used for SMS link delivery. See SMS link delivery for details.

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 the following values configured in Nexudus:| Setting in Nexudus | Where to find it |
|---|---|
| ElevenLabs Auth Token | ElevenLabs → Account Settings → API Keys → New Personal API Key |
| 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 the ElevenLabs credentials in Settings > Channels > Voice in your Nexudus admin panel.
- Configure calling hours in the same settings page 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.
Test the Voice channel
Call your space's number
Try a simple question
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