Skip to content

Push Notification

An alert an app sends to a phone through the operating system's push service, reaching only people who installed it and allowed notifications.

Also called: Mobile push notification · App push · Push message · APNs notification · FCM notification

Reviewed

Interactive lab

Hands on: use the controls to explore. Anything that plays on its own pauses while you are working inside it.

Follow a push from device token to lock screen

7 / 7
Your appinstalled, allowed
APNs / FCMOS push service
Your servertoken store
Lock screenalert shown
WhatsApp / SMSby phone number
  • Your app to APNs / FCM: register
  • APNs / FCM to Your app: token
  • Your app to Your server: save token
  • Your server to APNs / FCM: send
  • APNs / FCM to Lock screen: deliver
  • Lock screen to Your app: tap
  • Your server to WhatsApp / SMS: no ack

Hop 7 of 7

Your serverWhatsApp / SMSno ack

Arrives at WhatsApp / SMS — by phone number.

The app registers for a token, your server sends through APNs or FCM, and the alert lands on the lock screen. The last hop shows the fallback for users push cannot reach.

Hop 7 of 7: Your server to WhatsApp / SMS — no ack.

01What is a push notification?

A push notification is a message an app's server sends to a user's device through the operating system's push service — the Apple Push Notification service (APNs) for iPhone and iPad, and Firebase Cloud Messaging (FCM) for Android — which shows it on the lock screen or in the notification shade even when the app is closed. Your server never talks to the phone directly: it hands the message to APNs or FCM, addressed to a device token, and the platform delivers it over its own always-on connection to the device.

Two conditions decide reach. The person must have your app installed, and they must have allowed notifications: iOS has always asked for permission, and Android has done the same since Android 13 added the POST_NOTIFICATIONS runtime permission. Tokens also change or die when someone reinstalls the app, restores a phone or uninstalls, so a push audience is always smaller and less stable than a list of phone numbers.

Sending is free — neither Apple nor Google charges per notification — but delivery is best-effort, with no guarantee of timing and no delivery receipt unless your app reports one back. That is the opposite trade-off to WhatsApp or SMS (Short Message Service), which are addressed to a phone number, reach people without your app, and cost money per message. In an omnichannel orchestration plan, push usually comes first for app users, with a fallback channel behind it for everyone push cannot reach.

Key takeaways

  • A push notification is an alert your server sends through Apple's APNs or Google's FCM to an app installed on a phone.
  • It is addressed to a device token for one app install, not to a phone number, so it reaches only installed, opted-in users.
  • Apple and Google charge nothing per notification, which makes push the cheapest channel for alerts to active app users.
  • Delivery is best-effort: battery savers, revoked permissions and dead tokens drop messages without telling the user.
  • Use push first and fall back to a WhatsApp utility template or SMS when an alert matters and the app does not confirm it.

02 · How it works, step by step

How does a push notification work?

  1. Step 1

    The app gets a device token

    On launch, the app registers with APNs (through iOS) or FCM (through the Firebase SDK) and receives a device token — an opaque string that identifies this install of this app on this device.

  2. Step 2

    The user grants permission

    The app asks to show notifications: always on iOS, and on Android 13 or later through POST_NOTIFICATIONS. Without permission a token can still receive background data messages, but nothing is shown to the user.

  3. Step 3

    Your server stores the token

    The app sends the token to your backend, linked to the user and platform. Replace it whenever the SDK reports a new one, and keep one row per device, not per user.

  4. Step 4

    Your server sends through APNs or FCM

    Post the payload — title, body and a data field such as a deep link — to the FCM HTTP v1 API with an OAuth 2.0 token, or to the APNs HTTP/2 API with a JWT signed by your .p8 key. Standard payloads are capped at 4 KB.

  5. Step 5

    Handle errors and fall back

    Delete tokens the service reports as dead (FCM UNREGISTERED, APNs 410 Unregistered). For alerts that matter, start a timer and send a WhatsApp or SMS message if the app has not confirmed the notification was received or opened.

03A push notification in code

curl -X POST "https://fcm.googleapis.com/v1/projects/{PROJECT_ID}/messages:send" \
-H "Authorization: Bearer {OAUTH2_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"message": {
"token": "{DEVICE_TOKEN}",
"notification": {
"title": "Your order is out for delivery",
"body": "Arriving by 6 pm. Tap to track it live."
},
"data": { "order_id": "OD-48213", "deep_link": "app://orders/OD-48213" },
"android": { "priority": "high", "ttl": "3600s" },
"apns": { "headers": { "apns-priority": "10" } }
}
}'
# 200 OK -> {"name": "projects/{PROJECT_ID}/messages/0:1760870000000000%a1b2c3"}
# 404 UNREGISTERED -> the token is dead: delete it and use another channel

