Skip to main content
RapidDev - Software Development Agency
retool-integrationsREST API Resource

How to Integrate Retool with Vonage (Nexmo) API

Connect Retool to Vonage (formerly Nexmo) using a REST API Resource with Base URL https://api.nexmo.com. Authenticate using your Vonage API Key and API Secret as Basic Auth credentials or request parameters. Build a multi-channel communications dashboard that sends SMS, makes voice calls, and manages WhatsApp and Viber messages through Vonage's unified Messages API from a single Retool internal tool.

What you'll learn

  • How to locate your Vonage API Key and Secret and configure a Retool REST API Resource
  • How to build a Retool SMS sending panel using Vonage's SMS API
  • How to configure Vonage's Messages API for multi-channel messaging (WhatsApp, Viber, SMS)
  • How to build a contact center dashboard that views and manages outbound communications
  • How to handle Vonage delivery receipts and message status tracking in Retool
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Intermediate16 min read25 minutesCommunicationLast updated April 2026RapidDev Engineering Team
TL;DR

Connect Retool to Vonage (formerly Nexmo) using a REST API Resource with Base URL https://api.nexmo.com. Authenticate using your Vonage API Key and API Secret as Basic Auth credentials or request parameters. Build a multi-channel communications dashboard that sends SMS, makes voice calls, and manages WhatsApp and Viber messages through Vonage's unified Messages API from a single Retool internal tool.

Quick facts about this guide
FactValue
ToolVonage (Nexmo) API
CategoryCommunication
MethodREST API Resource
DifficultyIntermediate
Time required25 minutes
Last updatedApril 2026

Build a Multi-Channel Communications Dashboard in Retool with Vonage

Vonage (formerly Nexmo) is one of the leading cloud communications APIs, enabling businesses to send SMS, make voice calls, and reach customers across messaging channels like WhatsApp, Viber, and Facebook Messenger. The key differentiator from other CPaaS providers is the Vonage Messages API — a single unified endpoint that routes messages across multiple channels, automatically failing over between channels based on availability and user preference. Building a Retool dashboard on top of this API gives operations and support teams a centralized communications panel without needing to log into multiple channel-specific dashboards.

A Retool integration with Vonage is particularly valuable for contact center operations, customer success teams, and marketing operations groups who need to send bulk notifications, manage outbound campaigns, and monitor delivery status across channels. Rather than relying on Vonage's dashboard — which is designed for developers rather than operations users — a custom Retool panel can present exactly the data and controls that a support manager or campaign coordinator needs: a customer list, a message template selector, delivery status monitoring, and per-message response tracking.

Vonage's API also enables voice call initiation and call tracking through the Voice API, enabling Retool apps to serve as lightweight call management panels — logging outbound call attempts, viewing call duration and status, and triggering follow-up SMS messages for unanswered calls. Combined with a CRM database as a second Retool Resource, this creates a comprehensive outbound communications tool that connects customer data to multi-channel contact workflows.

Integration method

REST API Resource

Vonage provides a REST API suite covering SMS (SMS API), voice calls (Voice API), and unified multi-channel messaging (Messages API v1). Retool connects via a REST API Resource using API Key and Secret authentication — either passed as Basic Auth credentials or as api_key and api_secret request parameters depending on the endpoint. Because Retool proxies all requests server-side, Vonage credentials never reach end users' browsers. The Messages API uses a JWT-based authentication method for advanced features, which can be configured via a separate REST API Resource with the JWT stored in a Configuration Variable.

Prerequisites

  • A Vonage account (sign up at dashboard.nexmo.com) with API access enabled
  • Your Vonage API Key and API Secret from the Vonage Dashboard API Settings page
  • A Vonage virtual phone number purchased from the Vonage Dashboard (required as the 'from' number for SMS and voice)
  • For WhatsApp/Viber messaging: a Vonage Messages API enabled application with a WhatsApp Business Account connected
  • A Retool account with permission to create Resources and configure Configuration Variables

Step-by-step guide

1

Retrieve your Vonage API credentials and configure a Retool Resource

