📞 Send Automated Call Notifications
Overview
Automated voice call notifications provide immediate, direct communication with your users through phone calls. NotificationAPI makes it easy to send personalized voice messages with features like proper phone number formatting, delivery tracking, and global reach—all without needing a third-party service like Twilio.
This guide covers everything you need to know about sending automated call notifications, from basic setup to advanced features.
You DON’T need another 3rd-party like Twilio. Through our partnerships, we allocate and manage any required telecom infrastructure for you.
Step 1: Create your account and first notification
- Create your NotificationAPI account and complete the onboarding. Sign up for free.
- In the dashboard, create your first notification and enable the Call channel. See the Configure Notification guide if needed.
- Note the notification’s Type (e.g.,
urgent_alert). You’ll use this later in the send step.
Step 2: Install the SDK
In the dashboard send step, the first thing you’ll need to do is install the SDK. Select the appropriate language and follow the instructions.
Install the node package using one of the following package managers:
npm install notificationapi-node-server-sdkyarn add notificationapi-node-server-sdkpnpm add notificationapi-node-server-sdk pip install notificationapi_python_server_sdk composer require notificationapi/notificationapi-php-server-sdk go get github.com/notificationapi-com/notificationapi-go-server-sdk dotnet add package NotificationAPI --version 0.5.0 Add the following dependencies to your pom.xml file:
<dependencies>
<dependency>
<groupId>com.notificationapi</groupId>
<artifactId>notificationapi-java-server-sdk</artifactId>
<version>0.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
</dependencies> Add the NotificationAPI class to your application - see the full Ruby implementation.
Step 3: Send a Call Notification
The next part of the send step is to send the notification from your backend. Here’s how to send a call notification by passing the call content directly:
Replace the type value (e.g., urgent_alert) with the notification Type you
noted in Step 1, and replace YOUR_CLIENT_ID and YOUR_CLIENT_SECRET with
the values from the code sample in your NotificationAPI dashboard. Phone
number format: use [+][country code][area code][local number].
import notificationapi from 'notificationapi-node-server-sdk';
// Initialize (default US region)
// For CA region: add 'https://api.ca.notificationapi.com' after CLIENT_SECRET
// For EU region: add 'https://api.eu.notificationapi.com' after CLIENT_SECRET
notificationapi.init('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET');
// Send call notification (direct content)
notificationapi.send({
type: 'urgent_alert',
to: {
id: 'user123',
number: '+16175551212' // Replace using format [+][country code][area code][local number]
},
call: {
message: 'This is an urgent alert from Acme Corp.'
}
}); import asyncio
from notificationapi_python_server_sdk import notificationapi
# Initialize (default US region)
notificationapi.init("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET")
async def send_call():
await notificationapi.send({
"type": "urgent_alert",
"to": {
"id": "user123",
"number": "+16175551212" # Replace using format [+][country code][area code][local number]
},
"call": {
"message": "This is an urgent alert from Acme Corp."
}
})
# Run the async function
asyncio.run(send_call()) use NotificationAPI\NotificationAPI;
// Initialize
$notificationapi = new NotificationAPI('YOUR_CLIENT_ID', 'YOUR_CLIENT_SECRET');
// Send call notification (direct content)
$notificationapi->send([
"type" => "urgent_alert",
"to" => [
"id" => "user123",
"number" => "+16175551212" // Replace using format [+][country code][area code][local number]
],
"call" => [
"message" => "This is an urgent alert from Acme Corp."
]
]); package main
import (
notificationapi "github.com/notificationapi-com/notificationapi-go-server-sdk"
)
func main() {
// Initialize
notificationapi.Init("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", "https://api.notificationapi.com")
// Send call notification (direct content)
notificationapi.Send(
notificationapi.SendRequest{
Type: "urgent_alert",
To: notificationapi.User{
Id: "user123",
Number: "+16175551212", // Replace using format [+][country code][area code][local number]
},
Call: map[string]interface{}{
"message": "This is an urgent alert from Acme Corp.",
},
},
)
} using NotificationApi.Server;
using NotificationApi.Server.Models;
// Initialize
var notificationApi = new NotificationApiServer("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
// Send call notification (direct content)
var notification = new SendNotificationData
{
Type = "urgent_alert",
To = new User
{
Id = "user123",
Number = "+16175551212" // Replace using format [+][country code][area code][local number]
},
Call = new Dictionary<string, object>
{
{ "message", "This is an urgent alert from Acme Corp." }
}
};
await notificationApi.Send(notification); package com.example;
import com.notificationapi.NotificationApi;
import com.notificationapi.model.*;
public class Example {
public static void main(String[] args) {
NotificationApi api = new NotificationApi(
"YOUR_CLIENT_ID",
"YOUR_CLIENT_SECRET"
);
// Create user
User user = new User("user123")
.setNumber("+16175551212"); // Replace with your phone number, use format [+][country code][area code][local number];
// Create and send notification request
NotificationRequest request = new NotificationRequest("urgent_alert", user)
.setCall(new CallOptions()
.setMessage("This is an urgent alert from Acme Corp.")
);
System.out.println("Sending notification request...");
String response = api.send(request);
System.out.println("Response: " + response);
}
} # Initialize
notificationapi = NotificationAPI.new("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET")
# Send call notification
notificationapi.send({
type: "urgent_alert",
to: {
id: "user123",
number: "+16175551212" # Required for call notifications (E.164 format)
},
parameters: {
firstName: "John",
alertType: "Security Alert"
}
}) You’re All Set!
🎉 Congrats! You’re now sending notifications!
If you’d like to send using templates configured in the Dashboard, check out our Templating guide and Backend Integration, or learn more about call notifications below.
Phone Number Formatting
When sending call notifications, phone numbers must be formatted correctly:
- Format: E.164 standard with country code (e.g.,
+16175551212) - US/Canada numbers: We also accept unformatted numbers:
(415) 555-1212415-555-12124155551212
For international numbers outside US/Canada, always use the E.164 format with
the + prefix and country code.
Sender Phone Numbers
Free Accounts
- Shared number:
+16505501770
Paid Accounts
- Dedicated phone number: Assigned exclusively to your account
- Default area code: +1 (650), but can be changed to other area codes, short codes, or toll-free numbers
- Custom numbers: We can help transfer existing numbers to our care
Delivery Tracking and Monitoring
NotificationAPI provides comprehensive delivery monitoring:
- Real-time status updates via webhooks
- Delivery reports in the dashboard
- Automatic retry logic for failed calls
- Rate limiting to prevent spam
Your Own Telecom Team
When you use NotificationAPI for call notifications, you get access to our telecom expertise:
Regulatory Compliance
More and more countries and telecom companies are joining forces to prevent phone calls spam. We help our customers navigate these regulations and stay compliant, by registering your numbers, submitting necessary documentations, verifying your business in different juristictions, applying for elevated access, and more.
Delivery Monitoring
We also monitor your call activity and will reach out to you directly if we detect an alarming rate of failure. You can also rely on our team for best practices, reviewing your automated calling script, or to help you troubleshoot a calling issu
Number Management
We can also navigate the transfer of any existing numbers to our care, so your team can focus on your software and core product.
Frequently Asked Questions (FAQs)
Do I need a Twilio account or other third-party service?
No! NotificationAPI provides complete telecom infrastructure through our partnerships. You don’t need Twilio, Vonage, or any other voice service provider.
What phone number will recipients see when they receive calls?
- Free accounts: Calls will come from our shared number
+16505501770 - Paid accounts: Calls will come from your dedicated phone number, which defaults to a +1 (650) area code but can be customized
What countries and regions are supported for call notifications?
NotificationAPI supports call notifications to most countries worldwide. Contact our support team for specific country availability and any special requirements.
How long can my voice message be?
Voice messages can typically be up to 5 minutes long, though we recommend keeping them under 60 seconds for better user experience and delivery rates.
How do I handle failed call deliveries?
NotificationAPI automatically retries failed calls and provides detailed delivery status via:
- Dashboard logs: View delivery status and failure reasons
- Webhooks: Receive real-time status updates in your application
- APIs: Query delivery status programmatically
Can I schedule call notifications for later?
Yes! You can schedule call notifications using the scheduledDate parameter. See our Scheduled Notifications documentation for more information.
Are there rate limits for call notifications?
Yes, rate limits help ensure optimal delivery and prevent spam:
- Free accounts: Limited calls per day
- Paid accounts: Higher limits based on your plan
- Enterprise: Custom rate limits available
Contact our team if you need higher limits for your use case.