Feature · SMS channel

Pacing at the limit your provider actually applies

The limit that stops your traffic is not your application’s quota — it is the rate your provider applies per sender number. One number, one limit, and a batch that ignores it fails partway through.

Why one quota is the wrong number

A platform-wide “messages per second” setting tells you nothing about whether a specific number can absorb a batch. Because the provider’s limit is attached to the number, pacing is configured and applied at that same granularity — add a number, and you genuinely add throughput.

  • Rate limits shown per connected sender number
  • Pacing applied per number rather than across the account as a whole
  • Additional numbers raise the ceiling instead of splitting the same allowance

Batches drain predictably instead of failing

When a batch exceeds what a number can absorb, the platform paces it out rather than sending into the wall. That turns a partial failure into a longer send, which is a trade you can plan for — and the pace is visible in the logs while it runs.

Pacing that matches the real per-number limit

Pacing at the per-number limit ships on the SMS channel, where the provider applies its rate to the sender number itself. Email and WhatsApp carry their own limits, handled by those channels rather than through this pipeline.

Questions this usually raises

Can I send faster by raising my plan?
Throughput here is set by your provider’s limit per number, not by a platform plan ceiling. Adding sender numbers or accounts is what raises it.
What happens to a message that cannot be sent within the window?
Pacing spreads the batch; it does not silently drop messages. How long a large batch takes depends on the limit attached to the numbers carrying it.
Do you pace email the same way?
Per-number pacing ships on the SMS channel. Email and WhatsApp limits are separate and are managed by those channels.

Keep reading

5 min

Pacing, quotas and why we queue

Every connection carries a send rate. The platform queues to that rate instead of firing as fast as a provider will accept, because the fastest way to get throttled is to send at the speed that causes it.

Read the guide →
3 min

Which rate limit you just hit

There are two throttles in front of a send: the one your plan sets, and a much higher one at the network edge. Both answer with the same status code, so the message text is what tells them apart.

Read the guide →
Features

Bring-your-own provider connections

You keep the provider relationship you already have, connect it once, and the platform treats that account as a send path it can route through, pace against and read receipts from.

Open →
Features

Routing and automatic failover

One provider account is a single point of failure that you cannot see failing until customers tell you. Routing across several accounts turns that into a failover you configure once.

Open →
Features

Normalised delivery receipts

Two providers describe the same outcome with two different words, and neither word means what the reader assumes. Normalising receipts into one status is what makes a receipt usable in code rather than as a screenshot.

Open →
Features

Opt-out and suppression

Suppression is the part of messaging that is easy to get almost right and expensive to get wrong: honour it too broadly and confirmations stop arriving; honour it too narrowly and you are ignoring a customer who asked you to stop. Getting it right is the whole feature.

Open →
Features

Sender identity you own

The sender is the first thing a recipient sees and the thing that decides whether a message is trusted. Because that identity sits on your own account, it stays with you however you choose to send.

Open →
Features

Send API

Product messaging is emitted by code, not typed by a person. The API exists so the service that knows an event happened is the service that sends the message about it.

Open →
Features

Receipt webhooks

Polling for status works until the volume makes it wasteful. A callback lets the system that cares about an event be told about it, which also means the record lands in your own database at the same time.

Open →
Features

Message logs and usage

The first question after any messaging incident is “what did we actually send?”. That answer should come from a log with a filter on it, not from a reconstruction.

Open →
Features

Tenant isolation

Isolation is the feature that nobody asks about until it is missing. Holding connections, keys and records per tenant means a shared platform does not become a shared inbox.

Open →
Features

Manual sending from the console

Not every message comes from an API. Testing a new sender, resending after a fix, or simply looking up what a customer received — those are console jobs, and they should not require writing code.

Open →
Scope. Whaleal Messaging is an orchestration layer over the CPaaS or BSP accounts you already hold. Your contracts, your rates and your sender identities stay yours, and nothing in the middle reprices them. Each page states the channel a capability ships on, so you can plan against what is available today.