The use of 10-digit phone numbers (long codes) for SMS and MMS messages is heavily regulated in the US and Canada. Long codes, however, remain the medium of choice for businesses seeking to engage with their customers via SMS. A long code is more familiar to customers, has a price advantage, and is easily procured. As a result, long codes are the natural choice for most use cases.
Powerpack makes message communication using long codes effective and reliable at scale. It is designed to meet your overall message throughput and volume requirements, regardless of the size of your business.
By automatically distributing your overall message traffic across a pool of source numbers, Powerpack keeps you compliant with the per-day and per-second throughput guidelines defined by the Cellular Telecommunications Industry Association (CTIA).
Though the US and Canada heavily regulate SMS/MMS messages sent using regular 10-digit phone numbers, these long codes remain the medium of choice for businesses that wish to engage with their customers via messaging. The familiarity that they lend to a conversation, their price advantage, and the easy procurement process make long codes a natural choice for most users.
Powerpack makes message communication using long codes effective and reliable at scale. It’s designed to meet large-scale messaging throughput and volume requirements. By automatically distributing your overall message traffic across a pool of source numbers, Powerpack keeps you compliant with per-day and per-second throughput limits as defined by the CTIA (Cellular Telecommunications Industry Association).
To create a new Powerpack:
To send messages using Powerpack:
Copy the Powerpack ID for the Powerpack you wish to use.
1
2
3
4
5
6
7
8
import plivo
client = plivo.RestClient('<auth_id>','<auth_token>')
message_created = client.messages.create(
powerpack_uuid='<powerpack_uuid>',
dst='<destination_number>',
text='Test Message'
)
1
2
3
4
5
6
7
8
9
10
11
12
13
require 'rubygems'
require 'plivo'
include Plivo
client = RestClient.new("<auth_id>","<auth_token>")
response = client.messages.create(
nil,
[destination_number],
'Test Message',
powerpack_uuid: '<powerpack_uuid>'
)
puts response
1
2
3
4
5
6
7
8
9
10
let plivo = require('plivo');
let client = new plivo.Client('<auth_id>','<auth_token>');
client.messages.create({
powerpackUUID:"<powerpack_uuid>",
dst:'<destination_number>',
text: 'Test Message',
},).then(function (message_created) {
console.log(message_created)
})
1
2
3
4
5
6
7
8
9
10
11
12
13
require 'vendor/autoload.php';
use Plivo\RestClient;
$client = new RestClient('<auth_id>', '<auth_token>');
$message_created = $client->messages->create(
[
"powerpack_uuid" => "<powerpack_uuid>",
"dst" => "<destination_number>",
"text" =>"Hello, this is a sample text",
"url"=>"https://<yourdomain>.com/sms_status/",
]
);
print_r($message_created);
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.plivo.api;
import com.plivo.api.models.message.Message;
import com.plivo.api.exceptions.PlivoRestException;
import java.io.IOException;
import java.util.Collections;
class Example {
public static void main(String[] args) throws IOException, PlivoRestException {
Plivo.init("<auth_id>", "<auth_token>");
Message.creator("<powerpack_uuid>","<destination_number>"), "Test Message").create();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main
import (
"fmt"
"github.com/plivo/plivo-go/v7"
)
func main() {
client, err := plivo.NewClient("<auth_id>", "<auth_token>", &plivo.ClientOptions{})
if err != nil {
fmt.Print("Error", err.Error())
return
}
client.Messages.Create(plivo.MessageCreateParams{
PowerpackUUID: "<powerpack_uuid>",
Dst: "<destination_number>",
Text: "Test Message",
})
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using Plivo;
internal class Program
{
public static void Main(string[] args)
{
var api = new PlivoApi("<auth_id>","<auth_token>");
var response = api.Message.Create(
powerpack_uuid:"<powerpack_uuid>",
dst:new List<String>{"<destination_number>"},
text:"Test Message"
);
Console.WriteLine(response);
}
}
To modify or update your Powerpack
To manually remove phone numbers from your number pool, first click on View Numbers.
Plivo Applications can handle all incoming messages to the Powerpack phone numbers. To create a new Plivo Application, navigate to Messaging > Applications on the console and click Add New Application. Once created, you can associate this application with your Powerpack.
Once you configure an Application for your Powerpack, all incoming messages to your Powerpack phone numbers are posted to the message_url in your Plivo Application.
Local Connect is designed to make message communication personal. It ensures that messages get sent using a local phone number with the same area code or regional prefix as the destination number.
Let’s look at an example of how this works. Suppose you’re sending an SMS/MMS message to a San Francisco number beginning with area code 415:
You can add short code, toll-free, and long code numbers to your Powerpack. When you add more than one type of number to a Powerpack, the Powerpack automatically resolves the source numbers of various types based on the number available and priorities set within the Powerpack to help you achieve the best delivery rate.
The default fallback priority list, which you can customize in the console, is:
United States | Canada |
---|---|
Short code — Priority 1 | Short code — Priority 1 |
Toll-free — Priority 2 | Long code — Priority 2 |
Long code — Priority 3 | Toll-free — Priority 3 |
These default values can also be changed based on your needs from the console. For example, if you want to maximize cost savings, you can set the following priorities for the US and Canada.
United States | Canada |
---|---|
Short code — Priority 1 | Short code — Priority 1 |
Long code — Priority 2 | Long code — Priority 2 |
Toll-free — Priority 3 | Toll-free — Priority 3 |
We recommend having long code numbers and toll-free numbers in your Powerpack, with long codes prioritized over toll-free numbers. The number of long codes in your Powerpack is an important factor for sending messages on a large scale. That number should be based on your average message traffic volume and our number pool size recommendation. We request that you stick to the recommended set of numbers.
Operator configurations allow you to select the type of source number, such as short code or toll-free, with which to send a message to specific operator terminating numbers. They are currently available only for Verizon and AT&T operators.
In the example below, all Verizon terminating numbers are set to be routed via short code.
This feature can help you overcome message delivery failure with certain operators and increase delivery rates. Visit the console to get started with this feature.
Combining toll-free numbers in the Powerpack helps in two major ways.
For example: If you send messages to destination networks C1 and C2 using Powerpack, but C2 doesn’t support toll-free numbers, Powerpack will use other numbers in the pool to send messages to the C2 network and short code numbers to reach customers in C1.