The Ultimate Guide To Push Notifications For Developers

About The Author

Lee Munroe is Head of Design for OneSignal and creator of, based in San Francisco. More about Lee ↬

Email Newsletter

Weekly tips on front-end & UX.
Trusted by 176.000 folks.

Quick summary ↬ What are the benefits of using push notifications and what can you use them for? In this article, Lee Munroe explains how to implement them and which practices are best to follow.

I’ve spent the past several years building messaging tools — for more than three years now I’ve been leading the design team at OneSignal, a customer engagement platform that enables developers and marketers to send transactional and promotional messages via push, in-app, email and SMS. I’ve learned a lot about how messaging works including the pros and cons of using push to communicate with your audience. In this post, I’ll brain dump all of my knowledge on the topic.

Introduction To Push

Push notifications are clickable messages that pop up on your phone or desktop with some content. Typical types of push notifications include:

  • Promotional
    New blog post, new release, a Black Friday sale, etc.
  • Transactional
    New message received, a friend liked your comment, your driver is on their way, appointment reminders, etc.

Push notifications were originally introduced in 2009 by Apple with APNs (Apple Push Notification service). Google quickly followed for Android (which later became FCM) and in 2013 web push was introduced for Chrome.

Personalized promotional notification from Yelp
Personalized promotional notification from Yelp on iOS. (Large preview)
A screenshot of Flatlife listed from Product Hunt on Firefox macOS
New popular product listed from Product Hunt on Firefox macOS. (Large preview)
Breaking news alert from CNN on Android
Breaking news alert from CNN on Android. (Large preview)

Push is still a relatively new communication technology compared to its siblings. The first email was sent in 1971 (50 years ago!) and the first SMS was sent in 1992 (30 years ago!). Marketers and developers are still discovering where push fits into their communication stack, so while most companies have an email strategy for customer engagement, most don’t have a push strategy yet.

A picture of the first SMS
First SMS in December 1992. (Image credit: Wion) (Large preview)

Push is very similar to these other communication channels like email. You use them to engage with your customers. You can send promotional or transactional content. You need a way for people to opt-in and opt-out. You need to segment your audiences. You need to personalize your messages. You need to compose your message, send your message, view reporting for your message, and so on.

Why Use Push Notifications?

There are several benefits of push over other messaging channels:

  • Push typically sees higher engagement than email20% open rate vs 2%;
  • Push doesn’t require users to hand over any personal information like an email address or phone number;
  • Push is cheap to send (unlike SMS which is upwards of 2c per message);
  • Push is quick to send;
  • Push has a high opt-in rate (see more below).

What can you use push notifications for?

  • Abandoned cart
    Get users back to complete the checkout process.
  • Onboarding
    Welcome users to your app and get them up and running.
  • Announcements
    New features, updates, and upcoming events.
  • Offers
    Discounts and rewards.
  • Rewards & delight
    Make users feel good with rewarding progress in a game.
  • Live updates
    News, scores, order status.
More after jump! Continue reading below ↓

How To Implement Push Notifications

You can build your own push service on top of the different APIs and operating system platforms available. iOS has APNs. Google has FCM. Web browsers use Service Workers, Notification API and the Push API. When building your own you need to consider the push service, managing subscribers, permission prompts, message composition, delivery and reporting.

