Learn

Resources

Use Cases

Customer Notifications

— Customer Notifications

Customer notifications that can hold a conversation

Send reminders, alerts, and confirmations by SMS. The same platform places the follow-up call and hands off to a human with the conversation history intact.

SW-UseCase-CustomerNotifications

The hard part

One platform for every customer touchpoint

You send an SMS. When it's ignored, the real work starts: detecting the non-response, placing a voice follow-up, carrying the customer's state into that call, and handing it off to a human without losing context.

With a traditional provider that only moves the message and fires a webhook, that logic is yours to build and maintain across a messaging API, a separate voice API, and a separate AI service. SignalWire runs the message, the fallback call, and AI agents on one platform, so interaction state persists across channels instead of living in your app. An unacknowledged SMS can trigger a call, the agent loads the same session data, and a transfer to a human carries the full history.

How it works

One platform for the message, the follow-up call, and everything in between

Trigger a notification from any event in your system, whether it’s an appointment booked, a shipment scanned, or a login from a new device. SignalWire sends it by SMS, voice, or both, tracks the result, and routes any reply back to your application.

01

Send from any event:

Trigger an SMS, MMS, WhatsApp message, or AI voice call from the same backend event.

02

You see what landed.

Status callbacks for messages, call outcomes for voice, visible from the same event log.

03

Escalate automatically:

No confirmation on the text? Follow up with an outbound call, so nothing depends on a customer noticing a notification.

04

Let the customer respond:

They text back to confirm, reschedule, or opt out, and your code acts on it.

05

Hand off with context:

When a human needs to step in, the agent transfers with full history intact.

01

Send from any event:

Trigger an SMS, MMS, WhatsApp message, or AI voice call from the same backend event.

02

You see what landed.

Status callbacks for messages, call outcomes for voice, visible from the same event log.

03

Escalate automatically:

No confirmation on the text? Follow up with an outbound call, so nothing depends on a customer noticing a notification.

04

Let the customer respond:

They text back to confirm, reschedule, or opt out, and your code acts on it.

05

Hand off with context:

When a human needs to step in, the agent transfers with full history intact.

01

Send from any event:

Trigger an SMS, MMS, WhatsApp message, or AI voice call from the same backend event.

02

You see what landed.

Status callbacks for messages, call outcomes for voice, visible from the same event log.

03

Escalate automatically:

No confirmation on the text? Follow up with an outbound call, so nothing depends on a customer noticing a notification.

04

Let the customer respond:

They text back to confirm, reschedule, or opt out, and your code acts on it.

05

Hand off with context:

When a human needs to step in, the agent transfers with full history intact.

Build it

Send your first notification in under five minutes.

Send an SMS notification with the Compatibility REST API. If you're coming from another provider, the call will look familiar, point it at SignalWire and your existing code runs. Track delivery by the message SID it returns.

SMS.py

copy

01

02

03

04

05

06

07

08

09

10

11

12

# pip install signalwire-sdk
import asyncio

from signalwire.relay import RelayClient

client = RelayClient(project=PROJECT_ID, token=API_TOKEN)

# Fire this from any event in your app: order placed, appointment booked, shipment scanned.
async def send_confirmation(order_id: str):
    async with client:
        message = await client.send_message(
            from_number=FROM_NUMBER,
            to_number=TO_NUMBER,
            body=f"Your order {order_id} is confirmed.",
        )
        print(message.message_id)   # track delivery by this message ID
        await message.wait()        # blocks until delivered (or failed)
        print(message.state)        # "delivered"

asyncio.run(send_confirmation("A-1042"))

SMS.py

copy

01

02

03

04

05

06

07

08

09

10

11

12

# pip install signalwire-sdk
import asyncio

from signalwire.relay import RelayClient

client = RelayClient(project=PROJECT_ID, token=API_TOKEN)

# Fire this from any event in your app: order placed, appointment booked, shipment scanned.
async def send_confirmation(order_id: str):
    async with client:
        message = await client.send_message(
            from_number=FROM_NUMBER,
            to_number=TO_NUMBER,
            body=f"Your order {order_id} is confirmed.",
        )
        print(message.message_id)   # track delivery by this message ID
        await message.wait()        # blocks until delivered (or failed)
        print(message.state)        # "delivered"

asyncio.run(send_confirmation("A-1042"))

SMS.py

copy

01

02

03

04

05

06

07

08

09

10

11

12

# pip install signalwire-sdk
import asyncio

from signalwire.relay import RelayClient

client = RelayClient(project=PROJECT_ID, token=API_TOKEN)

# Fire this from any event in your app: order placed, appointment booked, shipment scanned.
async def send_confirmation(order_id: str):
    async with client:
        message = await client.send_message(
            from_number=FROM_NUMBER,
            to_number=TO_NUMBER,
            body=f"Your order {order_id} is confirmed.",
        )
        print(message.message_id)   # track delivery by this message ID
        await message.wait()        # blocks until delivered (or failed)
        print(message.state)        # "delivered"

asyncio.run(send_confirmation("A-1042"))

SMS.py

copy

01

02

03

04

05

06

07

08

09

10

