I'm working on progressive web app, and I want to implement analytics for Push notifications.
How can I add analytics for push notifications so that I'll be able to track and record how many people clicked on notification and how many people close that notification without clicking on it.
I've written a small chunk of code to use Google analytics for analytics and it works fairly well.
Dumped notes here: https://gauntface.com/blog/2016/05/01/push-debugging-analytics
The way I've done this is the post mentioned above:
In the service worker I import a javascript file that does the tracking for me, set the analytics ID and then in the appropriate events call the tracking. Look for
self.analytics.trackEvent
:The code to do the actual tracking calls to Google Analytics Measurements Protocol is shown below. The API is painfully simplistic, so the payloadData are the attributes analytics expects and I generate a string of these parameters in the format the API expects, filtering out empty / null values:
You can find all of this on: https://github.com/gauntface/simple-push-demo
At Pushpad the notification url is a redirect page that tracks the opening and then redirects to the target url.
For example if the target url is
http://example.com/target
your notification url that is opened on click should behttp://example.com/redirect?url=/target
.At the moment there is no way to track when the notification is dismissed.
Update (June 2016): others have pointed out that in the specs there's a
notificationclose
event. However I haven't tested browser support (currently this event is not listed on MDN for example). Beside that I fear that this event can also be triggered when the user clicks the notification (since the notification gets closed) - the spec is not clear about that.An option, that I'm using in my WordPress web-push plugin, is to add a query argument to the URLs opened via notifications (see this code). This way, you can know how many times people click on notifications.
About the number of people that close notifications, it's unfortunately not possible to know. There's a
notificationclose
event, but it is only triggered for persistent notifications.