
Send to up to 1,000 recipients per request on the routes you choose, with do-not-contact numbers suppressed before routing so a blocked number is never billed.
Send to up to 1,000 numbers in one request, from a numeric or alphanumeric sender.
Numbers on your do-not-contact list are skipped before routing, every message has a status you can look up, and you pay the route rate per segment rather than a retail bundle.
Up to 1,000 recipients per request and 1,600 characters per message.
Pick the route each bulk send or campaign goes out on, by tier and price.
Alphanumeric senders where the destination allows them, numeric where it does not.
Suppressed numbers are blocked before routing and never billed.
The status of every message, by API.
The route, the list, the message and the budget are all settled before the first message leaves, and nothing goes to a number on your do-not-contact list.
Choose an SMS route on the marketplace by destination, tier, A2P support, sender ID type and price per message, and buy it in a few clicks.
Upload your audience and duplicates and invalid numbers are set aside. Paste or upload opt-outs to your suppression list, up to 10,000 numbers at a time.
Set the sender ID and message, or load a saved template. The form counts segments per recipient and estimates the cost, and a spend cap guards the total.
Start the campaign from the Dialer and watch it work through the list. Pause whenever you need to, and it picks up where it left off.
Post up to 1,000 recipients to the bulk endpoint, each with its own message of up to 1,600 characters, so personalisation happens in your stack and sending happens in ours. The reply accounts for every recipient on its own line: its status, segments, cost and message ID, or the reason it was not sent. A number on your do-not-contact list costs nothing, and if your balance runs short part-way through, the remaining recipients are marked skipped, so you always know exactly where the batch stopped.
| To | Status | Segments | Cost | Detail |
|---|---|---|---|---|
| +44 7700 900118 | Sent | 1 | $0.0316 | Hi Sam, your 20% code is ready |
| +44 7700 900142 | Failed | · | $0.0000 | Opted out: on your do-not-contact list |
| +44 7700 900157 | Sent | 2 | $0.0630 | Longer offer with delivery details |
| +44 7700 900171 | Failed | 1 | $0.0000 | Refused by the route, charge reversed |
| +44 7700 900186 | Sent | 1 | $0.0316 | Hi Priya, your 20% code is ready |
Prefer a dashboard to a script? Run the send as an SMS campaign in the Dialer, beside your voice campaigns. Pick the route, sender ID and message, and the review step shows the recipients, segments and estimated cost before you start. While it runs, you watch sent and failed counts climb against the list. A spend cap you set pauses the campaign by itself when it is reached, with a notification telling you why, and a balance that reaches zero pauses it too instead of churning through refused sends.
Pauses by itself at the spend cap, or if the balance reaches zero.
Suppression is not a spreadsheet you have to remember to re-import before each send. Your do-not-contact list is checked against every message at the moment it is sent, whether it comes from a single API send, the bulk endpoint, an SMS campaign or an SMPP bind, and platform-wide blocks apply on top. A suppressed number is turned away before it is routed or charged, so it is never messaged.
| Number | Scope | Source | Added |
|---|---|---|---|
| +44 7700 900218 | Mine | Upload | 14 Sep 2026 |
| +44 7700 900377 | Mine | Manual | 12 Sep 2026 |
| +44 7700 900402 | Mine | Upload | 14 Sep 2026 |
| +1 555 0142 | Platform | Manual | 2 Sep 2026 |
Built for teams that send promotions, reminders and lifecycle messages at volume, and answer for every one of them.
SMS routes listed per destination with their tier, A2P or P2P support, sender ID type and price per message, so reach and cost are chosen together.
Send from your brand name on routes that carry alphanumeric sender IDs, or from a number where the route calls for one.
Messages in any script are counted in their real encoding before sending, so a campaign in Arabic or Greek is billed on its true segment count.
Each recipient in a bulk request carries its own text, so names, offers and links are merged in your own stack before anything is sent.
Outside a campaign or bulk request, a single send can pick the cheapest, best_quality or balanced route for its destination automatically.
Look up any message by ID for its status, cost and reference, or page through everything you sent by date range.
Messages to embargoed destinations are rejected before routing or billing, on every API send, so a stray number in a list is stopped before it goes anywhere.
Run a bulk request on a test key and every message is routed, priced and simulated against sandbox credit, with nothing delivered.
Marketing SMS lives or dies on cost per message and on trust. Both are designed in.
Buy the route the way carriers do, at its listed per-segment rate, plus a fee capped at $0.001 a message. At campaign volumes, the gap between a wholesale rate and a retail bundle is your margin.
Suppression is enforced where messages are sent, on every way into the platform, so a forgotten re-import can never message a number already on your list.
A prepaid balance, a spend cap on each campaign and an automatic pause at zero mean a campaign pauses at the figure you set instead of running on.
SMS campaigns run in the same Dialer as voice and AI agent campaigns, share one suppression list and one balance, and report into one account.
| A typical bulk SMS service | On PacketExchange | |
|---|---|---|
| Pricing | Retail bundles or credit packs, priced per message by the provider | The route's wholesale rate per segment, plus a fee capped at $0.001 |
| Opt-outs | An export, re-imported before each send | Checked against every message at send time, on every way in |
| Budget | Known once the invoice arrives | Estimated before launch, capped per campaign, paused at a zero balance |
| Routes | One undisclosed route for every destination | Chosen per destination by tier, A2P support, sender ID type and price |
| Personalisation | Merge fields inside the provider's editor | Your own text for each recipient in every bulk request |
| Proof | A percentage on a dashboard | Status, segments and cost for every message, by API |
| Channels | SMS in one tool, voice in another | SMS, voice and AI agent campaigns in one Dialer, on one balance |
Offers, launches and seasonal campaigns.
Onboarding, re-engagement and win-back flows.
Renewals, appointments and abandoned-cart nudges.
Every message is billed at the route's per-segment rate plus a platform fee of 2% of that amount, capped at $0.001 per message. For example, 10,000 one-segment messages on a $0.0310 route come to $316.20, fees included.
No monthly fee, no contract and no minimum. Top up from $5 by card or crypto or from $100 by bank wire, and put a spend cap on each campaign.
Compare SMS routes and pricesListed on every SMS route before you buy it.
2% of the carrier cost, capped at $0.001 per message.
Blocked before a route is chosen, so there is no charge.
Charged before hand-off and reversed in full.
The campaign form shows the segments per recipient and an estimated total before you launch.
Up to 1,000 per bulk API request, each with its own message. For bigger lists, send several requests in turn, or upload the audience to an SMS campaign in the Dialer and let it work through the list.
No. A number on your do-not-contact list, or on the platform-wide list, is refused before a route is chosen, so it is neither messaged nor billed.
No. It is your own list plus platform-wide blocks, enforced on all of your traffic. Consent, and any national registry checks your market requires, stay with you.
Yes, on routes that carry alphanumeric senders. Each SMS route states whether it carries alphanumeric, numeric or pre-registered sender IDs, so check the route for a market before you buy.
Set a spend cap on the campaign and it pauses when spend reaches it. Every message is also paid from a prepaid balance, and running campaigns pause if that balance reaches zero.
Trigger sends from your own scheduler through the API at the moment you choose, or start a Dialer campaign when you are ready. A campaign can be paused at any time and resumes where it left off.
The bulk reply lists every recipient with its status and cost, and any message can be looked up later by ID or found in your history by date. Campaigns show their sent and failed counts as they run.
Messages over 160 GSM-7 characters split into segments of 153, and Unicode messages over 70 characters into segments of 67. You pay the route rate per segment, per recipient, and the platform fee stays capped at $0.001 per message.