11

12

# pip install signalwire-sdk
import asyncio

from signalwire.relay import RelayClient

client = RelayClient(project=PROJECT_ID, token=API_TOKEN)

# Fire this from any event in your app: order placed, appointment booked, shipment scanned.
async def send_confirmation(order_id: str):
    async with client:
        message = await client.send_message(
            from_number=FROM_NUMBER,
            to_number=TO_NUMBER,
            body=f"Your order {order_id} is confirmed.",
        )
        print(message.message_id)   # track delivery by this message ID
        await message.wait()        # blocks until delivered (or failed)
        print(message.state)        # "delivered"

asyncio.run(send_confirmation("A-1042"))

What you’ll learn from the SMS Docs

Track delivery: Read status callbacks to see what was delivered, failed, or undelivered.

Receive replies: Handle inbound messages and STOP opt-outs.

Register your traffic: Set up 10DLC so US carriers deliver your messages.

Migrate: Point existing provider code at SignalWire with minimal changes.

What you’ll learn from the SMS Docs

Track delivery: Read status callbacks to see what was delivered, failed, or undelivered.

Receive replies: Handle inbound messages and STOP opt-outs.

Register your traffic: Set up 10DLC so US carriers deliver your messages.

Migrate: Point existing provider code at SignalWire with minimal changes.

What you’ll learn from the SMS Docs

Track delivery: Read status callbacks to see what was delivered, failed, or undelivered.

Receive replies: Handle inbound messages and STOP opt-outs.

Register your traffic: Set up 10DLC so US carriers deliver your messages.

Migrate: Point existing provider code at SignalWire with minimal changes.

The platform behind it

The SignalWire products behind customer notifications

Four capabilities, one platform, one bill: the AI kernel that runs the conversation, the telephony and messaging that reach the customer, and the control plane that keeps it one interaction instead of four vendors.

Programmable Messaging

Send and receive SMS and MMS from your registered numbers, with status callbacks that report delivery back to your backend. WhatsApp is available as an additional channel in beta.

REST API

A CPaaS-compatible HTTP API for sending messages and provisioning numbers. If you're coming from another provider, most of your existing code runs against SignalWire with little more than a credential swap.

Phone Numbers

Buy or port the 10DLC, toll-free, or short code numbers you send from. SignalWire is a registered CSP and files your campaign registration with you in as little as 48 hours.

RELAY

A persistent WebSocket connection that streams delivery events and inbound replies to your backend the moment they happen, so your application can act without polling.

Programmable Voice

Place automated voice calls for alerts that need to be heard, not only read, using text-to-speech or recorded prompts.

AI Agents

When the follow-up call should do more than play a message. Define AI voice agents that can confirm, reschedule, or verify, then hand off to a human. You describe it in SWML, SignalWire's markup for call flows, or build it in code.

Programmable Messaging

Send and receive SMS and MMS from your registered numbers, with status callbacks that report delivery back to your backend. WhatsApp is available as an additional channel in beta.

REST API

A CPaaS-compatible HTTP API for sending messages and provisioning numbers. If you're coming from another provider, most of your existing code runs against SignalWire with little more than a credential swap.

Phone Numbers

Buy or port the 10DLC, toll-free, or short code numbers you send from. SignalWire is a registered CSP and files your campaign registration with you in as little as 48 hours.

RELAY

A persistent WebSocket connection that streams delivery events and inbound replies to your backend the moment they happen, so your application can act without polling.

Programmable Voice

Place automated voice calls for alerts that need to be heard, not only read, using text-to-speech or recorded prompts.

AI Agents

When the follow-up call should do more than play a message. Define AI voice agents that can confirm, reschedule, or verify, then hand off to a human. You describe it in SWML, SignalWire's markup for call flows, or build it in code.

Programmable Messaging

Send and receive SMS and MMS from your registered numbers, with status callbacks that report delivery back to your backend. WhatsApp is available as an additional channel in beta.

REST API

A CPaaS-compatible HTTP API for sending messages and provisioning numbers. If you're coming from another provider, most of your existing code runs against SignalWire with little more than a credential swap.

Phone Numbers

Buy or port the 10DLC, toll-free, or short code numbers you send from. SignalWire is a registered CSP and files your campaign registration with you in as little as 48 hours.

RELAY

A persistent WebSocket connection that streams delivery events and inbound replies to your backend the moment they happen, so your application can act without polling.

Programmable Voice

Place automated voice calls for alerts that need to be heard, not only read, using text-to-speech or recorded prompts.

AI Agents

When the follow-up call should do more than play a message. Define AI voice agents that can confirm, reschedule, or verify, then hand off to a human. You describe it in SWML, SignalWire's markup for call flows, or build it in code.

The hard parts

The challenges with building customer notification applications and how SignalWire handles them.

The Challenge

How SignalWire Handles it

US carriers require 10DLC campaign registration before you can send.

Our dedicated support team helps get your campaigns approved in as little as 48 hours.

A notification spike can exceed your carrier throughput limit and drop messages.

Messages sent above your approved rate queue and release as capacity frees up, so a burst does not get dropped.

