Skip to main content
Check the complete list of parameters and responses of the PATCH Device Token endpoint for registering push notification tokens.

What are push notifications in Masivo?

Push notifications allow you to send timely, relevant messages directly to your customers’ mobile devices. By registering device tokens, you can target specific users or segments with personalized notifications, promotions, or alerts.

Register a device token

To enable push notifications for a customer, you need to register their device token with Masivo. This links their device to their customer profile, allowing for targeted messaging.

Understanding device tokens

  • device_token: A unique identifier provided by Firebase Cloud Messaging (FCM) that allows Masivo to send notifications to a specific device. This token is generated by the Firebase SDK in your mobile application.
  • device_info: Additional information about the device that helps with segmentation:
    • platform: The operating system of the device (“android”, “ios”, or “web”)
    • model: The device model name or identifier
    • osVersion: The version of the operating system running on the device

Rich notification images

The optional image field on a push template is a rich notification attachment — a banner or hero image displayed alongside the title and body in the notification tray. It is not the app icon or launcher logo; those come from your native app bundle. Masivo uploads the image and includes it in the FCM/APNs payload. Supported formats are JPEG, PNG, and GIF. Keep file sizes reasonable for fast delivery on mobile networks.

Custom notification sounds

Notification sounds are native app resources, not remote media. Masivo does not accept an uploaded audio URL because neither FCM nor the operating systems can use a remote file as a notification sound. Add the same .wav file to every mobile app build that receives the template, then enter its filename in the Masivo push template. Use one of these template values:
  • Empty: silent notification.
  • default: device default sound.
  • order_ready.wav: custom sound bundled in the app.
Use lowercase filenames containing only letters, numbers, and underscores. Keep custom sounds below 30 seconds for iOS compatibility.

Android

Copy order_ready.wav to android/app/src/main/res/raw/. Android identifies the resource as order_ready, without its extension. On Android 8 and later, create these channels before receiving notifications:
Masivo derives the custom channel ID from the filename: order_ready.wav becomes masivo_order_ready. Android channel sound behavior cannot be changed after a channel is created, and users can override it in system settings.

iOS

Add order_ready.wav to the main application target’s Copy Bundle Resources build phase. Masivo sends the complete filename in the APNs sound field. Rebuild and reinstall the native app after adding a sound. An over-the-air JavaScript update cannot add native audio resources.
Device tokens can change over time. Your app should update the token in Masivo whenever the FCM SDK provides a new token to ensure uninterrupted delivery of notifications.

User segmentation with push notifications

Registering device tokens enables powerful audience segmentation capabilities:
  1. Target by demographics: Send notifications to specific user segments based on demographics, location, or behavior
  2. Campaign-specific messaging: Tailor notifications to specific marketing campaigns or loyalty programs
  3. Engagement tracking: Monitor which notifications drive user engagement and conversions

FCM data payload

When Masivo delivers a visible push, Firebase receives a notification block (title, body) plus a data map. Every data value is a string. Image and sound are platform fields (Android/APNs), not keys inside data. Use data when the customer opens the notification (deep link, attribution, or PUSH_OPENED). A dashboard test send is not the same as a journey send — do not assume the keys are interchangeable.
This section covers visible marketing pushes. Silent in-app wake payloads use masivo_type and are documented in the React Native SDK.

Data keys

redirect_* keys are omitted when the corresponding setting is empty. link is a Masivo short URL when one was generated for that send. Two fallbacks send the template destination URL instead:
  • Journey: the node has no short URL mapped yet
  • Test: the send is not tied to a stored push template
The host is never app.masivo.ai. It is the first custom domain in Links settings (for example https://links.example.com/l/AbCdEf).

Test send

Dashboard Send test from a push template:
No customerId. If the test is not tied to a stored template, link is the template destination URL instead of a short URL.

Journey send

A Send push notification action on a journey:
No notificationId. If the journey node already has short URLs, link is that short URL. Otherwise link is the template destination URL.

Scheduled audience send

Schedule from a push template to an audience:
notificationId is the delivery history id. No customerId on topic or per-device audience payloads.

Manual API send

POST /push/customers/{id}/send returns { data: { sent: true, customer_id, push_template_id } }. The device still receives this data map:

Compare origins

Handle notification opens

On a test send, data.customerId is missing — use the signed-in customer id.

Best practices

  • Always request push notification permissions at appropriate times in the user journey
  • Refresh and update device tokens regularly to maintain delivery reliability
  • Provide clear opt-out options to respect user preferences
  • Test notifications across different device types before sending to your entire audience
  • Keep messages concise and actionable to improve engagement