Vonage authentication uses an API Key and API Secret pair for most endpoints. These credentials are found in the Vonage API Dashboard at dashboard.nexmo.com — log in and look for the API Key and API Secret fields on the Getting Started or API Settings page. Both values are alphanumeric strings: the API Key is shorter (6-8 characters) and the API Secret is longer (16+ characters). Copy both values. In Retool, navigate to Resources in the left sidebar and click Add Resource. Select REST API. Name the resource 'Vonage SMS API'. Set Base URL to https://api.nexmo.com. For authentication, Vonage's SMS API accepts credentials as request body parameters rather than HTTP headers — select No Auth in the authentication dropdown, as you will pass api_key and api_secret in each query's body or URL parameters instead. Add a default header Content-Type: application/x-www-form-urlencoded for the SMS API (which uses form-encoded POST bodies). Store your Vonage API Key and Secret in Retool Configuration Variables (Settings → Configuration Variables): VONAGE_API_KEY and VONAGE_API_SECRET, with the secret marked as a Retool secret. For the Messages API (WhatsApp/Viber), a separate resource with Bearer token JWT authentication will be needed — covered in Step 3.

Pro tip: Vonage provides a free trial credit (typically EUR 2.00) for new accounts. The SMS API and Voice API are enabled by default. WhatsApp messaging requires applying for a WhatsApp Business Account through Vonage and completing Meta's approval process, which takes 1-5 business days. Start with SMS for immediate testing while WhatsApp approval is pending.

Expected result: The Vonage SMS API Resource is configured in Retool with the base URL set to https://api.nexmo.com, and Vonage credentials are stored as Configuration Variables ready to be referenced in queries.

2

Build an SMS sending query and test it

Create the first functional query to send SMS messages via Vonage's SMS API. In any Retool app, open the Code panel and click Create new query. Select the Vonage SMS API Resource. Set Method to POST and Path to /sms/json. The SMS API uses JSON request bodies (despite the /sms/json path suggesting otherwise for URL-encoded forms — the API accepts both). Set Body Type to JSON and configure the body: api_key → {{ retoolContext.configVars.VONAGE_API_KEY }}, api_secret → {{ retoolContext.configVars.VONAGE_API_SECRET }}, to → a test phone number in E.164 format (e.g., 14155551234 without the + prefix, or with it — Vonage accepts both), from → your Vonage virtual number (also in E.164 format), text → {{ smsTextInput.value || 'Test message from Retool' }}. Click Run to send a test SMS to your own phone number. A successful response returns a JSON object with messages[0].status equal to '0' (success), a message-id, and remaining-balance. Vonage uses status code '0' for success (not HTTP 200-level status codes) — status codes 1-9 indicate specific error conditions. Create a Transformer on the query to extract the relevant fields: status, message-id, remaining-balance, and a human-readable status label based on the numeric status code.

vonage_sms_query.json
1// Vonage SMS API query body
2{
3 "api_key": "{{ retoolContext.configVars.VONAGE_API_KEY }}",
4 "api_secret": "{{ retoolContext.configVars.VONAGE_API_SECRET }}",
5 "to": "{{ recipientPhone.value }}",
6 "from": "{{ retoolContext.configVars.VONAGE_FROM_NUMBER }}",
7 "text": "{{ smsMessageText.value }}"
8}
9
10// Transformer: normalize Vonage SMS response
11const STATUS_LABELS = {
12 '0': 'Delivered', '1': 'Throttled', '2': 'Missing param',
13 '3': 'Invalid param', '4': 'Invalid credentials', '5': 'Internal error',
14 '6': 'Invalid message', '7': 'Number barred', '9': 'Partner quota exceeded'
15};
16const msg = data?.messages?.[0] || {};
17return {
18 status: msg.status,
19 status_label: STATUS_LABELS[msg.status] || `Unknown (${msg.status})`,
20 message_id: msg['message-id'],
21 to: msg.to,
22 remaining_balance: msg['remaining-balance'],
23 success: msg.status === '0'
24};

