Many website owners and digital marketing teams want to switch from expensive legacy providers like OneSignal, Webpushr, or PushEngage to LumaPush to save up to 80% on software fees, but worry about losing their existing subscriber database. The good news is that because web push is built on open W3C web standards, you can migrate 100% of your existing subscribers with zero subscriber churn or downtime.
In this comprehensive guide, we walk you through exporting your VAPID cryptographic keys and subscriber tokens from your legacy provider and importing them seamlessly into LumaPush.
Prerequisites for Zero-Churn Migration
- VAPID Keypair Ownership: You will need the public and private VAPID keys from your current provider's dashboard.
- Subscriber CSV Export: Export your active subscriber tokens from your current push service.
- Replace Service Worker: Update the service worker file on your domain to point to LumaPush.
Step-by-Step Migration Process
- Retrieve Your Existing VAPID Keys: In your OneSignal or Webpushr dashboard, navigate to Settings → Keys & IDs. Copy your Public Key and Private Key.
- Input Keys into LumaPush: In your LumaPush dashboard, select your site, go to Settings → VAPID Configuration, choose "Custom VAPID Keys", and paste your keys.
- Import Your Subscriber CSV: Go to Subscribers → Import and upload your subscriber token list. LumaPush will automatically validate and activate all tokens.
- Update Your Website SDK: Replace the old provider's JavaScript snippet and service worker with the LumaPush SDK.
Why Zero Churn Is Guaranteed by W3C Standards
Browser push permissions are tied directly to your domain name and your cryptographic VAPID keypair. Because the browser client encrypts payloads using your VAPID public key, replacing the backend delivery platform has zero impact on the subscriber's browser permission state.
| Migration Step | Action Required | Subscriber Impact |
|---|---|---|
| 1. Export VAPID Keys | Copy public/private keys from old vendor | Zero impact (No prompts) |
| 2. Import to LumaPush | Paste keys & upload CSV tokens | Zero impact (Tokens synced) |
| 3. Update SDK Script | Upload lumapush-sw.js to web root |
Immediate continuation of alerts |
Review the cryptography behind VAPID keys in our Web Push Architecture Guide and explore our flat pricing tiers on our pricing page.
Post-Migration Verification & Testing Checklist
After uploading your subscriber list and updating your site's service worker file, complete these 3 verification tests:
- Send a Test Broadcast to a Test Segment: Tag your internal devices with
admin_testand broadcast a test message to confirm instant delivery. - Verify Inbound Opt-Ins: Open an incognito browser window, visit your website, and click "Allow" on the opt-in prompt to verify that new subscribers register smoothly in LumaPush.
- Check Delivery Analytics: Review the LumaPush analytics dashboard to monitor delivery success rates, clicks, and device breakdowns.
Exporting Data from Legacy Providers
Here is where to locate your export settings across common push platforms:
- OneSignal: Go to Audience → Subscriptions, click Export CSV. For VAPID keys, navigate to Settings → Platforms → Web Push → Advanced Configuration.
- Webpushr: Go to Subscribers → Export. For keys, visit Account → VAPID Keys.
- PushEngage: Go to Audience → Subscribers → Export. For keys, visit Settings → Subscription Settings → VAPID Keys.
Technical Anatomy of a W3C Push Subscription Object
When migrating subscriber tokens, LumaPush validates each record against the standard W3C Push Subscription JSON schema:
// Standard W3C Push Subscription Object
{
"endpoint": "https://fcm.googleapis.com/fcm/send/dK9...",
"expirationTime": null,
"keys": {
"p256dh": "BNcRdreALRFXTkOOUHK1dLK2o73i0U8amoXYDqWa35i4IFcpf8...",
"auth": "tBHItJI5svbpez7KI4CCXg=="
}
}
LumaPush automatically normalizes token exports from OneSignal, Webpushr, PushEngage, and custom databases, ensuring 100% token compatibility and seamless broadcast continuity.
Automated CSV Subscriber Import Script in Node.js
If you have thousands of subscriber records exported from another provider, you can use the LumaPush Bulk Import API to ingest them in seconds:
const fs = require('fs');
const csv = require('csv-parser');
const axios = require('axios');
const subscribers = [];
fs.createReadStream('subscribers_export.csv')
.pipe(csv())
.on('data', (row) => {
subscribers.push({
endpoint: row.endpoint,
p256dh: row.p256dh,
auth: row.auth,
tags: row.tags ? row.tags.split(';') : []
});
})
.on('end', async () => {
console.log(`Parsed ${subscribers.length} subscribers. Ingesting to LumaPush...`);
const res = await axios.post('https://api.lumapush.com/v1/subscribers/bulk-import', {
appId: 'YOUR_LUMAPUSH_APP_ID',
subscribers: subscribers
}, {
headers: { Authorization: `Bearer ${process.env.LUMAPUSH_API_KEY}` }
});
console.log('Migration complete:', res.data);
});
Zero-Downtime Service Worker Migration Protocol
To ensure continuous broadcast capability during the transition:
- Dual Service Worker Handling: Update your root
sw.jsorOneSignalSDKWorker.jsto import the LumaPush worker script viaimportScripts('https://cdn.lumapush.com/sw/worker.js'). - Preserving VAPID Keypairs: Ensure the VAPID Public and Private keys configured in your LumaPush dashboard match the original keys used to generate your subscriber endpoints.
- Phased Rollout: Run test campaigns to 5% sample segments to verify encryption handshakes before decommissioning legacy accounts.
Maintaining Custom Subscriber Tags and Segment Metadata
Subscriber migration involves more than just transferring anonymous browser tokens; preserving user segmentation tags (such as plan_type: enterprise, interests: tech, or ltv_tier: high) ensures continuous personalization. LumaPush's CSV normalization engine automatically ingests tag columns and maps them into native LumaPush segment filters without requiring manual re-tagging.
Automated Token Validation & Sanitization Pipeline
During large-scale subscriber migrations, CSV exports may contain truncated strings, invalid Base64URL characters, or malformed endpoints caused by export timeouts. LumaPush runs every imported subscription through an automated RFC-compliant cryptographic verification pipeline. Invalid rows are isolated into a downloadable error log while all valid subscriptions are immediately active and ready for broadcast within minutes.
Handling Legacy Safari Push Certificates (APNs Package Migration)
If your legacy subscriber list includes macOS desktop Safari subscribers registered under Apple's proprietary Website Push ID (APNs .p12 certificates), LumaPush provides a dedicated certificate importer. Simply upload your Apple Push Certificate and password in the LumaPush settings to maintain uninterrupted messaging to existing Safari desktop subscribers while transitioning new subscribers to standard W3C Web Push.
Post-Migration Deliverability Verification Protocol
To verify that all imported tokens are active and receiving broadcasts properly:
- Tag an internal segment of 5 to 10 test devices with
migration_test. - Dispatch a test campaign to the segment and confirm that alerts appear on Windows, macOS, Android, and iOS devices within 500ms.
- Monitor delivery error logs: expired tokens (HTTP 410 / 404) are automatically cleaned from your database, maintaining peak list hygiene.
- Verify that your site passes all web performance and Service Worker validation tests in Google Lighthouse.
Frequently Asked Questions (FAQ)
Will subscribers be asked to grant permission again after migrating?
No! As long as you import your existing VAPID keys, browser permissions remain completely valid. Existing subscribers will continue receiving your notifications without any new permission prompts.
Can LumaPush import custom tags and subscriber attributes?
Yes. If your CSV export contains user tags, registration dates, or country data, LumaPush will automatically map and retain those attributes for targeted segmentation.
How long does a subscriber database migration take?
Exporting keys and uploading your CSV takes less than 10 minutes. LumaPush processes and verifies hundreds of thousands of subscriber tokens in seconds.
What if my previous provider does not allow VAPID key export?
If you used a proprietary subdomain prompt on an older tool, LumaPush allows a dual-SDK transition strategy to seamlessly capture new subscribers while transitioning existing ones.
Does LumaPush charge any fees for database import?
No. Unlimited subscriber imports and database migrations are 100% free on all LumaPush subscription tiers.
Is there any downtime during the migration?
Zero downtime. The moment your keys are configured and the SDK snippet is updated, push notifications dispatch without interruption.
Are imported subscribers included in flat pricing?
Yes. LumaPush never charges per-subscriber fees, regardless of whether you have 10,000 or 1,000,000 imported subscribers.

