Push Notification Campaign Measurement

Push Notification Campaign Measurement

Track and measure push notification campaign performance on iOS and Android to attribute re-engagement events to specific push campaigns and optimize user retention strategies.

Singular provides seamless tracking for push notification campaigns across Firebase Cloud Messaging (FCM), Apple Push Notification Service (APNs), and third-party platforms including CleverTap, MoEngage, WebEngage, OneSignal, Salesforce Marketing Cloud, and Braze.


How Push Notification Tracking Works

Singular tracks push notification campaigns by embedding tracking links in notification payloads and attributing app opens to the originating campaign.

Tracking Flow

  1. Create Campaign: Build a push notification with a Singular tracking link embedded as custom key/value data
  2. User Receives Notification: Push provider delivers notification to user's device
  3. User Taps Notification: User opens app by tapping the notification
  4. SDK Processes Payload: Singular SDK extracts tracking data from notification payload
  5. Attribution Recorded: Singular attributes the app open as a re-engagement event to the push campaign

Re-engagement vs. Acquisition: Push notification tracking measures re-engagement (existing users returning to your app), not new user acquisition. The tracking link must be configured with re-engagement enabled.


Supported Push Notification Providers

Singular supports push notification tracking across all major push providers and marketing automation platforms.

Platform Support Matrix

Provider Platform Integration Type Singular Support
Firebase Cloud Messaging (FCM) Android Custom Data Payload
Apple Push Notification Service (APNs) iOS Custom Data Payload
CleverTap iOS, Android Custom Data Payload
MoEngage iOS, Android Custom Data Payload
WebEngage iOS, Android Custom Data Payload
OneSignal iOS, Android Custom Data or Launch URL
Salesforce Marketing Cloud (SFMC) iOS, Android Custom Data or OpenDirect
Braze iOS, Android Custom Data or On-click Behavior

Integration Flexibility: Some providers (OneSignal, SFMC, Braze) support direct tracking link integration via CTA fields, eliminating the need for custom SDK configuration. See Alternative Integration Methods for details.


Prerequisites

Verify your app meets these requirements before implementing push notification tracking.

Required Setup

Singular SDK Integration

Install and configure the Singular SDK with push notification support enabled.


Push Notification Infrastructure

Configure push notification delivery in your app and backend systems.

  • Android: Firebase Cloud Messaging configured with valid server key
  • iOS: APNs certificates or tokens configured in Apple Developer account
  • Device Registration: App successfully registers for push notifications and stores tokens
  • Delivery Testing: Verify push notifications reach devices successfully

Push Provider Account

Set up and configure your push notification service provider.

  • Provider Account: Active account with FCM, APNs, or third-party platform
  • Custom Data Support: Verify provider supports custom key/value pairs in payloads
  • API Access: Credentials configured for sending notifications programmatically

Implementation Steps

Follow these steps to implement push notification campaign tracking with Singular.

Step 1: Create Singular Tracking Link

Generate Re-engagement Link

Create a Singular Link configured specifically for re-engagement tracking of push notification campaigns.

  1. Navigate to Singular Links: Access the Singular Links section in your Singular dashboard
  2. Create New Link: Click "Create New Link" and select your app
  3. Enable Re-engagement: Toggle "Re-engagement" setting to ON (critical for push tracking)
  4. Configure Parameters: Add campaign parameters for attribution (source, medium, campaign name)
  5. Generate Link: Save and generate both short and long URL formats

Complete guide: Building Singular Tracking Links

Critical: The tracking link MUST have re-engagement enabled. Links without re-engagement enabled will not properly attribute push notification opens.

Example Link Configuration:

Singular Link Creation

Re-engagement Toggle:

Enable Re-engagement

Generated Link:

Generated Singular Link

Step 2: Add Link to Push Notification Payload

Configure Custom Data

Embed the Singular tracking link in your push notification's custom data section using the standard key name.

