A new sending number has no history. To a carrier or to Apple, it is indistinguishable from a number a spam operation activated this morning — because that is exactly what a spam operation does.
Warming is how you build the history that separates you from that. It is not superstition, and it is not optional.
The two limits people conflate
Nearly every warm-up guide covers one of these and ignores the other, which is how numbers get flagged while their owners believe they were being careful.
New-contact velocity. How many people you message for the first time per day. This is what makes a number look like it is working a list.
Absolute daily volume. How many messages you send in total, regardless of who to. This is what published thresholds are actually written against.
They are different risks. A number sending 200 messages a day to twenty regular customers is behaving very differently from one sending 200 messages to 200 strangers — but only the second limit catches the first case, and only the first limit catches the second.
Cap only new contacts and a number can sit comfortably inside "warmed" while running at double the safe daily volume. We shipped that mistake ourselves: our default per-line ceiling was 200 a day, sitting squarely in the elevated-risk band, while our warming logic diligently limited new contacts.
The bands worth knowing
For a single Apple ID, widely reported:
| Daily outbound | Risk | |---|---| | 80–120 | safe ceiling | | 150+ | elevated | | 250+ | high | | 500+ | suspension likely |
Note the top of the safe band is around 100 a day. Not a thousand. If your plan requires more than that, it requires more than one number — capacity is fleet size, and no amount of warming changes the ceiling on a single line.
The schedule
The commonly cited ramp for an established account:
| Week | Messages/day | |---|---| | 1 | 25 | | 2 | 50 | | 3 | 75 | | 4+ | 100 |
For a brand-new account the guidance is to halve those and add two weeks:
| Week | Messages/day | |---|---| | 1 | 12 | | 2 | 25 | | 3 | 37 | | 4 | 50 | | 5 | 75 | | 6+ | 100 |
Almost every number you provision today is a new account. Using the aged ramp on a new one is precisely the mistake that gets a number flagged in week one — it is the fastest ramp that still feels cautious, which is why people reach for it.
Alongside that, cap new contacts separately: roughly 10 a day in the first week, 25 in the second, 50 from week three.
What matters as much as the numbers
Vary the timing. Sends landing at exactly the same minute every day are a flagged pattern. Automated systems produce this by default — a cron fires at :00 — and it is one of the few signals that is unmistakably non-human. Spread sends, and never let a scheduler hit the same clock position daily.
Vary the content. Identical text to consecutive recipients is a spam signature. Personalisation is not a nicety here; it is deliverability.
Get replies. This is the strongest positive signal available and the most neglected. An account that only sends looks like a broadcaster no matter how slowly it does it. A number in genuine two-way conversation looks like a phone.
That last point is why warming and inbound-first reinforce each other. If your first contacts come from people texting you, your number starts life with a healthy send-to-receive ratio instead of spending six weeks building one.
A practical first week
Assuming a new number and a new account:
Day 1–2. Nothing automated. Have colleagues text the number and reply. Send a handful of real messages by hand. You are establishing that a human uses this phone.
Day 3–7. Turn on automated sending, capped around 12 a day. Prefer recipients who have already messaged you. If you have a Text Us link or QR, this is when it goes live — inbound traffic during week one is worth more than any send.
Week 2. Raise to 25 a day. Watch delivery receipts, not just delivery.
Week 3–6. Follow the ramp. Increase only if receipts are healthy and replies are arriving. A week that looks wrong is a week to hold, not push through.
Signals to stop on
Pause and hold — or drop back a step — on any of these:
- Delivery receipts collapsing while sends still succeed. Something is absorbing messages before anyone reads them.
- Inbound going silent on a line that normally gets replies.
- Any consecutive send errors. One is noise; three in a row is a pattern.
The instinct when a ramp stalls is to push through it. That instinct is wrong roughly every time.
Automating it
Warming is exactly the kind of discipline that erodes under deadline pressure, so it belongs in code rather than a document. senderZ enforces it per line: a line's ceiling is a function of its age, starting at 12 a day and reaching 100 after six weeks, with new-contact velocity capped separately.
The point of putting it in the router is that nobody has to remember it, and nobody can decide to skip it for one important campaign — which is how these things actually fail.
FAQ
Questions
How long until a number is fully warmed?
About six weeks for a new account to reach 100 messages a day safely. Faster ramps work until they do not, and the failure is usually permanent rather than a setback.
Can I warm several numbers at once?
Yes, and you should if you need capacity — a single line tops out near 100 a day regardless of how patient you are. Warm them in parallel from day one rather than adding numbers reactively when you hit a ceiling.
Does warming apply to iMessage, SMS, or both?
Both, for different reasons. Apple watches account behaviour; carriers watch traffic patterns. The same schedule serves both, since the underlying signal — a new sender ramping plausibly — is the same.
What if I need volume immediately?
Then you need registered A2P SMS capacity rather than a warmed consumer-style line, and you should plan for that from the start. Rushing a warm-up to meet a launch date is the most common way a number is lost in its first month.