Critical Moments Docs
Quick StartHomepageAccount
  • Documentation Home
  • What is Critical Moments?
  • Quick Start
  • Concepts Overview
  • Remote Control / Service
    • Host Config on Github Pages
  • Config File Structure
  • Demo App
  • Homepage & Account
  • 📚Guides
    • Mobile App Toolbox: 13 Features Most Apps Need
    • Reduce App Churn with Notifications
    • Improve your App Store Rating
    • Feature Flags Guide
  • ⏰Notifications
    • Intro to Notifications
    • Notifications Spec
    • Smart Delivery
    • Badges
  • 🎯Conditional Targeting
    • Intro to Conditions
    • Built-in Properties
    • Custom Properties
    • Syntax and Operators
    • Conditional Guides
      • Working with Dates
      • Locations and Weather
      • Event and Property History
  • 🎪Events
    • Event Overview
    • Recommended Events
    • Built-In Events
  • đź’¬Actions / In App Messaging
    • Actions Overview
    • Modals
      • Modal Content Sections
      • Modal Buttons
      • Modal Images
    • Banners
    • Alerts
    • App Reviews
    • Open Link
    • Custom Actions
    • Conditional Actions
    • Triggers
  • 🎨Themes
    • Theme Overview
    • Built In Themes
  • ⛳Feature Flags
    • Feature Flag Guide
    • Conditional Feature Flags
    • Named Conditions Config
  • 🔑Trustless SaaS
  • đź‘‹Support
  • 👩‍💻SDK API Reference
Powered by GitBook
On this page
  • Benefits over other notification systems
  • Step 1: Install Critical Moments
  • Step 2: Request Notification Permissions
  • Step 3: Log important events and properties
  • Step 4: Add Notifications to Reduce Churn
  • Increase Activation Rate
  • Reduce Short-Term Churn
  • Reduce Long-Term Churn
  • Step 5: Add Custom Notification
  • You're done! âś…
  • Optional Enhancement: Deeplinks

Was this helpful?

  1. Guides

Reduce App Churn with Notifications

Send notifications to your users at the right time to increase views and engagement.

Last updated 8 months ago

Was this helpful?

This guide will walk you through using the Critical Moments SDK to send your users notifications, which can increase your app’s activation rates and reduce churn.

This is a step by step developer guide with examples. Our technical docs for notifications can be .

Benefits over other notification systems

Critical Moments Notifications have several major benefits over other notification systems:

  • : Delivered when users are actively holding their unlocked device, increasing visibility and click-through rates.

  • No Push Servers Required: less infrastructure to manage and more reliable delivery with local notifications.

  • No Per-Message Cost: unlimited notifications included

  • Notifications Without Code: after integrating, new notifications and targeting can be done completely in config.

  • : change notification messaging, targeting and timing over the air.

  • Scheduling/Timezones: deliver notifications at the perfect time, whether that's in the user's local time zone, specific times of the day, or certain days of the week.

Step 1: Install Critical Moments

Follow our to integrate Critical Moments into your app. The initial integration takes about 15 minutes.

Step 2: Request Notification Permissions

Your app needs to get the user’s permission to show notifications.

You’ll want to request permission somewhere that feels natural, such as during onboarding flow. It’s important to ask early enough in your app’s user experience that most users see it. One of the primary use cases of notifications is to prevent early churn/abandonment; notifications can’t help reduce churn if the user churns before the permission request.

Requesting permission requires just one line of code:

CriticalMoments.shared().requestNotificationPermission()
[CriticalMoments.shared
        requestNotificationPermissionWithCompletionHandler:nil];

Step 3: Log important events and properties

The following events and properties are particularly helpful for targeting notifications:

  • completed_onboarding event: Trigger when the user completes onboarding, used to reduce abandonment (see below).

  • user_signed_in property: is the user signed in (for apps that require accounts)

  • has_paid_subscription property: is the user a subscriber (for apps with subscriptions)

Step 4: Add Notifications to Reduce Churn

We suggest three notifications below that can be easily added to any app.

Increase Activation Rate

Many users download an app, only to never launch it again. Timely reminders can help them remember to complete onboarding and discover what your app has to offer.

"notifications": {
  "onboardingReminder": {
    "title": "Complete APP_NAME Setup",
    "body": "It only takes 3 minutes to start APP_VALUE.",
    "cancelationEvents": [
      "completed_onboarding"
    ],
    "deliveryTimeOfDayStart": "10:00",
    "deliveryTimeOfDayEnd": "20:00",
    "deliveryTime": {
      "eventName": "app_entered_background",
      "eventInstance": "latest-once",
      "eventOffsetSeconds": 900
    }
  }
}