Configuration Requirements:

  • Key Name: Use sng_link as the custom data key (case-sensitive)
  • Value: Paste your complete Singular tracking link (short or long format)
  • Data Type: String value in custom data payload

Firebase Cloud Messaging Example

Add custom data to FCM notifications through Firebase Console or API.

Firebase Console Configuration:

Firebase Custom Data
FCM API
{
  "notification": {
    "title": "Special Offer Inside!",
    "body": "Open now to claim your reward"
  },
  "data": {
    "sng_link": "https://your-app.sng.link/Abc12/xyz9?pcn=push_campaign"
  },
  "to": "device_registration_token_here"
}

Apple Push Notification Service Example

Include custom data in APNs payload using the standard aps dictionary format.

APNs Payload Structure:

APNs Custom Data
APNs JSON
{
  "aps": {
    "alert": {
      "title": "Special Offer Inside!",
      "body": "Open now to claim your reward"
    },
    "sound": "default",
    "badge": 1
  },
  "sng_link": "https://your-app.sng.link/Abc12/xyz9?pcn=push_campaign"
}

Both Formats Supported: Singular accepts both short links (sng.link) and long links (custom domain format). Use whichever format fits your tracking infrastructure.


Step 3: Configure SDK to Process Custom Key

Android SDK Configuration

Configure the Singular Android SDK to extract and process the sng_link custom data key from FCM notifications.

Kotlin
// In your FirebaseMessagingService
override fun onMessageReceived(remoteMessage: RemoteMessage) {
    super.onMessageReceived(remoteMessage)
    
    // Extract custom data from notification
    val data = remoteMessage.data
    
    // Check for Singular tracking link
    if (data.containsKey("sng_link")) {
        val singularLink = data["sng_link"]
        
        // Pass to Singular SDK for attribution
        Singular.setGCMData(data)
    }
    
    // Display notification to user
    showNotification(remoteMessage)
}

Complete integration guide: Android Push Notification Support


iOS SDK Configuration

Configure the Singular iOS SDK to extract and process the sng_link custom data key from APNs notifications.

Swift
// In your AppDelegate
func application(_ application: UIApplication, 
                 didReceiveRemoteNotification userInfo: [AnyHashable : Any],
                 fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    
    // Check for Singular tracking link
    if let singularLink = userInfo["sng_link"] as? String {
        // Pass to Singular SDK for attribution
        Singular.setAPNSData(userInfo)
    }
    
    completionHandler(.newData)
}

// For iOS 10+ UNUserNotificationCenter
func userNotificationCenter(_ center: UNUserNotificationCenter,
                           didReceive response: UNNotificationResponse,
                           withCompletionHandler completionHandler: @escaping () -> Void) {
    
    let userInfo = response.notification.request.content.userInfo
    
    // Check for Singular tracking link
    if let singularLink = userInfo["sng_link"] as? String {
        // Pass to Singular SDK for attribution
        Singular.setAPNSData(userInfo)
    }
    
    completionHandler()
}

Complete integration guide: iOS Push Notification Support


Step 4: Test and Validate

Testing Procedure

Verify push notification tracking works correctly before launching campaigns.

  1. Send Test Notification: Trigger a test push notification with Singular link in custom data
  2. Receive on Device: Confirm notification appears on test device
  3. Tap Notification: Open app by tapping the notification
  4. Check SDK Logs: Verify SDK logs show Singular link extraction
  5. Validate Dashboard: Confirm re-engagement event appears in Singular dashboard within 5 minutes

Platform-Specific Validation:

Common Issues:

  • Missing Events: Verify sng_link key name is exact (case-sensitive)
  • Wrong Attribution: Confirm re-engagement is enabled on tracking link
  • SDK Not Processing: Check SDK initialization occurs before notification handling

Step 5: Monitor Campaign Performance

Analyze Push Notification Results

Track re-engagement performance and ROI of push notification campaigns in Singular's analytics reports.

