In-app message examples

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


What you can do with OneSignal In-App Messages

  • Send marketing campaigns from the Dashboard
  • Include them in multi-channel flows via Journeys
  • Target groups of users with Segments
  • Personalize messages with user data
  • Integrate with CRMs & tools like HubSpot, Mixpanel, Amplitude, Zapier, and more

In-app setup


In-app design


Features & use cases


Send in-app messages

Journeys

Automate messaging workflows based on user behavior.

Dashboard

Continue below to learn how to send in-app messages manually from the dashboard.

Steps for sending messages with OneSignal:

Select the message channel

  • Go to Messages > In-App > New In-App
  • Use the options menu to edit, resume, or duplicate messages.

Options to duplicate or edit in-app templates

Choose a composition method

Set a name and label

  • Add internal tracking metadata.
  • API equivalent: name

Set an audience

  • Include or exclude Segments

  • Default: “All Users”

  • Segment logic: multiple segments use “OR”; duplicates removed automatically

In-app messages are delivered to all subscriptions in the segment, regardless of push opt-in status.

Audience settings


Message

Choose an editor to design the message content.

Once an editor is selected, it cannot be changed for that message.

Editing screen

Click Actions

Customize what happens when users click elements in your message.

Click action options

Triggers

Define when messages should appear during app sessions.

Trigger setup

Four trigger types:

On app open

Trigger when user launches the app.

Session duration

Delay X seconds after app open.

Since last message

Delay X time after last in-app message.

Custom triggers

Controlled via SDK addTrigger(s).

When should this message dismiss?

Messages can dismiss:

  • On user interaction (click, swipe)
  • After a set time (auto-dismiss)

Auto-dismiss after 90 seconds

Schedule & frequency

  • Start Showing: When message becomes eligible
  • Stop Showing: Set end date/time or “Show forever”

How often do you want to show this message?

  • Only once (default)
  • Every time triggers are met
  • Multiple times with custom repeat logic:

Examples:

  • Show 2 times with 1 hour gap
  • Show 12 times with 30 days gap

Example will show the message a total of 12 times every 30 days.


Display logic

In-app messages are not actively pushed. Instead, they’re pulled at app start based on audience + displayed based on trigger logic.

The message will display if:

  1. The user meets audience criteria before a new session starts.
  • A new session starts when the user opens your app after it has been in the background or closed for at least 30 seconds.
  • 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.
  1. The trigger conditions are met.
  2. The scheduled time and frequency is valid.

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


Testing

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.
  4. Use the Send Test In-App button 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.

Need help?

Chat with our Support team or email support@onesignal.com

Please include:

  • Details of the issue you’re experiencing and steps to reproduce if available
  • Your OneSignal App ID
  • The External ID or Subscription ID if applicable
  • The URL to the message you tested in the OneSignal Dashboard if applicable
  • Any relevant logs or error messages

We’re happy to help!