In-app messages

Helpful resources to get started with In-App Messages.

In-app messages (IAM) are customizable, targeted messages that display within your mobile app.

Creating an in-app message

In your OneSignal dashboard, navigate to Messages > In-App. Here you can:

  • View, Edit, Resume, and Duplicate an existing message by clicking the options button.
  • Create a new IAM by clicking the New Message button.

Note: OneSignal currently does not support in-app message REST APIs.

Options to duplicate or edit IAM templates

Options to duplicate or edit IAM templates

Templates

OneSignal provides professionally designed templates to help you get started quickly:

  • Welcome: Greet new users during onboarding.
  • New Feature Announcement: Promote new app features.
  • 10% Off Promotion: Offer discounts triggered by specific user actions.
  • Allow Notifications: Encourage notification opt-ins.
  • App Store Rating: Request app reviews from users.

Templates can be customized with your branding and activated quickly.

Pre-built IAM templates

Pre-built IAM templates

In-app setup

Create a new in-app message or edit a template to quickly get started.

Audience

Select specific Segments to create your audience of users eligible to receive the message.

📘

Segments include unsubscribed subscriptions

In-app messages are delivered to all mobile subscriptions matching the segment criteria, even if they’ve unsubscribed from push notifications.

IAM audience selection screenshot

IAM audience settings

Message

Select the IAM editor to design messages through either the:

📘

One editor per message

Once you select an editor, you cannot switch between them for the same message.

Screenshot showing the IAM editor

IAM editing screen

Testing IAM

Click Send Test In-App to preview the message on your device. This sends a push notification to your test device, opening the app and displaying the IAM.

Note: Your device must be a registered Test User. See Find Devices & Set Test Users.
Push notifications are not sent when IAMs are live in production.

🚧

IAM Test Limitations

Tag Substitution does not work for Test In-App Messages.

Triggers

Triggers determine when users see the IAM. Conditions must be met when users start a new app session (defined as opening the app after it’s been closed or inactive for at least 30 seconds).

You can set triggers:

IAM trigger screenshot

IAM trigger setup

Scheduling

IAMs can be scheduled to start and stop at specific dates and times:

  • Start Showing: Choose when the message begins.
  • Stop Showing: Choose an end date/time or select "Show forever".

Frequency: How often do you want to show this message?

  • Only once (default): Shows once per subscription.
  • Every time triggers are met: IAM appears each time triggers are satisfied.
  • Multiple times: Set how often IAM appears (e.g., 2 times every 3 days).
IAM scheduling options screenshot

IAM scheduling options

How are IAMs displayed?

Flow of IAM Display to Users

IAMs are not actively pushed. Instead, they are "set live" and pulled when triggered.

The message will display if:

  1. The user meets audience criteria before a new session.
    1. A new session starts when the user opens your app after it has been in the background or closed for at least 30 seconds.
    2. If users have the app open when the message goes live or enters the segment(s) during the same session, they will need to put the app out of focus (close or background) for at least 30 seconds to be eligible to see the message.
  2. The trigger conditions are met.
  3. The scheduled time and frequency is valid.

If segment criteria change mid-session, users must reopen the app to see the IAM.

Testing & troubleshooting

While testing, it is recommended to do the following:

  1. Set your device as a Test subscription and create a segment with the Test Users filter. Use this segment while testing.
  2. Set "How often do you want to show this message?" to "Every time trigger conditions are satisfied" unless you are explicitly testing the other options.
  3. When you set an in-app message live, make sure the app is closed our out-of-focus for at least 30 seconds before opening the app again. This will ensure you are opening the app to create a new session and be eligible for the message.

Still having trouble? Visit our In-App Message FAQ.

More examples

Explore practical IAM examples:

👍

Once published, your in-app is ready for all eligible users.

See more guides at In-App Messaging Channel Docs.