Reduce Short-Term Churn

Some users never complete onboarding. Remind users to complete onboarding tasks within the first week to boost activation rates and reduce average active user acquisition cost.

"notifications": {
  "title": "Complete APP_NAME Setup",
  "body": "It only takes 3 minutes to start APP_VALUE.",
  "cancelationEvents": [
    "completed_onboarding"
  ],
  "deliveryTimeOfDayStart": "10:00",
  "deliveryTimeOfDayEnd": "20:00",
  "deliveryTime": {
    "eventName": "app_entered_background",
    "eventInstance": "latest-once",
    "eventOffsetSeconds": 259200
  },
  "idealDeliveryConditions": {
    "condition": "screen_brightness > 0.01 && device_orientation != 'face_up' && device_orientation != 'face_down'",
    "maxWaitTimeSeconds": 345600
  }
}

Reduce Long-Term Churn

Some users might churn after using an app for a while. Setting up reminders after a few weeks or months of inactivity can keep bring them back and reduce long-term churn.

"notifications": {
  "churnNotification": {
    "title": "APP_VALUE",
    "body": "APP_VALUE_2",
    "deliveryTimeOfDayStart": "10:00",
    "deliveryTimeOfDayEnd": "20:00",
    "deliveryTime": {
      "eventName": "app_entered_foreground",
      "eventInstance": "latest",
      "eventOffsetSeconds": 2592000
    },
    "idealDeliveryConditions": {
      "condition": "screen_brightness > 0.01 && device_orientation != 'face_up' && device_orientation != 'face_down'",
      "maxWaitTimeSeconds": 345600
    }
  }
}

Some apps add a second churn notification, a few weeks after the first one.

Step 5: Add Custom Notification

Each app has their own unique needs and user experience. Our robust targeting options can deliver notifications to the right users at the right time.

"notifications": {
  "churnNotification": {
    "title": "Time to Train!",
    "body": "It's been a few days since your last workout. Time to get back in shape!",
    "deliveryTimeOfDayStart": "7:00",
    "deliveryTimeOfDayEnd": "12:00",
    "deliveryTime": {
      "eventName": "training_session_end",
      "eventInstance": "latest",
      "eventOffsetSeconds": 259200
    },
    "idealDeliveryConditions": {
      "condition": "screen_brightness > 0.01 && device_orientation != 'face_up' && device_orientation != 'face_down'",
      "maxWaitTimeSeconds": 86400
    }
  }
}

You're done! âś…

Everything should now work!

You’ll want to test that the notifications appears in your app at the expected times. It can be helpful to set the eventOffsetSeconds and maxWaitTimeSeconds to lower values (like 10 seconds) during testing. If notifications aren’t appearing, ensure the conditions you set are met.

By default notifications only appear when an app isn’t in the foreground. To test, you’ll want to trigger a notification with a delay via eventOffsetSeconds, then move the app to the background before that delay fires to see it work in testing.

Optional Enhancement: Deeplinks

and in your app so your notifications can fire at the right moment, and target the right users.

After integration, notifications can be added entirely in your , no additional code needed!

The below will remind users to complete onboarding, 15 minutes after they leave. It will be canceled when the completed_onboarding event is fired. It will only be sent between 10am and 8pm local time, and will only be sent once.

The below will remind users to complete onboarding between day 3 and day 7 after initial app use. It will use smart notifications to attempt delivery when the user is holding their device and their screen is on. It will be canceled when the completed_onboarding event is fired. It will only be sent between 10am and 8pm local time, and will only be sent once.

The below will remind users who have not launched the app in 30 days to return. It will use smart notifications to attempt delivery when the user is holding their device and their screen is on, and fall back to a standard delivery time if that condition is not met in 4 days. It will only be sent between 10am and 8pm local time. If the user uses the app, this notification is pushed out again (eventInstance: "latest").

The below reminds users of a hypothetical workout app to train. It's sent 3 days after their last workout event (training_session_end). It uses smart notifications to attempt delivery when the user is holding their device and their screen is on. It delivers in the morning. It will recur after every workout (eventInstance: "latest").

If you want your notifications to open a specific screen of your app instead of just launching it, implement , or to those parts of your app.

You can use the actionName to trigger this screen when a notification is tapped.

📚
found here
Smart Notifications
Over the air updates
quick start guide
Instrument event
set properties
app’s config file
config
config
config
example config
iOS deeplinks
universal links
property of notifications