One request reaches Android and, through FCM's APNs bridge, iOS. A short ttl stops a stale delivery alert arriving hours late.

04A push notification: key facts and limits

Push services
APNs (Apple) and FCM (Android, cross-platform)
Cost per send
None charged by Apple or Google
Addressed to
A device token per app install, not a phone number
Payload limit
4 KB (4,096 bytes) for standard notifications
Android permission
POST_NOTIFICATIONS since Android 13
Dead token signal
FCM 404 UNREGISTERED · APNs 410 Unregistered
Offline devices
Held until ttl expires (FCM default and maximum: 4 weeks)

05Why does a push notification matter?

Push is the zero-cost first choice for alerts to people already in your app — a ride arriving, a payment received, an order out for delivery — and every alert moved to push is a utility template or SMS you do not pay for. But it reaches only installed, opted-in devices and fails silently for everyone else. Treating push as the first step of a chain, with WhatsApp, RCS Business Messaging or SMS behind it, keeps cost low without losing the customers who never open the app.

06 · Common mistakes, and the fix

Common mistakes with a push notification

  • Treating push as guaranteed delivery

    Aggressive battery savers on some Android phones, Do Not Disturb, revoked permissions and offline devices all swallow notifications without an error. For OTPs or payment-critical alerts, never rely on push alone: set a timer and fall back to WhatsApp or SMS.

  • Keeping dead tokens

    Sending to uninstalled apps wastes requests and inflates your 'reachable' audience. Delete tokens on UNREGISTERED or 410 responses, and refresh tokens the SDK rotates.

  • Asking for permission on first launch

    A cold permission prompt is easy to deny, and on iOS a denial can only be reversed in Settings. Ask at the moment the value is obvious — after the first order, before a delivery — and explain what you will send.

  • Putting sensitive data on the lock screen

    Notifications are visible to anyone holding the phone. Keep account balances, OTPs and health details inside the app, and send a prompt to open it instead.

  • Using push as a blast channel

    Frequent promotional pushes drive people to switch notifications off or uninstall, which removes them from transactional alerts too. Cap promotional frequency and measure opt-out after every campaign.

07Example: Delivery alerts for a Kochi grocery app

A grocery app in Kochi sends "Your order is out for delivery" as a push notification to every customer with a valid token and notifications allowed. Customers without the app, with notifications off, or whose device does not confirm receipt within five minutes get a WhatsApp utility template instead, and SMS is the last resort for numbers without WhatsApp. Because utility templates in India have been charged at ₹0.19 — including inside an open service window since 1 October 2026 — every alert push delivers is a template the store does not pay for. The team watches two numbers each week: the share of orders covered by push, and how many alerts fell through to paid channels.

08 · Tips from the bench

Best practices for a push notification

  • Include a deep link in the data payload so a tap opens the exact screen, not the home page.
  • Use collapse keys (apns-collapse-id, FCM collapse_key) for updates that replace each other, such as an ETA.
  • Track open rate per notification type and retire the types nobody taps.
  • Escalate critical alerts: push first, then a WhatsApp utility template if the app has not confirmed receipt in a few minutes.

09Push Notification FAQs

Are push notifications free to send?+
Yes, Apple and Google charge nothing per notification. Your costs are building and running the app, the backend that stores tokens, and the WhatsApp or SMS messages you send to the users push cannot reach.
What is the difference between a push notification and an SMS?+
A push notification goes to an installed app through APNs or FCM and costs nothing per send; an SMS goes to a phone number through the carrier. SMS reaches any phone without an app or data, but is paid per message and carries plain text only.
Can push notifications replace WhatsApp messages?+
Only for users who have your app installed and notifications allowed. WhatsApp reaches people by phone number whether or not they use your app, supports replies in the same thread and gives delivery and read statuses, so most businesses use push first and WhatsApp as the fallback.
Why are my push notifications not arriving on some Android phones?+
Usually a battery optimiser, a revoked notification permission or a dead token. Check the send response for UNREGISTERED errors, ask users to exempt the app from battery optimisation, and keep a WhatsApp or SMS fallback for alerts that must arrive.
How long does FCM keep a message for an offline phone?+
Up to four weeks by default, which is also the maximum. Set a shorter ttl for time-sensitive alerts so a delivery update does not appear hours after the parcel arrived.

See InfiQ pricing

* Per-message rates for India, ex-GST: marketing, utility and authentication effective 1 July 2026; service messages ₹0.145 since 1 October 2026 (they were ₹0 until 30 September 2026). Volume commitments earn discounts — final rate is confirmed on your account; applicable GST extra. Rates for other countries differ (see the international rate table on /pricing).

From definition to your first message

InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.