Available Metrics:

  • Re-engagement Events: Total app opens attributed to push notifications
  • Re-engagement Rate: Percentage of users who opened app from push
  • Revenue Attribution: Revenue generated by re-engaged users
  • Campaign Comparison: Performance across different push campaigns
  • Cohort Analysis: User behavior post-re-engagement

Dashboard Example:

Singular Analytics Dashboard

Access reports through: Analytics → Aggregated Analytics Reports → Filter by Re-engagement Source


Alternative Integration Methods

Some push providers support direct tracking link integration without requiring custom data configuration in SDK.

Direct CTA Integration

Certain platforms allow Singular tracking links to be configured directly in notification CTA fields, automatically launching the app with attribution data.

OneSignal Launch URL

OneSignal supports direct tracking links via the Launch URL feature.

  • Configuration: Add Singular link to Launch URL field in notification composer
  • Behavior: Tapping notification opens app with Singular link automatically processed
  • SDK Requirement: Minimal—standard Singular SDK integration sufficient

Documentation: OneSignal Launch URL


Salesforce Marketing Cloud OpenDirect

SFMC provides OpenDirect functionality to launch apps with tracking links.

  • Configuration: Set Singular link as OpenDirect URL in message setup
  • Behavior: Notification tap triggers app launch via OpenDirect protocol
  • Platform Support: Available for both iOS and Android

Documentation: SFMC OpenDirect


Braze On-Click Behavior

Braze allows Singular tracking links to be configured in notification on-click behavior settings.

  • Configuration: Add Singular link to On-click Behavior field in push composer
  • Behavior: Notification tap opens app with automatic link processing
  • Action Types: Supports deep linking and external URL options

Documentation: Braze On-Click Behavior

Recommendation: Use direct CTA integration when available—it simplifies implementation and reduces SDK configuration requirements. However, custom data method provides maximum flexibility across all providers.


Best Practices

Follow these guidelines to maximize accuracy and effectiveness of push notification campaign tracking.

Campaign Structure

Link Configuration

  • Unique Links Per Campaign: Create separate tracking links for each push campaign to isolate performance
  • Descriptive Parameters: Use clear campaign names in tracking link parameters
  • Consistent Naming: Establish naming conventions for push campaigns (e.g., push_promo_2025_q1)
  • Test Before Launch: Validate each new tracking link with test notifications

Technical Implementation

  • Case Sensitivity: Always use sng_link exactly as written (lowercase)
  • URL Encoding: Ensure tracking links are properly URL-encoded in API requests
  • Payload Size: Monitor notification payload size—keep under platform limits (4KB for APNs, 4KB for FCM)
  • Error Handling: Implement fallback logic if custom data is missing from notification
  • SDK Version: Use latest Singular SDK version for optimal push notification support

Performance Optimization

  • Segmentation: Target push campaigns to engaged user segments for higher open rates
  • Timing: Send notifications during optimal engagement windows based on user behavior
  • A/B Testing: Test different messaging and timing with separate tracking links
  • Frequency Caps: Limit push frequency to avoid user fatigue and opt-outs
  • Deep Linking: Combine push tracking with deep links to specific in-app content

Troubleshooting

Common Issues and Solutions

Issue Cause Solution
Events not appearing in dashboard Re-engagement not enabled on link Verify tracking link has re-engagement toggle enabled in Singular Links
SDK not extracting link Incorrect custom data key name Confirm key is exactly sng_link (case-sensitive)
Attribution to wrong campaign Using same link across campaigns Create unique tracking link for each campaign
Delayed event reporting Network latency or offline mode SDK queues events and sends when connection restored—allow up to 24 hours
iOS notifications not tracked Missing APNs data handler Implement setAPNSData() in notification delegate methods
Android notifications not tracked Missing FCM data handler Call setGCMData() in FirebaseMessagingService

Support: For additional troubleshooting assistance, contact Singular Support with push notification payload examples, SDK logs, and dashboard screenshots showing the issue.