Beginners guide to web push notifications using service workers
  • Pusher,
  • Braze.
  • Aren’t Push Notifications Annoying?

    They absolutely can be, yes. Just like sending irrelevant emails or too many text messages is annoying and spam. This is not a fault of the technology itself, but we as website owners and app developers abusing their power.

    For example, a lot of websites or apps immediately prompt users to subscribe to push. This is just as frustrating as a blog you land on immediately surfacing a pop-up asking you to subscribe to their email newsletter. At this point, you have no idea what they do or if there’s value in subscribing.

    An example of a website which immediately prompts users to subscribe to push and to their email newsletter
    Most websites in 2022. (Large preview)
    An example of native prompt on macOS Chrome
    An example of native prompt on macOS Chrome. (Large preview)

    Don’t do this. Treat your app users and website visitors with respect. In fact, browsers have started clamping down on websites that do this, and instead hide the prompt until the user notices it and clicks on it.

    Example of prompt blocked on macOS Chrome
    Example of prompt blocked on macOS Chrome. (Large preview)

    Prompting Best Practices

    Permission opt-ins differ across operating systems and industries:

    • iOS
      Users must explicitly opt-in for push when they download your app, the average opt-in rate ranges 35–45%.
    • Android
      Users are automatically opted in to receive push notifications, the average opt-in rate ranges 35–45%.
    • Web push
      Users must explicitly opt-in for push when they visit your website, the average opt-in rate ranges 7–17%.

    Only prompt users to subscribe after they have had an opportunity to find value e.g. after at least 1 pageview, or after they have taken an action where it would be useful for them to know when there’s an update.

    Soft prompts for Washington Post, Amazon Kindle, Twitter
    Soft prompts for , Twitter. (Large preview)

    Use soft prompts. You only have one opportunity to ask users with the native prompt, after which it is painful to ask them to go into settings and allow you to send them messages. Use your one opportunity wisely.

    Example of soft prompt from Slack that triggers the browser native prompt
    Example of soft prompt from Slack that triggers the browser native prompt. (Large preview)

    Prompting Mistakes

    “Push notifications became yet another way to artificially re-engage users and force content down their throat. That’s why so many of them hate it. But there are some interesting use cases for it.”

    The Ultimate Guide to Not F#!@ing Up Push Notifications, Stéphanie Walter

    Asking For Permission Immediately

    A screenshot where ‘app’ asks to send notifications
    Asking to send notifications right away. No, thank you. (Large preview)

    Don’t do this. Allow users to experience your app or website first and the value you provide. Delay your prompt at least a pageview or by some time so users have an opportunity to look around. Or wait until the user is taking action and then present them with an option to subscribe.

    Not Telling Users What Notifications Will Contain

    Make users aware of the value of your push notifications. Will they notify me of new sales and promotions? When someone sends me a message? When there’s a new blog post? Make it clear so users can decide if these are the types of messages they want to receive.

    Don’t Make It Hard To Opt-out

    Allow users to edit their notification preferences within the app. Just like an email preference center, users may want to unsubscribe from all notifications or a certain category of notification e.g. stop sending me every blog update but do send me new feature announcements.

    Don’t Send Too Many Notifications

    Set expectations upfront on how often you expect to send notifications. Then stick to that. Depending on what industry you’re in this could be many per day e.g. breaking news alerts, or once a week e.g. meditation app.

    NYTimes allows users to customize their notification preferences
    NYTimes allows users to customize their notification preferences. (Large preview)

    Where Are Push Notifications Supported?


    • ✅ iOS native apps,
    • ✅ Android native apps,
    • ✅ macOS Chrome/Firefox/Safari,
    • ✅ Windows Chrome/Firefox/Edge,
    • ✅ Android Chrome/web browsers,
    • ✅ macOS native apps,
    • ✅ Windows native apps.

    Not supported

    • 🚫 Safari on iOS does not support notifications.
    • 🚫 All other iOS browsers like Chrome and Firefox for iOS do not support notifications.
    • 🚫 Push notifications do not work in incognito or private browser mode.

    See the state of push notification support for a more detailed and up-to-date look at all devices like watchOS, Amazon Echo, TVs and others.

    Anatomy Of A Web Push Notification

    The anatomy and design of push notifications change across operating systems and browsers. For the most part, the key elements are:

    • title,
    • message,
    • icon,
    • image.

    Here are examples for the main operating systems and browsers:

    Web Push, Chrome For macOS Monterey

    A screenshot of web push, Chrome for macOS Monterey
    (Large preview)
    1. Browser Icon
      Chrome icon. This can’t be changed.
    2. Title
      Restricted to 60-80 characters.
    3. Domain
      Website user is subscribed to. Can’t be changed.
    4. Icon
      192×192 or larger. PNG, JPG, GIF (not animated). Enlarges when expanded.
    5. Content
      Restricted to 120-150 characters.
    6. Action Buttons
      Supports up to 2 buttons.

    Web Push, Chrome For Windows 11

    A screenshot of web push, Chrome for Windows 11
    (Large preview)
    1. Banner Image
      360×180 or 2:1 aspect ratio. PNG, JPG, GIF (not animated).
    2. Browser + Browser Icon
      Can’t be changed.
    3. Icon
      192×192 or larger. PNG, JPG, GIF (not animated).
    4. Action Buttons
      Supports up to 2 buttons.
    5. More Options
      Includes notification settings and focus assist.
    6. Dismiss
      Closes the notification.
    7. Title
      Restricted to 60 characters.
    8. Content
      Restricted to 120 characters.
    9. Domain
      Website user is subscribed to. Can’t be changed.

    Mobile Push For Android 12

    A screenshot of mobile push for Android 12
    (Large preview)
    1. Small Icon
      24×24 - 96×96 to fit all device sizes. Must be white with a transparent background. PNG.
    2. Title
      Restricted to 50 characters.
    3. Body
      Restricted to 150 characters.
    4. Large Picture
      1440×720 or 2:1 aspect ratio. PNG, JPG, GIF (not animated).
    5. App Name
      Can’t be changed.
    6. Time Stamp
      Time message received.
    7. Icon
      192×192 or larger. PNG, JPG, GIF (not animated).
    8. Action Buttons
      Supports up to 3 buttons.

    Mobile Push For iOS 15

    A screenshot of mobile push for iOS 15
    (Large preview)
    1. App Icon
      Uses the app’s default icon and can’t be changed.
    2. Rich Media
      1024×1024 or 1:1 aspect ratio. PNG, JPG, GIF, MP4, MP3, WAV.
    3. Title
      Restricted to 25-50 characters.
    4. Time Stamp
      When the message was received.
    5. Message
      Restricted to 150 characters.
    6. Action Buttons
      Supports up to 4 buttons.

    Note: For more examples across each device and operating system, see push notification anatomy.

    Sending Best Practices

    Don’t just carelessly blast push notifications to all your subscribers. Consider who your users are, their context, and the value they will get from your content and service.

    A screenshot of a promotional notification with emoji and photo from Joe Coffee
    Promotional notification with emoji and photo from Joe Coffee. (Large preview)
    Concise transactional notification from PayPal
    Concise transactional notification from PayPal. (Large preview)
    • Messages should be timely, relevant, and precise.
    • Use emojis, they tend to help CTR.
    • Make sure your content is valuable.
    • Personalize, use the subscriber’s name or something relevant to them.
    • Use urgency and fomo to help increase CTRs on things like sales.
    • A/B test to see what content and images perform better.
    • Segment based on user behavior or preferences e.g. geographic location, level of engagement.
    • Schedule per user’s timezone, make sure they don’t receive messages in the middle of the night.
    • Keep the content short and concise, and get to the point.

    Analytics and ROI

    Numbers you want to keep an eye on:

    • Opt-in rate
      Percentage of users or visitors that are opting in to push, adjust your message, or when you are promoting to improve this.
    • Deliverability
      How many messages actually got delivered to user devices.
    • Open rate
      The number of messages that were clicked divided by the messages sent.
    • Outcome/goal/conversion
      What was the end goal, e.g. a purchase or plan upgrade? Opt-in rates and open rates are often considered vanity metrics, what you really care about is did they produce an outcome.

    For web push, use UTMs to help track attribution. For mobile push, services like AppsFlyer and Branch can help with attribution tracking.

    Why Am I or My Users Not Receiving Push Notifications?

    Here are some of the most common reasons I’ve seen.

    Users Haven’t Subscribed To Your App

    Ask them to subscribe. Check that they are subscribed. Look up their user’s ID you’ve defined or push token.

    Users Have Turned Off Notifications For Your App Or Website

    Ask users to check their app settings or browser settings and ensure they haven’t blocked you.

    A screenshot where notifications from AliExpress are on
    (Large preview)
    A screenshot of Chrome settings where notifications are on
    (Large preview)

    Users Have Turned Off Notifications For The Browser They Are Using

    Or they never gave it (the browser) permission in the first place. Operating systems will ask users permission to send notifications via their browsers, and often users will ignore these. Ask them to check their app level notification settings in their OS.

    A screenshot where notifications for Firefox are turned on
    (Large preview)

    Users Have Turned Off Notifications For The OS They Are Using

    Some users will turn off all notifications for their OS, intentionally or accidentally. Check their OS settings for notifications. For example, Settings > Notifications > Show Previews > Never will turn off all iOS notifications.

    A screenshot with settings 'show previews when unlocked'
    (Large preview)

    Check settings at your OS level, browser level, and app level to ensure notifications are turned on and you or they have opted in.

    The Future of Push Notifications

    iOS Support For Web Push

    Web push for iOS Safari has been in high demand for years and recently it looks like they might be ready to give in with a recent update to WebKit. This will be huge if Apple has decided to finally enable this.

    A screenshot with Experimental WebKit Features
    (Large preview)

    Android Opt-In

    Starting with Android 13, users will have to opt-in to receive notifications. There is likely no meaningful long-term effect on opt-in rates, but it will improve the overall ecosystem by giving users control up-front, rather than having to opt-out later.

    Android opt-in
    (Large preview)

    Omnichannel Messaging

    Omnichannel and more integration alongside other messaging channels. Every user has a preference for how they receive messages, and it is important to consider this when personalizing that customer journey with push, email, SMS.

    A graph of omnichannel messaging
    (Large preview)

    In 2022 it’s even more important to consider your user’s behavior across all these channels, ensuring you automate your messaging and extend your reach across all channels.

    Preventing Abuse

    Browsers and operating systems are working hard to prevent abuse e.g. making sure websites don’t show prompts immediately to visitors. As mentioned previously, some updates have already been shipped here recently with Chrome, Firefox and Edge to hide prompts on websites that are immediately prompting on page load, and there is sure to be more to follow.

    Firefox hides the native prompt behind a wiggling speech bubble.


    If you run a website or app today and you’re not sending push notifications, you should add it. If you’re already sending email, SMS or in-app, you should add push to your stack. As long as you make sure the content is valuable and follow the best practices above, it’s an opportunity for you to re-engage and your users will be grateful.

    Useful Resources

    slots empire bonus codes
 Editorial (vf, yk, il)