Skip to content
Growth · 8 min read

Switching web push providers: a practical migration plan

Web push subscriptions are tied to the keys of the service that created them. That shapes every migration. Here’s what you can move, what you can’t, and how to switch with minimal loss.

Updated By the Pusharoo team
In short
  • A subscription can only be sent to with the private VAPID key that created it.
  • If your old provider can export endpoints and keys, a direct import may be possible; most can’t or won’t.
  • Otherwise, returning visitors re-subscribe — often silently if permission was already granted on your domain.
  • Run both tools briefly, then remove the old worker so only one controls the page.

Why migrations are tricky

What owning a push list actually meansA push list is a set of browser endpoints bound to one VAPID key pair. Whoever holds the private key and the endpoint list can send. If either is lost, every subscriber must opt in again.📇Endpoint listone encrypted URL per browser+🔑VAPID key pairpublic key in the browser, private on the server=✅A list you can send tolose either → re-subscribe allWhat owning a push list actually meansA push list is a set of browser endpoints bound to one VAPID key pair. Whoever holds the private key and the endpoint list can send. If either is lost, every subscriber must opt in again.📇Endpoint listone encrypted URL per browser+🔑VAPID key pairpublic in browser · private on server=✅A list you can send tolose either → re-subscribe all
Exporting endpoints without the matching keys is not a portable list.

Each subscription is an endpoint URL plus encryption keys for one browser, bound to the sender’s VAPID public key. Without the matching private key, no other service can deliver to it (VAPID keys explained). Some vendors export subscriber CSVs; without keys, that file is analytics, not a sendable list.

Your options

ScenarioWhat happens
Old provider hands over endpoints, p256dh/auth keys and the VAPID key pairTechnically portable: a new sender can use the same keys. Rare in practice.
Old provider used your domain and your origin’s permissionPermission is already granted to your site. A new service worker can create a fresh subscription on the visitor’s next visit without asking again.
Old provider collected subscriptions on its own subdomainPermission belongs to that subdomain, not your site. Visitors must opt in again on your domain.

Step-by-step switch plan

  1. Audit which service worker files and scripts the old tool installed (often /sw.js or a vendor-named file).
  2. Install the new tool in parallel on a test page; confirm subscribe and send work (setup guide).
  3. Announce the change with a final message from the old tool inviting people to tap the new prompt.
  4. Swap the worker: replace the old worker with the new one at the same path, or merge them with importScripts, so only one worker controls each scope.
  5. Remove the old snippet and any “Powered by” or vendor subdomain references.
  6. Rebuild with good asks: contextual buttons and a polite prompt (ideas).
  7. Cancel the old plan once the new list is growing and the old one has had its farewell campaign.

What to expect afterwards

Your new list starts smaller but cleaner: it only contains browsers that are active now. Many old lists include long-dormant subscriptions, so the gap in reachable people is often smaller than the headline numbers suggest. With Pusharoo there is no per-subscriber bill, so the list can grow back as far as your traffic allows.

Notes for specific providers

Dated comparisons with migration notes: OneSignal, SendPulse, PushAlert (subdomain integrations can’t move), Gravitec, Aimtell, iZooto, PushEngage, Webpushr and PushOwl.

Tell subscribers what’s happening

A short final notification from the old service helps: “We’re updating our alerts — tap to keep getting them.” Link to a page with a subscribe button. Some subscribers will re-subscribe on their next visit anyway, as the new prompt appears; the message just speeds it up.

Switching to Pusharoo

  • Pusharoo’s sw.js lives on your domain, so permission belongs to your site.
  • Existing service worker? Add importScripts('https://pusharoo.com/sw.js') to it instead of registering a second one.
  • No limits and no paid tier, so there’s nothing to downgrade later.
  • Comparisons: OneSignal, PushEngage, Webpushr.

Questions

Can I export my push subscribers and import them elsewhere?

Only with the private VAPID key that created them. Without it, exported endpoints can’t be sent to by another service.

Will my subscribers see a new permission prompt?

If permission was granted to your own domain, a new subscription can usually be created on their next visit without a new browser dialog. If the old tool used its own subdomain, they must opt in again.

Can I run two push tools at once?

Briefly, on different pages or merged into one worker. Two service workers competing for the same scope cause conflicts.

Can I export subscribers from my old provider?

You can often export data, but browser subscriptions are tied to the old provider’s keys, so they usually can’t be sent from a new service. Plan for re-subscription.

What if both providers’ workers are live?

Only one worker controls a scope. Replace the old /sw.js with the new one; keep the old service sending until most of your audience has re-subscribed.

More in Growth: The push opt-in prompt, done right · Push notifications for online stores · Push notification click-through rate (CTR), explained · Push notification opt-in rate: measure it, then raise it · Push notification analytics that actually answer questions · Push notification deliverability: what really affects delivery · Win-back push notifications that bring people back · Push notifications vs. pop-ups · All guides

Free for life. No limits.

Unlimited subscribers, campaigns and automations. No badges. About five minutes to install.