Product guide
Rate limits & sending caps
Whether a number’s messages arrive as iMessage depends on how Apple sees it. A number that messages a lot of new people in a short time — especially people who are not on iMessage — starts to look like a broadcaster, and Apple stops delivering its messages as iMessage for a while. Nobody can appeal that, so every number keeps to the limits below, on every way of sending: conversations, the API, automations, announcements, scheduled messages and GoHighLevel.
The limits belong to each number, not your organization: three numbers get three times the room.
50 new people a day
Only people the number writes to first count. Replying, following up, and messaging somebody who wrote to you first never do.
Seven an hour to people who have not replied
First messages and unanswered follow-ups go about eight minutes apart, never more than two in ten minutes, by iMessage, SMS or RCS alike. Fifty new people take about seven hours rather than one.
150 messages a day
Every message counts, replies included. It holds back automations, announcements, scheduled messages and integrations; what you type in the inbox goes past it. It is well above what a number in ordinary two-way conversation reaches.
Nothing is dropped
A message past a limit waits and goes out by itself when there is room. You can see it waiting, and cancel it.
The limits
| Limit | Default | What counts | Over |
|---|---|---|---|
| New people a day | 50 | First messages to people this number has not messaged before | Any 24 hours |
| Unanswered messages an hour | 7, and 2 in any ten minutes | First messages, and follow-ups to people who have not replied, about eight minutes apart | Any hour |
| Messages a day | 150 | Every message the number sends, replies included. Only automated sends wait for it; yours from the inbox go past it | Any 24 hours |
| Messages a minute | 15 | Every message; past it, one every four seconds | Any minute |
Every window rolls: “a day” is the last 24 hours, not since midnight, so room comes back a message at a time as the oldest turn a day old rather than all at once.
Who counts as a new person
- Somebody this number has never messaged, and who has never messaged it. The first message to them counts, once.
- An introduction and the follow-up you send right behind it are one person, not two.
- Somebody who wrote to the number first is not a new person: answering them never counts, however many times.
- A first message you cancel before it goes, or one we refuse, gives its place back. One that went but failed still counts: Apple saw it.
Follow-ups to people who have not replied
To Apple, a follow-up to somebody who never wrote back is the same one-way message as the first one. So every message to a person who has not replied keeps the hourly pace, the first and each follow-up, whether it goes as iMessage, SMS or RCS. Only the first spends a place in the day’s 50 new people. The moment they write back it is a conversation, and nothing to them is paced.
A second bubble sent straight after the first — “Hi Ana” and then the link, within two minutes — goes with it rather than waiting its own turn.
What happens at a limit
- It waits. The message is accepted, shows as waiting in the conversation, and goes out by itself at the first moment that keeps the number inside every limit. Through the API it comes back
pendingwith the time it is held to. - Conversations are not held behind the pace. A number out of room still answers everybody who has written to it straight away.
- What you type is not held for the day. A message sent from the inbox goes now even when the number has sent its 150, and still counts toward them, so automated sends get that much less room. Through the API, the
mbcommand line or MCP, passmanual: true(mb send --manual) for one message a person asked to send now; never for bulk. Either way opt-outs, blocks and the 50 new people still apply. - Unless it could not go for days. A message that could not go within five days — a list of thousands on one number — is refused instead, so it does not quietly become a month of queue:
429new_contact_limitfor a first message to somebody new,daily_message_limitfor an automated send past the daily total, each with aRetry-After. More numbers is the answer to more reach. - Automations and announcements pace themselves. Each person is sent to when the number has room; an announcement to fifty new people takes about seven hours.
When a number goes green
If a number that normally delivers iMessage starts delivering everything as text messages (green bubbles), Apple has stopped trusting it for now. We notice, lower it to one message a day to people who have not replied — a first message or a follow-up — and email the people on your project. Its messages still go out, as texts, and replies are not affected. It usually recovers within about two days once it slows down.
When it is back on iMessage it does not go straight back to full speed: it climbs back over three weeks, because going straight back to the volume that lost it iMessage is how it loses it again.
| When | Messages a day to people who have not replied |
|---|---|
| While it is sending as texts | 1 |
| Week 1 after it recovers | 10 |
| Week 2 | 20 |
| Week 3 | 30 |
| Week 4 on | Its usual limit again, up to 50 |
While it is down or warming up, follow-ups to people who have not replied count toward these too; anybody who writes back is a conversation and is never held. Each week is never more than the number’s own limit, if that is lower. A number that had more than 50 comes back at 50; ask us when you are ready for more. While it warms up, spread first messages across the working day rather than sending a day’s worth at once.
Seeing where a number is
Open Numbers in your project. Each number shows the new people it has messaged and the messages it has sent in the last 24 hours against its limits, when the next new person can be messaged, how many are waiting, and its warm-up week if it has one. Through the API, GET /v1/projects/{id}/sending-stats returns the same: new_contacts_used, new_contacts_limit, next_new_contact_at, messages_used, messages_limit and warmup. While a number is down or warming up, unanswered_used counts its first messages and its follow-ups to people who have not replied together, against the same new_contacts_limit.
When a limit goes up — raised for you, or a new week of warm-up — messages already waiting move earlier to use the room, within a few minutes and still at the pace.
Raising a limit
The defaults fit a number used for real conversations. If your number has a long history of two-way conversation and you need more, write to support@missblue.dev with what you are sending: we can raise either daily limit for one number or for your whole organization. A higher limit does not make a number safe from Apple; it only stops us holding you back. For more reach, add numbers.
NextSending messagesHow a message is sent, and what its status means while it waits and after it goes.