Pro tip: Store your Vonage virtual phone number (the 'from' number) as a Configuration Variable named VONAGE_FROM_NUMBER. For international SMS, Vonage requires the from number to be a long code (full phone number) rather than an alphanumeric sender ID in certain regions (e.g., USA). Check Vonage's SMS Country Restrictions documentation for sender ID rules in your target markets.

Expected result: The SMS sending query successfully delivers a test SMS to a phone number, and the transformer returns a normalized response object with status '0' (success) and a valid message-id.

3

Configure the Vonage Messages API for multi-channel messaging

Vonage's unified Messages API (v1) uses a different authentication method than the SMS API — it requires a JWT (JSON Web Token) signed with an application private key. To set this up, first create a Vonage Application in the Vonage Dashboard: navigate to Your Applications → Create a new application. Enable the Messages capability and provide webhook URLs for inbound and status callbacks (you can use a temporary placeholder URL like https://example.com/inbound for now). Generate a public/private key pair — the Dashboard will download the private key as a .pem file. Note the Application ID. JWT generation for Vonage requires signing a payload with the private key using RS256 algorithm. For Retool, the most practical approach is to generate a long-lived JWT (maximum 24 hours) using Vonage's online JWT generator tool at developer.vonage.com/jwt-generator, paste the JWT into a Retool Configuration Variable VONAGE_MESSAGES_JWT, and use a Retool Workflow to refresh it daily. Create a second Retool Resource named 'Vonage Messages API'. Set Base URL to https://api.nexmo.com/v1. Under Authentication, select Bearer Token and enter {{ retoolContext.configVars.VONAGE_MESSAGES_JWT }}. Add headers: Content-Type: application/json and Accept: application/json.

vonage_messages_api_body.json
1// Vonage Messages API query body for WhatsApp message
2{
3 "message_type": "text",
4 "text": "{{ messageTextInput.value }}",
5 "to": "{{ recipientPhone.value }}",
6 "from": "{{ retoolContext.configVars.VONAGE_WHATSAPP_NUMBER }}",
7 "channel": "whatsapp"
8}
9
10// For SMS via Messages API:
11// "channel": "sms"
12// For Viber:
13// "channel": "viber_service", "from": "{{ retoolContext.configVars.VONAGE_VIBER_ID }}"

Pro tip: The Vonage Messages API path for sending is POST /v1/messages. It returns a 202 Accepted response with a message_uuid — not immediate delivery confirmation. Delivery status comes asynchronously via webhooks to the status_url you configured in the Vonage Application settings. To track delivery in Retool, configure the status webhook to call a Retool Workflow endpoint that updates a message_log table.

Expected result: The Vonage Messages API Resource is configured with JWT Bearer authentication, and a test POST to /v1/messages successfully sends a WhatsApp or SMS message and returns a 202 response with a message_uuid.

4

Build the communications dashboard UI

