Push notifications cost almost nothing per message but only reach people who installed your app and allowed notifications. SMS costs money per segment and needs registration and consent, but it reaches any opted-in phone number whether or not the app is installed. The rest of this post weighs SMS vs push notifications on reach, cost, consent and speed, and explains why most products end up using both.

Push and SMS rarely compete for the same message. Push suits high-frequency, low-stakes nudges to engaged users. SMS suits the smaller set of messages that have to land: a failed payment, a confirmed appointment, a shipped order, a reply from a human. The useful question is not which channel wins. It is which messages belong on which channel, and what the expensive one costs once you route the important messages to it.

One disclosure that matters for this comparison: we make Ready, which sends SMS and iMessage. Ready does not send push notifications. For push you would use Apple's and Google's push services directly, or a push vendor. Everything below about push applies regardless of what you use for SMS.

The short comparison

Push notificationsSMS
Who you can reachPeople with your app installed who granted notification permissionAnyone with a phone number who opted in to texts
Per-message costEffectively zero (Apple and Google don't charge per push)Billed per segment; on Ready, $0.0075/segment plus a $0.0045 carrier fee
SetupApp, push certificates/keys, permission promptPhone number plus 10DLC registration (brand + campaign)
ConsentOS-level permission toggleCarrier and TCPA consent rules, STOP handling
Speed at scaleVery fast fan-out to large audiencesThrottled per second by carrier tier
Survives uninstall?NoYes
Two-way repliesNot nativelyYes
Character limitVaries by OS, truncated in previews160 GSM-7 chars per segment, 70 with an emoji

Reach: push only hits people who opted into your app

Push has a funnel in front of it that SMS doesn't. A user has to:

  1. Install the app (web push skips this but has its own prompt).
  2. See the permission prompt and tap "Allow." iOS has always required this, and recent Android versions now require it too.
  3. Keep notifications on. Users can mute an app in two taps from settings, and many do after a few irrelevant pushes.
  4. Keep the app installed.

Every step loses people, and you often can't tell which users have gone dark. A push that "sent" to a disabled device fails silently from the user's point of view. Opt-in rates vary widely by app category and prompt timing, so treat any single benchmark with suspicion. The direction is consistent, though: a large share of your users can't receive push at any given moment.

SMS has a simpler reach model. If you have a valid mobile number and the person agreed to texts, the message goes to the phone's native messaging app. It doesn't depend on an install, an app version or a settings screen. This is why SaaS products move billing and account-critical alerts to text. An in-app banner or push waits for the user to open the app. A text doesn't. (We work through that billing case in the usage-based billing alerts post.)

One caveat on SMS reach: landlines and dead numbers can't receive texts. On Ready, known landlines are refused up front and not charged. If you want to check numbers before they go into a flow, there's a number validation endpoint (GET /v1/validate/:phone, $0.003 for each number that gets an answer).

Cost: push is nearly free, SMS has a per-segment price

Push has no per-message fee from Apple or Google. Your costs are engineering time, plus a vendor subscription if you use one for segmentation and analytics. At high volume, push is the clear winner on marginal cost, and we won't pretend otherwise.

SMS is metered by segment. On Ready Standard, that's $0.0075 per segment plus a $0.0045 carrier fee, one flat rate. Replies you receive are billed the same way. That all-in figure excludes the optional compliance surcharges: scrubbing and landline validation each add $0.003 per segment when switched on for an account, and both are off by default.

Worked example: an SMS fallback for failed payments

Assume a SaaS product with 10,000 accounts that hit a failed card in a month. You send one text each:

"Your card ending 4242 was declined. Update it here to keep your account active: [link]"

That's under 160 plain characters, so it's 1 segment:

  • Ready rate: 10,000 × $0.0075 = $75
  • Carrier fees: 10,000 × $0.0045
  • Total: $75 plus 10,000 × $0.0045

Now add a single emoji to that text and make it 140 characters. The emoji drops the segment limit to 70 characters, so the text becomes 3 segments:

  • 10,000 × 3 = 30,000 segments
  • Ready rate: 30,000 × $0.0075 = $225, plus 30,000 × $0.0045 in carrier fees

The emoji tripled the bill. Push wouldn't charge you anything for that emoji. On SMS, character discipline is a cost lever. Ready swaps curly quotes, long dashes and ellipses for plain ones before sending, so those don't inflate the count, but an emoji still will. More on trimming this in how to reduce SMS costs.

Fixed costs SMS adds

To send at volume in the US you register a brand and a campaign under 10DLC. On Ready, there is no setup fee: the charge at submit is the first month, $25. After that, the monthly cost is $25/mo for registration + $2 per number. Most approvals take 2 to 7 days. If 10DLC is new to you, start with what 10DLC is.

Consent: an OS toggle vs carrier and TCPA rules

Consent works very differently on the two channels.

Push consent is a permission the operating system manages. The user taps Allow or Don't Allow, and can revoke it in settings. Apple and Google have content policies, but there's no carrier registration and no per-message legal exposure comparable to texting.

SMS consent has more layers:

  • Carrier registration. Unregistered A2P traffic gets filtered. Your campaign registration describes what you'll send and how people opt in.
  • TCPA. Marketing texts need prior express written consent, and violations are commonly cited at $500 to $1,500 per text. Transactional texts still need consent, just a lighter form.
  • Opt-out. STOP has to work, immediately and across every campaign.
  • Timing. Texting outside permitted local hours adds exposure.

What Ready handles for you: inbound STOP is honored and the opt-out applies across campaigns, sends outside quiet hours are held or refused based on the recipient's area, and known TCPA-litigator and DNC numbers can be scrubbed out before sending. An API send that sets consent_attested: true records the sender's attestation (who sent, to how many, when); a send without it goes out with a warning and records none.

That attestation is not a per-contact consent record. Your app has to keep the record of when each user opted in, what wording they saw and where. Compliance remains the sender's responsibility. These tools reduce risk; they don't make you immune.

Speed and timing

Push fans out to large audiences very quickly. SMS is throttled per campaign by the carriers. A fresh standard campaign without vetting often gets about 1 to 4 segments per second, and higher use-case tiers run roughly 10 to 75.

At an assumed 3 segments per second, those 10,000 one-segment failed-payment texts take about 10,000 ÷ 3 ≈ 3,333 seconds, or roughly 56 minutes. That's fine for a billing alert. It's a poor fit for "the live event starts now" sent to 100,000 people, which is a good argument for push.

Quiet hours also change timing. A push at 2 AM goes out at 2 AM. On Ready, a campaign or automation text sent during the recipient's quiet hours waits up to 24 hours for the window and is charged only when it sends; an API text waits only if the window opens within 6 hours, and is otherwise refused. If your audience spans time zones, the multi-timezone quiet-hours post covers the scheduling side.

When to use each

Use push for:

  • High-frequency engagement: streaks, new content, social activity
  • Low-stakes reminders where a miss costs little
  • Huge audiences where per-message cost would add up fast
  • Deep links into a specific screen of your app

Use SMS for:

  • Account-critical alerts: failed payments, security notices, overages
  • Appointments, deliveries and anything with a time and place
  • Users without the app, or who have uninstalled it or muted notifications
  • Conversations, where the person needs to reply and reach someone
  • Recovery messages to people who went quiet in the app

The common pattern is push first, SMS as fallback. Send the push. If the user hasn't acted within a window you choose, and the message matters, send a text. You pay for SMS only on the share push didn't cover.

On Ready, the SMS leg of that fallback is one request:

POST https://api.tryready.com/v1/messages
X-API-Key: <key>
Idempotency-Key: 3f1c2a9e-5b7d-4e21-9c0a-8d6f1b2e4a77
Content-Type: application/json

{"to": "+12125550199", "body": "Your card ending 4242 was declined. Update it to keep your account active.", "consent_attested": true}

The Idempotency-Key means a retry from your job queue won't text the user twice. See the messages docs, and the SaaS SMS API checklist if you're embedding texting for your own customers.

A note on iPhone users

If much of your audience is on iPhone, Ready's blue line sends as iMessage with your business name and photo, and it needs no 10DLC registration. It costs $99 a month per line, plus 6 cents a segment for each text sent. Each line can start up to 50 new conversations a day, so it suits one-to-one conversations, not bulk alerts. Campaigns still send from regular numbers. Details are in the blue line guide.

The practical takeaway

Push wins on cost and raw speed to an engaged, opted-in app audience. SMS wins on reach and on messages that have to be seen. Most products should keep the bulk of notifications on push and route a short list of critical messages to SMS, either directly or as a fallback when push goes unanswered.

To test the SMS side, sign up. Your first 20 one-to-one texts are free, so use them before you register. To send, you add a card and get a number, which is $2 a month with the first month charged when you get it.

FAQ

Are push notifications really free? Apple and Google don't charge per push. You still pay for building and maintaining the app integration, plus any push vendor you use for targeting and analytics.

Does Ready send push notifications? No. Ready sends SMS, MMS and iMessage (blue line). Use Apple's or Google's push services, or a push vendor, for push, and Ready for the text leg.

Do I need consent for SMS if users already allowed push? Yes. Push permission is not consent to text. SMS needs its own opt-in, which you record in your app, plus 10DLC registration and working STOP handling.

Can SMS fully replace push? It can, but at volume it gets expensive and slow by comparison. SMS is billed per segment and throttled per second. Most teams keep high-frequency nudges on push.

What does an SMS fallback cost on Ready? $0.0075 per segment plus a $0.0045 carrier fee, on the Standard rate. That excludes the optional $0.003 per-segment scrubbing and landline-validation surcharges, which are off by default. Registration is $25 at submit, then $25/mo for registration + $2 per number. Full rates are on the pricing page.