Phone Number Management

Manage Twilio numbers in Topa — sync lines, configure inbound call routing, webhooks, and positive reply alerts.

Phone Number Management

The Phone Numbers page is where you manage every Twilio number connected to your Topa account. After you add Twilio credentials, Topa syncs your numbers and lets you control what happens when someone calls or texts each line — including call routing, inbound webhooks, and alerts when a campaign contact replies positively to SMS.

Use this page for numbers you send campaigns from and for inbound lines that receive replies from prospects.

Before you start: connect Twilio

You must add at least one Twilio account before numbers appear on this page.

  1. In the sidebar, open Twilio Settings

  2. Add your Twilio Account SID and Auth Token

  3. Give the account a friendly name (for example: Primary Account)

  4. Save the credentials

If you have not connected Twilio yet, the Phone Numbers page shows a warning with a link to Add Twilio Credentials. See the Twilio starter guide for full setup steps.

Step 1: Open Phone Numbers and sync

  1. In the sidebar, click Phone Numbers

  2. Click Sync with Twilio in the top-right toolbar

Topa pulls every phone number from your connected Twilio account(s) and displays them in the Active Numbers table. Run sync again any time you buy a new number in Twilio or want to refresh routing in Topa.

The Phone Numbers page — sync your Twilio lines and manage routing, webhooks, and alerts per number.

Step 2: Understand the table

Each row is one phone number. The main columns are:

Column What it does

Phone Number

The Twilio number. Verified Caller ID rows are labelled separately (see below).

Friendly Name

An optional label stored in Twilio (hover the pencil icon to edit).

Account Name

Which connected Twilio account owns this number.

Handle Inbound Calls

When on, Topa answers inbound calls to this number using your routing rule.

Handle Inbound SMS

When on, Topa receives inbound SMS to this number (replies, opt-outs, etc.).

Routing

Shows the current inbound call rule: forward, play message, or not configured.

Webhook

Inbound call/SMS webhook (link icon turns active when configured).

Positive Reply Webhook

Webhook fired when a contact's first SMS reply is detected as positive.

Positive Reply SMS

SMS alert sent to your phone when a positive first reply is detected.

Settings

Edit Settings (routing) and Test Webhook for this number.

Step 3: Configure inbound call routing

Click Edit Settings on a number to open the routing modal. Choose one of three behaviours:

Forward Call

Ring another phone number when someone calls this Twilio line. Enter the destination in E.164 format (for example +12125551234).

Play Message

Answer the call and play an Ai-generated voicemail message. Write the script, pick a voice (stock or cloned), preview the audio, then save. Topa stores the generated audio and plays it to callers.

Hangup

Immediately end inbound calls without forwarding or playing a message.

After saving, the Routing column shows your active rule (for example Forward to +1 212 555 1234 or Play Message).

Step 4: Configure inbound webhooks

Click the link icon in the Webhook column to open webhook settings for that number.

  1. Toggle Enable Webhook for Inbound Events on

  2. Paste your HTTPS endpoint (for example a Zapier or Make hook)

  3. Click Save

Topa sends a POST request to this URL for every inbound call or SMS to the number. Use Test Webhook in the Settings column to send sample payloads (see examples below).

Step 5: Configure positive reply alerts

When a prospect replies positively to an SMS campaign for the first time, Topa can notify you two ways — per number:

Positive Reply Webhook

Click the link icon under Positive Reply Webhook.

  1. Toggle Send webhook when first SMS reply is positive on

  2. Enter your webhook URL

  3. Click Save

Topa POSTs a JSON payload with the reply text, contact details, campaign name, and sentiment when the first reply is classified as positive.

Positive Reply SMS

Click the message icon under Positive Reply SMS.

  1. Toggle Send SMS alert when first SMS reply is positive on

  2. Choose which of your Topa numbers should send the alert

  3. Enter the mobile number that should receive the alert

  4. Click Save

The alert message looks like: You have a new positive SMS reply in Topa.io — "{customer reply}"

Step 6: Test your webhooks

After saving a webhook URL, use Test Webhook on the same row. Pick the event type:

  • Test Positive Reply Webhook

  • Test Inbound Call Webhook

  • Test Inbound SMS Webhook

Topa sends a dummy payload from the server (so your browser is not blocked by CORS). Configure the endpoint first — if no URL is saved, Topa shows an error asking you to set one up.

Verified Caller ID numbers

Some rows may show Verified Caller ID instead of full controls. These are numbers verified in Twilio for outbound caller ID display — they are read-only in Topa. You cannot toggle inbound handling, routing, or webhooks on verified caller IDs. If the same number also exists as a real Twilio incoming number, only the incoming row is shown in the table.

Webhook payload examples

Test webhooks use the same JSON shape as live events. Empty fields are sent as empty strings.

Inbound call webhook

{  "Date": "2026-06-16",  "CallTime": "14:30:00",  "CustomerNumber": "+15559876543",  "CustomerName": "Test Customer",  "Company": "Test Company",  "Email": "test@example.com",  "LinkedinUrl": "",  "Campaign": "N/A",  "InboundNumber": "+15551234567",  "Destination": "Inbound Call",  "SMS Reply": ""}

Inbound SMS webhook

{  "Date": "2026-06-16",  "CallTime": "14:30:00",  "CustomerNumber": "+15559876543",  "CustomerName": "Test Customer",  "Company": "Test Company",  "Email": "test@example.com",  "LinkedinUrl": "",  "Campaign": "N/A",  "InboundNumber": "+15551234567",  "Duration": "",  "Destination": "SMS Reply",  "SMS Reply": "Test inbound SMS message"}

Positive reply webhook

{  "event_type": "positive_sms_reply",  "sentiment": "Positive",  "is_first_reply": true,  "Date": "2026-06-16",  "CallTime": "14:30:00",  "CustomerNumber": "+15559876543",  "CustomerName": "Test Customer",  "Company": "Test Company",  "Email": "test@example.com",  "LinkedinUrl": "",  "Custom1": "",  "Custom2": "",  "Custom3": "",  "Campaign": "Test Campaign",  "InboundNumber": "+15551234567",  "Duration": "",  "Destination": "SMS Reply",  "SMS Reply": "Yes, I'm interested!",  "message_sid": null,  "sms_reply_id": null,  "message_id": null,  "campaign_id": null,  "user_id": "your-user-id",  "received_at": "2026-06-16T14:30:00.000Z"}