With both the SMS API and Messages API Resources configured, build the main communications dashboard. Start with a Table component named 'contactsTable' connected to a SQL query that lists customers from your CRM or contacts database, showing name, phone, email, preferred channel (WhatsApp/SMS/Viber), and last_contacted date. Add a search Text Input above the table to filter by name or phone. To the right of the table, add a message composition panel: a Select component for Message Template (if you maintain pre-approved templates in a database), a Text Area for the message body with a character counter for SMS (160 chars per segment), and a channel indicator (showing which channel will be used based on the selected contact's preference). Add a Send Message button that checks the selected contact's preferred channel and triggers the appropriate Retool query — sendSMS (using the SMS API resource) or sendWhatsApp (using the Messages API resource). Below the composition panel, add an Activity Log Table showing the last 50 messages sent (retrieved from a message_log table in your database where each successful send is recorded with: contact_phone, channel, message_text, status, vonage_message_id, sent_at). Add event handlers to the Send button: on success → insert a log entry into message_log, update the contactsTable selectedRow's last_contacted field, show a success notification, and clear the message text area.

insert_message_log.sql
1-- Insert message log entry after successful send
2INSERT INTO message_log (
3 contact_phone,
4 channel,
5 message_text,
6 vonage_message_id,
7 status,
8 sent_by,
9 sent_at
10) VALUES (
11 {{ contactsTable.selectedRow.phone }},
12 {{ channelSelect.value }},
13 {{ messageTextArea.value }},
14 {{ sendMessage.data.message_id || sendMessage.data.message_uuid }},
15 'sent',
16 {{ current_user.email }},
17 NOW()
18);

Pro tip: For complex integrations involving multi-channel fallback logic, automated campaign sequencing, delivery webhook processing, and integration between Vonage communications data and CRM systems, RapidDev's team can help architect and build your Retool contact center solution.

Expected result: The communications dashboard allows staff to select contacts, compose messages, send via the appropriate channel, and view the message activity log — all from a single Retool panel.

5

Add bulk messaging and delivery tracking

To handle campaign-scale communications, add bulk messaging capabilities to the dashboard. Add a checkbox column to the contactsTable using Retool's Table multi-select feature (enable 'Allow multiple row selection' in the Table settings). When multiple contacts are selected (contactsTable.selectedRows.length > 1), show a Bulk Send panel instead of the single-contact composition panel. In the Bulk Send panel, include a message template Text Area, a preview showing the number of recipients selected, a Select for the sending channel, and a Confirm & Send button. The bulk send logic uses a JavaScript query that iterates over contactsTable.selectedRows and calls the SMS or Messages API query sequentially using await loops with a 100ms delay between calls to respect Vonage's throughput limits (approximately 30 SMS per second on standard accounts). Display a progress Modal showing sent/total/failed counts as the batch progresses. For delivery tracking, if you have configured a Vonage status webhook to post to a Retool Workflow, the Workflow updates the message_log table with delivery receipts. Add a Delivery Status column to the Activity Log Table that shows the latest status (accepted, delivered, failed) and auto-refreshes every 30 seconds using Retool's query polling feature.

vonage_bulk_send.js
1// JavaScript query: bulk send SMS with rate limiting
2const recipients = contactsTable.selectedRows;
3const messageText = bulkMessageText.value;
4const results = [];
5
6for (const contact of recipients) {
7 try {
8 const response = await sendSMS.trigger({
9 additionalScope: {
10 recipientPhone: { value: contact.phone },
11 smsMessageText: { value: messageText }
12 }
13 });
14 results.push({ phone: contact.phone, status: 'sent', message_id: response.message_id });
15 } catch (err) {
16 results.push({ phone: contact.phone, status: 'failed', error: err.message });
17 }
18 // Respect Vonage throughput limit: ~30 SMS/second
19 await new Promise(resolve => setTimeout(resolve, 100));
20}
21
22return results;

Pro tip: Vonage applies per-account and per-number throughput limits. Standard accounts can send approximately 30 SMS per second. For high-volume campaigns (1,000+ messages), contact Vonage support to upgrade your account tier and enable higher throughput. Use Vonage's Number Pools feature to distribute sends across multiple virtual numbers for large campaigns.

Expected result: The dashboard supports bulk messaging to multiple selected contacts with a progress indicator, rate-limited API calls, and delivery status tracking via the message activity log.

Common use cases

Build an SMS notification sending panel for operations teams

Create a Retool panel that allows operations staff to select recipients from a customer database, compose or select from pre-approved SMS templates, and send bulk or individual notifications via Vonage's SMS API. Show a real-time delivery status table that updates with message status (accepted, delivered, failed) and allows staff to retry failed messages or escalate to a different channel.

Retool Prompt

Build a Retool SMS sending panel using Vonage. A Table shows customers from the database with a checkbox for multi-select. A Text Area holds the message content with a character counter (160 char limit for one SMS credit). A Send button triggers a Vonage SMS API query for each selected recipient. Below, a delivery log Table shows recipient, status, timestamp, and error code for each sent message.

Copy this prompt to try it in Retool

Build a multi-channel messaging dashboard with WhatsApp and Viber

Create a unified messaging dashboard that routes outbound messages to customers via their preferred channel — WhatsApp first, Viber as fallback, SMS as final fallback. Using Vonage's Messages API, a Retool app selects the appropriate channel based on a customer preference field in the database, sends the message, and records the channel used and delivery result. Support team leads can view channel-level delivery analytics in a Chart.

Retool Prompt

Build a Retool multi-channel messaging panel using Vonage Messages API. Customer records show their preferred channel (WhatsApp/Viber/SMS). Selecting a customer and typing a message previews the delivery channel. A Send button routes the message via Vonage Messages API to the appropriate channel. A Chart shows weekly message volume broken down by channel type.

Copy this prompt to try it in Retool

Build a contact center outbound call tracker

Create a Retool outbound call management panel that allows support agents to initiate voice calls to customers via Vonage's Voice API, log call notes, and automatically send a follow-up SMS when a call goes unanswered. The dashboard shows each agent's call history for the day, call duration, outcome (connected, voicemail, no answer), and triggers a Vonage SMS with a callback message for missed contacts.

Retool Prompt

Build a Retool outbound call tracker with Vonage Voice API. An agent selects a customer from a queue table and clicks 'Call' which triggers a POST to Vonage Voice API. The call log table updates with status, duration, and timestamp. If status is 'no_answer', show a 'Send Follow-up SMS' button that triggers Vonage SMS API with a callback template message.

Copy this prompt to try it in Retool

Troubleshooting

Vonage SMS API returns status '4' — 'Invalid credentials' on every request

Cause: The api_key or api_secret values in the request body are incorrect, contain extra whitespace, or the Configuration Variable names are mistyped. Vonage credentials are case-sensitive and must be passed exactly as shown in the Dashboard.

Solution: Navigate to Retool Settings → Configuration Variables and verify the values of VONAGE_API_KEY and VONAGE_API_SECRET match exactly what is shown in the Vonage API Dashboard at dashboard.nexmo.com. Ensure there are no trailing spaces or newline characters. Test with hard-coded values temporarily in the query body (then remove them immediately after confirming they work) to isolate whether the issue is the credentials themselves or the Configuration Variable reference.

Messages API returns 401 Unauthorized — 'Invalid token'

Cause: The JWT used for Messages API authentication has expired (Vonage JWTs have a maximum 24-hour lifetime) or was generated with incorrect claims (wrong application_id or exp timestamp).

Solution: Regenerate the JWT using Vonage's JWT Generator at developer.vonage.com/jwt-generator — provide your Application ID and private key to generate a new 24-hour token. Update the VONAGE_MESSAGES_JWT Configuration Variable in Retool. To avoid manual daily refreshes, create a Retool Workflow triggered on a schedule every 23 hours that calls Vonage's token endpoint programmatically and updates the Configuration Variable automatically.

SMS sends successfully (status '0') but the message is never received

Cause: The recipient phone number may be in the wrong format, barred by Vonage (status '7'), or the Vonage virtual number may not be authorized for SMS in the destination country. Alphanumeric sender IDs are blocked in some regions (notably the USA), causing silent message failures.

Solution: Verify the recipient phone number is in E.164 international format — a country code followed by the full number without spaces or dashes (e.g., 14155551234 for a US number). Check Vonage's SMS Country Coverage and Restrictions documentation for the destination country's sender ID requirements. For US recipients, use a full Vonage long code number as the 'from' field rather than an alphanumeric brand name.

Messages API POST to /v1/messages returns 422 Unprocessable Entity

Cause: The request body is missing a required field or contains an invalid value for the specified channel. Common issues: the 'from' number is not registered with Vonage for the specified channel (e.g., a WhatsApp number used before Business Account approval), or the 'to' number format is incorrect for the channel.

Solution: Check the 422 error response body — it contains a 'title' and 'detail' field that specify exactly which field is invalid. Ensure the 'from' value matches the approved sender for the chosen channel in your Vonage Application settings. WhatsApp 'from' must be the WhatsApp Business Account number assigned to your Vonage application. Viber 'from' must be the Viber Service ID. Both must be pre-approved before use.

Best practices

  • Store all Vonage credentials (API Key, API Secret, from numbers, JWT) as Retool Configuration Variables marked as secrets — never embed credentials directly in query bodies or JavaScript code
  • Maintain a message_log database table that records every sent message with its vonage_message_id — this enables delivery status reconciliation when webhook callbacks arrive and provides a searchable communication audit trail
  • Implement per-recipient rate limiting in bulk send workflows (100ms minimum between requests) to stay within Vonage's throughput limits and avoid 'throttled' (status '1') responses that require retries
  • Use Vonage's test numbers feature in the dashboard (sandbox mode with test credentials) for developing and testing the Retool integration before switching to live credentials that charge real currency per message
  • Set up a Retool Workflow as the Vonage delivery status webhook endpoint — when Vonage posts delivery receipts, the workflow updates the message_log table, enabling real-time delivery tracking in the dashboard without polling the Vonage API
  • For WhatsApp messaging, use only pre-approved message templates for outbound messages to new contacts — WhatsApp Business Policy prohibits sending freeform messages to users who have not recently messaged your business, and violations can result in account suspension
  • Monitor your Vonage account balance programmatically by calling the /account/get-balance endpoint and displaying the remaining balance in a stat card on the dashboard — this prevents unexpected service interruptions from account credit exhaustion

Alternatives

Frequently asked questions

Does Retool have a native Vonage or Nexmo connector?

No, Retool does not have a native Vonage connector. You connect via a REST API Resource using Vonage's API Key and Secret credentials. Unlike Twilio (which has a dedicated Retool native connector), Vonage requires manual configuration of the REST API Resource with credentials passed as request parameters or Bearer JWT tokens depending on which Vonage API you are using.

What is the difference between Vonage's SMS API and Messages API, and which should I use in Retool?

The SMS API (/sms/json) is simpler, uses API Key + Secret auth directly in the request body, and supports SMS only. The Messages API (/v1/messages) requires JWT authentication but supports SMS, WhatsApp, Viber, Facebook Messenger, and MMS in a unified endpoint. For SMS-only use cases, start with the SMS API for its simpler setup. For multi-channel messaging, use the Messages API despite the more complex JWT authentication setup.

How do I track SMS delivery receipts in my Retool dashboard?

Vonage sends delivery receipts asynchronously via HTTP POST to a webhook URL you configure in the Vonage Dashboard (API Settings → Default SMS Webhook → Delivery Receipt URL). Set this URL to a Retool Workflow endpoint (create a Webhook-triggered Workflow in Retool). The Workflow receives the delivery receipt payload (containing message ID, status, and timestamp) and runs a SQL UPDATE query on your message_log table to record the delivery status. The Retool dashboard then reflects delivery status by querying the message_log table.

Can I receive incoming SMS or WhatsApp messages in Retool?

Yes, using the same webhook pattern. Configure an inbound message webhook URL in your Vonage Dashboard pointing to a Retool Workflow. When a customer sends an SMS or WhatsApp message to your Vonage number, Vonage POSTs the message to the Workflow, which can insert the inbound message into a database table and optionally trigger a Slack notification or email alert. A Retool dashboard can then display inbound messages alongside outbound history for complete conversation visibility.

Is Vonage suitable for building a contact center application in Retool?

Vonage provides the APIs needed for a basic contact center Retool app — outbound SMS, voice call initiation, and delivery tracking. For a full contact center with inbound call routing, interactive voice response (IVR), and agent call assignment, you would also use Vonage's Voice API (NCCO — Nexmo Call Control Objects) and Vonage's Contact Center solution. These are more complex integrations; however, a Retool app can serve as the agent desktop that displays customer data, call history, and allows one-click outbound dialing.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Integrations are where projects stall

We wire Retool integrations like this one every week — auth, webhooks, edge cases included. Fixed-price builds from $13K, delivered in 6–10 weeks.

Talk to an integration engineer

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.