Skip to main content
When you switch your app’s push to Sequenzy, you can bring the devices that already opted in with you, so you keep your push audience. Open Settings > Push, then Import devices under Move push subscribers. You can also use the API, sequenzy push imports start, or the create_push_import and start_push_import MCP tools.

Before you import

Imported tokens keep working only with the same credentials your app registered them with:
  • iOS: add an APNs key from the same Apple team, for the same bundle ID. Use the production environment for App Store and TestFlight installs.
  • Android: add a service account from the same Firebase project your app uses.
The import shows a warning when either is missing. You can import first and add the credentials later, but nothing reaches those devices until you do. Web push subscriptions are not imported. Browsers tie each subscription to the previous provider’s VAPID keys, and none of these providers export them, so those subscriptions could never be delivered. Add the Sequenzy web SDK to your site and visitors re-subscribe.

Sources

Each source’s API key is stored encrypted and used only to read devices. It is deleted as soon as the devices are read, or when you cancel the import; a failed import keeps it so you can resume.

CSV columns

A CSV needs a token column (or push_token, device_token, identifier) and a platform column (ios, android, or OneSignal device_type codes). Add external_id or email so each device finds its contact. Optional columns: status or subscribed (blank means opted in), unsubscribed, app_id, last_active, token_type, app_version, os_version, device_model, locale, timezone, and attribute.<name> for contact attributes. The dashboard and CLI upload files of up to 256 MB, in parts, and the import starts only once every part has arrived. For larger exports, import from OneSignal, Braze or Customer.io directly, or split the file into several imports.

What gets imported

  • Opted-in devices are linked to a contact by external ID, then email. If no contact matches, a contact is created without joining any list or starting a sequence. A device with only an external ID gets a push-only contact: it has no email or phone, receives push, and can be used in segments, while email and SMS sends skip it. When a later contact create or update (the subscribers API, or an integration that uses it) sends that external ID with an email, the email is added to the same contact, or, if another contact already has that email and no external ID, the two contacts are merged. Events tracked with an eventId and contact CSV imports do not merge; they report the identity conflict. See push-only contacts. A device whose email belongs to a contact with a different external ID is skipped too, since that is another person.
  • Opted-out devices are stored as unsubscribed and never receive push.
  • Devices you already have, for example registered by your app through the Sequenzy SDK, are left as they are. A device without a contact is linked to the matching one.
  • Tags and attributes are copied onto contacts only for keys a contact does not have yet. Turn this off with Copy tags and attributes to contacts.
  • Tokens that cannot work are rejected: iOS tokens that are Firebase tokens (some Customer.io apps send iOS through Firebase), Firebase installation IDs, and malformed tokens.
Devices are matched on their token. When your app later registers an imported token through the SDK, it updates the same device, so nobody gets a notification twice.

Progress and results

The import runs in the background and its progress shows in Settings > Push, also after you reload or leave the page. When it finishes you see how many devices were imported, matched, kept as unsubscribed, skipped and rejected, with reasons. One import runs per workspace at a time. If an import fails or stops reporting progress, select Resume: it continues from the last saved step and never imports a device twice. Cancel stops it; devices already imported stay.

After the import

Importing never sends a notification. Old exports include devices that were uninstalled or expired. On your first sends, Apple and Google reject those tokens and Sequenzy retires them automatically, so delivery counts settle after the first campaign. OneSignal registers some Android apps through its own shared Firebase project. Those tokens are rejected by your project and retired the same way.