Data, consent, and removal
See what data web push collects when a browser subscribes, who is responsible for consent, how people opt out, and how to turn web push off or remove it from your website.
This page tells you what web push collects, where consent comes from, and how to undo each part of setting up web push.
What web push collects
Web push adds data from three places: your JavaScript source, the web push plugin, and the service worker.
The JavaScript source. The plugin works with the JavaScript source you already use, so the source’s usual data applies. That includes the page and identify calls your site sends, and the location that Customer.io derives from the IP address of those requests, which can appear on the person’s profile. Web push doesn’t change that.
The web push plugin. When a visitor allows notifications and your site has identified them, the plugin adds a web device to their profile with a Device Created or Updated event. The device has these fields:
| Field | What it is |
|---|---|
| Device token | The browser’s push endpoint, an https:// address that the browser’s push service issues. |
webpush_p256dh and webpush_auth | The subscription’s encryption keys. Customer.io uses them to encrypt each notification for that browser. The product hides them. |
webpush_expiration_time | When the browser’s push service says the subscription expires, if it gives one. |
user_agent | The browser’s user agent string, from navigator.. |
browser, browser_version, and os | The browser’s name, its major version, and its operating system, read from the browser. They’re deliberately coarse: no device model or full version. |
origin | The website the browser subscribed on, like https://www.. The product shows it as Site. |
Loading the plugin never asks for permission or registers a new service worker. If the browser has no subscription, loading creates no device. If the browser is already subscribed and the person is identified, the plugin can add or update that browser’s device when the page loads or when you call identify, without another prompt. If a visitor subscribes before you identify them, Customer.io doesn’t add the device until you call identify. See ask for permission in a click.
The service worker. When the service worker shows a notification, it reports a delivered metric to your trackUrl. When someone clicks the notification, it reports an opened metric, and includes the button’s identifier if they clicked a button. Each report carries the delivery and device identifiers from the notification, and nothing about the visitor’s activity on your site. If a report fails, the service worker keeps it in the browser’s storage and sends it again later. See set up the plugin for trackUrl.
Consent
The permission prompt belongs to the browser. It reads like “your-site.com wants to Show notifications,” with Block and Allow. Customer.io doesn’t change the wording and doesn’t show a prompt of its own. In the setup example, the browser asks after the visitor clicks your button. The plugin doesn’t check for a click, so call subscribe() only from an intentional user action, like that button. A subscription only exists if they choose Allow.
You are responsible for the consent that your audience gives, and for the privacy notice and legal basis that your own policies and local laws require. Customer.io doesn’t decide that for you, and this page isn’t legal advice. For background on how Customer.io handles personal data, see Customer.io, GDPR, and you.
Before you ask, explain in your own words what people get, like Turn on booking alerts, and show the button only to signed-in visitors.
Opt out and unsubscribe
People can stop web push in these ways:
- In your page. Call
cioanalytics.webPush.unsubscribe()from a button, like the one in step 4 of setup. It unsubscribes the browser and removes the web device from the person’s profile. - In the browser. The visitor can block notifications for your site in their browser’s settings. See notifications are blocked.
- In the subscription center. Web push follows the same global unsubscribe and topic preferences as other push notifications. If your subscription center has a Web browsers channel, a Web Push action respects that channel, and every other push action respects the Push channel. A person can opt out of Web browsers without opting out of push to their phones, and the other way around. Without a Web browsers channel, the Push channel decides for web push as well. The channel only applies while web push is turned on for your account.
Undo web push
Pick the scope that matches what you want to undo.
| To… | Do this | What happens |
|---|---|---|
| Turn web push off for your workspace | Go to Settings > Push > Web and click Disable…. | Customer.io deletes your web push keys. Existing subscriptions stop working, and active Web Push messages fail until you generate new keys and your subscribers visit your site and subscribe again. |
| Delete one device | Open the person’s profile, go to Devices, select the web device, and delete it. | Customer.io stops sending to that device. The browser itself stays subscribed with its push service until the browser or your site unsubscribes it, and the plugin can add the device back the next time the person visits your site identified, for example after they clear site data, sign in as someone else, or update their browser. To stop for good, unsubscribe the browser in code, as in the next row. |
| Unsubscribe a person in code | Call cioanalytics. in the person’s browser. | The browser unsubscribes and the device leaves the person’s profile. The service worker stays registered, and the person’s notification permission stays as it was. |
| Remove web push from your website | Remove the plugin from your page, then unregister the service worker (below). | Removing the snippet alone doesn’t unsubscribe visitors or remove the service worker. |
Remove web push from your website
The service worker and the browser’s subscription live in each visitor’s browser, so deleting the snippet and the cio-webpush-sw.js file from your server doesn’t remove them from browsers that already subscribed. To remove web push cleanly:
-
Before you remove the plugin, have signed-in visitors’ browsers run
cioanalytics.webPush.unsubscribe()if you can, for example from a button or a script that runs once for each visitor. This removes each browser’s device from its person’s profile. -
Remove the web push plugin from your pages, then the
cio-webpush-sw.jsfile from your website. -
Unregister the Customer.io service worker in each browser. Run this on your site, in the page’s JavaScript console or in a script that you ship:
JAVASCRIPT(async () => { const registrations = await navigator.serviceWorker.getRegistrations(); for (const registration of registrations) { // Match your `serviceWorkerUrl`, which defaults to /cio-webpush-sw.js. const worker = registration.active || registration.waiting || registration.installing; if (worker && new URL(worker.scriptURL).pathname.endsWith('cio-webpush-sw.js')) { await registration.unregister(); } } })();If you use a different filename, match that path instead. If you import our worker into your own, unregister only if you also want to remove your worker.
-
If you turned off web push for the whole workspace, click Disable… under Settings > Push > Web.
A visitor’s notification permission stays as Allow in their browser until they change it or clear the site’s data; unregistering the service worker doesn’t change it. Without a service worker and a device on a profile, Customer.io can’t send them notifications.
When a send doesn’t arrive after someone blocks notifications
When a visitor blocks notifications after they subscribed, the browser deactivates their push subscription, as the Push API permission section describes. Until the browser’s push service drops the subscription, a send to that browser can show Sent and never show Delivered, because the browser doesn’t show the notification and the service worker never reports it. That state doesn’t last. When the push service drops the subscription, the next send fails with WEBPUSH_UNREGISTERED and Customer.io removes the device from the person’s profile. See failure reasons.
Allowing notifications again doesn’t bring the device back. The person needs to subscribe again on your site, so ask them to allow notifications and click your button again. See troubleshooting.