Why some web push notifications are not delivered to the browser? Why some notifications are not displayed to the user?
A notification that is successfully delivered to the browser push service, may not reach the end user for various reasons:
- the recipient device is turned off
- the recipient device has no internet connection
- the recipient device has airplane mode enabled
- the recipient device has power saving mode enabled
- the recipient device has the “Do not disturb” setting turned on and this prevents all the notifications from being displayed
- the browser is closed (some browsers, mainly desktop browsers, need to be open in order to receive push notifications)
- the browser process that runs in background and is responsible for downloading the notifications may be killed for power saving; this happens mainly on mobile devices from Chinese OEM
- the browser (e.g. Chrome) has no permission to display the notifications (i.e. the website is authorized by the browser to display the notifications, but the browser itself is not allowed by the OS to display the notifications, because it lacks the right permission in the system preferences)
- the browser has not the right permissions to download data from the internet when the screen is locked (in that case the notification may be lost)
- adblockers or similar software may create issues and block the notifications (even if they are not ads)
- unreliable connections, firewalls or other network settings may interfere with the delivery of notifications
- the user unsubscribed from browser preferences, but the browser push service wasn’t notified about that and thinks that the subscription is still valid
- the user doesn’t use a given browser or device anymore (the browser push service should remove that subscription after some months of inactivity)
- the browser push service (Mozilla autopush for Firefox, FCM for Chrome, etc.) crashes and loses some notifications
- some browser versions may have serious bugs (example) that prevent the delivery of the notifications under some circumstances
- the browser receives the signal, but the internet connection is lost when it tries to download the notifications (e.g. from the application server)
- a notification expires because of its TTL before it can reach the recipient device; setting called Time To Live (TTL) can affect the delivery rate: make sure to set the TTL to a large value (e.g. 2419200), otherwise a notification will be dropped on purpose if it can’t reach a device within that time period
- some old subscriptions associated to devices or browsers that aren’t used anymore are not properly removed by the browser push service (e.g. FCM); in this case when you send a notification to that subscription, the browser push service keeps reporting that the subscription is valid, instead of reporting it as expired, but the notification won’t be delivered; check out this article for more information.
All the above reasons explain why some push notifications are delivered to the browser push service (i.e. the notification is “Successfully sent”), but then the notification is not displayed to the end user. If you have other problems with notifications, please see the troubleshooting guide. Also note that Pushpad can automatically manage and report many kind of exceptions returned by the push service of the browser (e.g. expired or invalid subscriptions, temporary errors, etc.): see monitoring for more information. You can also debug a specific device / browser if you have physical access to it.