Skip to navigation

Messaging

Integrate powerful, programmable, high-throughput SMS and MMS with SignalWire APIs, SDKs, and no-code application builders

View as MarkdownOpen in Claude

Programmable Messaging is deeply integrated in the SignalWire platform. Our robust APIs, SDKs, and application builders are backed by first-class support and a team dedicated to compliance and class-leading delivery rates across all carriers and locations.

SignalWire is your Messaging partner from proof-of-concept to deployment. Get up and running quickly with our Getting Started guides and get registration right the first time with our comprehensive Guide to The Campaign Registry (TCR).

Enable messaging on your number

A US local (10DLC) number you buy can make and receive calls right away, but it can’t send or receive text messages until you enable messaging on it. US carriers require business text messages from local numbers to be registered with The Campaign Registry, so messaging starts off on new local numbers. It isn’t something you did wrong. Pick the path that matches what you need.

Send messages to anyone: register a campaign

To send messages in production, register with The Campaign Registry. The Registration guide walks through each step:

  1. Create a Brand for the business sending the messages.
  2. Register a Campaign that describes the messages you’ll send.
  3. Assign your phone numbers to the Campaign. Messaging turns on for each number once its assignment is approved.

Test messaging first: use the Platform Free Trial

To check that messaging works before you register, use the Platform Free Trial. Verify your own mobile number on the Messaging Campaigns page of the Dashboard. If you already have a US local number, you don’t need to buy another: SignalWire enables messaging for testing on one of your numbers, usually the one you bought most recently. If you don’t have one yet, buy a US local number and SignalWire enables messaging on it.

If your mobile number was verified before you started and messaging still isn’t on, remove it from your verified caller IDs and verify it again to start the trial. The Enabling Platform Free Trial steps cover each case.

The trial has restrictions:

  • Your trial number can send up to 200 message segments a day.
  • Messages you send through the messaging APIs, or during a call with the SWML send_sms method or the cXML <Sms> verb, can only go to your verified mobile number.
  • SignalWire adds [SignalWire Free Trial] to the start of each message you send through the messaging APIs, or with the SWML send_sms method during a call.

The trial is available once per account, and only before your account has any Brand or Campaign. If your trial has ended, you can’t restart it. Register a campaign to keep sending messages.

Toll-free numbers, short codes, and inbound-only numbers

Toll-free numbers don’t use The Campaign Registry. They go through toll-free verification instead. Short codes have their own application process in the Dashboard. To receive messages on a local number without sending any, contact Support to enable inbound-only messaging.

If you’re still stuck

If sending fails with error 21717 (“must belong to an active campaign”), the number isn’t assigned to an approved Campaign yet. For anything else, contact Support.

Try it out

Replace <YOUR_SPACE>, <YOUR_PROJECT_ID>, and <YOUR_API_TOKEN> in the samples with your Space name, Project ID, and API token, which you’ll find in API credentials.

version: 1.0.0
sections:
main:
- send_sms:
from_number: "+15551231234"
to_number: "+15555554321"
body: "Hello from SignalWire!"
version: 1.0.0
sections:
main:
- send_sms:
from_number: "+15551231234"
to_number: "+15555554321"
media: ["https://mcdn.signalwire.com/images/v2/loud/LogoLarge.jpg"]
version: 1.0.0
sections:
main:
- reply:
body: "The message %{message.body} has been received!"
version: 1.0.0
sections:
main:
- reply:
to: "+1xxxxxxxxxx"
from: "%{message.to}"
body: "You received a message from %{message.from} to SignalWire number %{message.to}. The message was: %{message.body}"

Choose an API

SignalWire’s many API offerings make it quick and easy to send and receive SMS and MMS within an application through a variety of phone number types. There are a few different ways to utilize these services, so we encourage you to browse the documentation for our APIs.

Looking for Chat or PubSub?

SignalWire’s Messaging APIs are tailored for SMS and MMS over the PSTN. For non-PSTN applications, check out our Chat APIs.

Reference

Frequently asked questions

New US local (10DLC) numbers don’t have messaging enabled. See Enable messaging on your number for how to turn it on.

10DLC is a type of phone number. Short for 10 Digit Local Code, it is a type of phone number that includes an area code followed by 7 additional digits indicating a specific channel. For example, +12345678910, where the “+1” indicates the country, the “234” indicates the area code, and the remaining digits indicate the channel.

Toll-free numbers, although slightly more expensive, allow for increased throughput out-of-the-box. They also have a registration process tied to them, however once complete, have a higher deliverability rating than traditional 10DLC numbers.

The Campaign Registry is a platform that was created in partnership with a company called Kaleyra and several Mobile Network Operators (MNOs). The platform itself acts as a source of information about every 10DLC number being used for outbound SMS through A2P routes in an effort to discourage spam in the industry. In short, any and all 10DLC numbers that are to be used for SMS in SignalWire’s platform must be registered through the Campaign Registry. You can find more information about the Campaign Registry in-depth here.

Yes! You can do this through the SignalWire REST APIs. Check out the documentation.

The number of messages you can send out depends on a few different factors. If you are using a toll-free number, there is no real limit outside of throughput in regards to the amount of messages you could feasibly send. With 10DLC, it depends on your registered use case with the Campaign Registry. AT&T provides a limit on the amount of texts per minute you can send to an end-user at the campaign level whereas T-Mobile limits the overall amount of SMS per day you can send to and end user at the brand level. For more information around this, consult our guide to The Campaign Registry.

Some content can’t be sent over SignalWire, even with the recipient’s consent, and some businesses can’t send messages at all. See prohibited message content for the carrier rules, including the age-gating rules for alcohol and tobacco.

For compliance, privacy, or moderation use cases, you can redact the body of a previously sent message by sending a PATCH request to /api/messaging/messages/:message_id with a body of "". Only messages in terminal states (delivered, undelivered, failed) are eligible; messages still in progress (queued or initiated) cannot be redacted. Once redacted, the original body is overwritten and cannot be recovered. See the Redact a message API reference for full details.

Carrier Passthrough Fees, also known as Network Access Fees (NAFs), are additional fees that Mobile Network Operators (MNOs), or Carriers, charge on a per-SMS/MMS basis for the ability of that SMS/MMS to be passed-through their network.

No. Every carrier (MNO) assesses their own rates for inbound and outbound SMS.

For verified toll-free numbers, you can contact sales at sales@signalwire.com to increase the throughput of those numbers up to 100 MPS for an additional price.

SignalWire does not provide a way to explicitly send to Verizon end-users or end-users of any other MNO.

You can verify toll-free traffic by opening a support ticket with us. Our team will follow up with the forms and information we need from you within that support ticket.

No. Customers are responsible for handling inbound stop requests and removing those customers from subscriber lists. Messages should not go out to these numbers again unless they have opted back in via an Unstop request.

Carriers consider anything more than 5% opt-out to be a high rate for consumers who have opted in and therefore should want to receive these messages.

New US local (10DLC) numbers start with messaging off, so they don’t receive text messages until messaging is enabled on them. See Enable messaging on your number. Once a number has messaging on, there’s no setting to turn off inbound messages on it.

We do not have a “scheduled” queue, but messages that exceed your throughput will be entered into your Space’s backlog and sent when possible. Read about the backlog and queue system here! The default message backlog is 10,000 for the entire Space. These limits can be increased based on the use case and individual approval following an account verification request.

Messages are charged when they are ‘Sent’ successfully - meaning they leave our network without issue. They are charged regardless of whether or not they deliver after they have left our network. You are not charged while your messages are queued or ‘failed’ (failed meaning they never left our network).

Visit our error code explanation page for details.