Articles › Push Subscriptions, Web Push Notifications

Google is removing the inactive and unreachable push subscriptions

  • # deliverability
  • # push-api

Have you noticed an increase in the number of invalid subscriptions that return 404 when you send a notification? That can be related to a recent change in the Chrome push service.

This change, made by Google in June 2024, aims to reduce the number of stale subscriptions that apparently accept the notifications, but actually never receive them. For example, if a device is no longer used, the Chrome push service doesn't know that and keeps accepting the notifications. However those notifications are never downloaded or seen by the end user.

Pushpad described this issue a long time ago and suggested some mitigation strategies in the past: for example you could use tags to track the active users or purge the subscriptions based on the last_click_at field.

After this change in the Chrome push service the purging of older subscriptions that are inactive will happen automatically and in a more reliable way.

The subscriptions that do not connect to the Chrome push service (https://fcm.googleapis.com) to download the new notifications for more than 9 months, will be considered expired and will be removed. When you try to reach them with a notification you get a 404, indicating that the subscription became invalid:

404 Not Found
A valid push subscription endpoint should be specified in the URL as such: https://fcm.googleapis.com/wp/dHIoDxE7Hdg:APA91bH1Zj0kNa...

Pushpad removes this kind of subscriptions automatically (you can see them in Subscriptions -> Trash).

This change should not impact the total number of clicks or the total views of your notifications. It's simply a change that removes the stale, unreachable subscriptions.

Here's an explanation of this change directly from a Google employee:

Undeliverable notifications due to stale registrations now return a 404 back to the sender rather than failing silently. This does not change the deliverability of valid notifications, it's just that the sender is now notified when sending has failed. This change allows senders to prune stale and unreachable clients from their lists, so overall it should decrease wasted CPU/bandwidth from sender systems trying to send undeliverable notifications and increase confidence in deliverability by providing notice of undeliverable notifications. [...] Recommended course of action is to remove subscriptions from your send lists for which you're getting a 404.

And another developer confirmed:

This is an intended change where the stale tokens for devices, which have not been connected to FCM in over 270 days, will be considered as expired and invalid. If a request is sent to an invalid token, it will be rejected with a 404 error. Messages sent to these tokens previously were accepted and then never delivered (because the target devices are inactive), FCM now responds with a 404 instead. We have verified that we have seen no change in our delivery rates over the last week, despite the increase in 404s returned.

Basically this change should not have any practical effect on conversions, it just increases the number of 404 responses to purge the inactive subscriptions and save resources. As a side effect you should also see an increase in the click rates (while the absolute number of clicks will remain unchanged).