Every channel you add means another vendor, another SDK, another webhook format.

One platform for SMS, WhatsApp, voice, and AI escalation, one event model and one set of credentials.

A dropped or unread text can mean a missed appointment or a fraud alert nobody saw.

Trigger a follow-up call when a text goes undelivered or unanswered.

Escalating an unanswered notification to a human means re-explaining everything from scratch.

The call transfers as the same interaction; the state of what was sent and what the customer said moves with it.

The Challenge

US carriers require 10DLC campaign registration before you can send.

A notification spike can exceed your carrier throughput limit and drop messages.

Every channel you add means another vendor, another SDK, another webhook format.

A dropped or unread text can mean a missed appointment or a fraud alert nobody saw.

Escalating an unanswered notification to a human means re-explaining everything from scratch.

How SignalWire Handles it

Our dedicated support team helps get your campaigns approved in as little as 48 hours.

Messages sent above your approved rate queue and release as capacity frees up, so a burst does not get dropped.

One platform for SMS, WhatsApp, voice, and AI escalation, one event model and one set of credentials.

Trigger a follow-up call when a text goes undelivered or unanswered.

The call transfers as the same interaction; the state of what was sent and what the customer said moves with it.

In production

Used by teams that send notifications at scale


Angular Gradient Image
  • “Compared to our other solution, the throughput is much higher because I can push half a million text messages a month, a couple hundred thousand a day, and we get very fast turnaround time so those messages go out very quickly.”

    Avatar

    David Higginson

    CIO at Phoenix Children's Hospital

  • “Compared to our other solution, the throughput is much higher because I can push half a million text messages a month, a couple hundred thousand a day, and we get very fast turnaround time so those messages go out very quickly.”

    Avatar

    David Higginson

    CIO at Phoenix Children's Hospital

Why one of the country's largest pediatric health systems switched to short codes when carriers began blocking 10DLC traffic.

Angular Gradient Image
  • “Compared to our other solution, the throughput is much higher because I can push half a million text messages a month, a couple hundred thousand a day, and we get very fast turnaround time so those messages go out very quickly.”

    Avatar

    David Higginson

    CIO at Phoenix Children's Hospital

  • “Compared to our other solution, the throughput is much higher because I can push half a million text messages a month, a couple hundred thousand a day, and we get very fast turnaround time so those messages go out very quickly.”

    Avatar

    David Higginson

    CIO at Phoenix Children's Hospital

Why one of the country's largest pediatric health systems switched to short codes when carriers began blocking 10DLC traffic.

Angular Gradient Image
  • “Compared to our other solution, the throughput is much higher because I can push half a million text messages a month, a couple hundred thousand a day, and we get very fast turnaround time so those messages go out very quickly.”

    Avatar

    David Higginson

    CIO at Phoenix Children's Hospital

  • “Compared to our other solution, the throughput is much higher because I can push half a million text messages a month, a couple hundred thousand a day, and we get very fast turnaround time so those messages go out very quickly.”

    Avatar

    David Higginson

    CIO at Phoenix Children's Hospital

Why one of the country's largest pediatric health systems switched to short codes when carriers began blocking 10DLC traffic.

FAQ

Frequently asked questions

What people ask before automating customer notifications, from deliverability to fallback options.

How reliable are text message notifications for order updates?

Very reliable. Registered SMS numbers (10DLC, short code, or toll-free) see delivery rates of 96–98% in the US, with 90%+ of messages opened, usually within 3–5 minutes. The main risk to reliability isn't the channel, it's an unregistered sending number, which carriers filter or block. Pairing SMS with delivery-status tracking (and a voice fallback for failed messages) keeps order updates landing consistently.

Can an AI agent resolve a customer notification instead of only delivering it?

Yes, an AI agent can resolve a customer notification by looking up an order, rescheduling an appointment, or verifying an identity through tool calls to your backend, and it can only take actions your code explicitly allows. Customers can also confirm, reschedule, or reply STOP over plain SMS or WhatsApp when a live agent is not needed.

What features should I look for in a reliable notification service?

Delivery tracking, multi-channel fallback (SMS → voice), two-way replies, registered sender numbers, automatic opt-out handling, and a webhook API to trigger and receive messages.

Do I need a registered phone number to send automated SMS notifications at volume?

Yes, in the US, sending SMS notifications at volume requires campaign registration (10DLC) with your carrier. SignalWire supports the registration process, but registration and ongoing opt-out compliance remain the sender's responsibility.

Can I escalate an SMS customer notification to a live AI phone call automatically?

Yes, your backend or AI agent can watch for a confirmation on an SMS notification and, if none arrives, automatically trigger an outbound AI phone call using the same account and interaction history, with no separate system to wire up.

Angular Gradient Image

Ready to ship more reliable customer notifications?

Start with a text. Add an AI agent that can call, confirm, and resolve when it matters

Angular Gradient Image

Ready to ship more reliable customer notifications?

Start with a text. Add an AI agent that can call, confirm, and resolve when it matters

Angular Gradient Image

Ready to ship more reliable customer notifications?

Start with a text. Add an AI agent that can call, confirm, and resolve when it matters