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 in-app 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 in-app templates


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

Audience settings


Message

Select the in-app 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

Editing screen

Testing

Click Send Test In-App to preview the message on your device.

  • Your device must be a registered Test User. See Find Devices & Set Test Users.
  • This sends a push notification to your test device, click the push to open the app, and displaying the message.
  • Push notifications are only sent for testing purposes. Push will not be sent in production.
  • Tag Substitution does not work for test In-App Messages.

Triggers

Triggers determine when users see the message. 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

Trigger setup

When should this message dismiss?

The message defaults to showing until dismissed either through swiping it away or clicking an element that has the dismiss action.

You can auto-dismiss the message after a certain amount of time using the Dismiss after certain amount of time option.

Example dismisses the message after 90 seconds if the user doesn't dismiss it first.

Example dismisses the message after 90 seconds if the user doesn't dismiss it first.


Scheduling

In-app messages 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: Message appears each time triggers are satisfied.
  • Multiple times: Set how often the message appears. Examples:
    • 2 times with a gap of 1 hours in between - The message will be allowed to trigger a total of 2 times. The first time when the triggers are met, then the 2nd time when the triggers are met and 1 hour has passed.
    • 12 times with a gap of 30 days in between - The message will be allowed to show roughly once a month for a year, depending on the triggers.
IAM scheduling options screenshot

Scheduling options


How are in-app messages displayed?

Flow of IAM Display to Users

In-app messages 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 message.


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 in-app message examples:



👍

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

See more guides at In-App Messaging Channel Docs.