
In-app message examples
- Prompt user action like subscribing to push notifications or updating their location.
- Promote new or underutilized features to targeted users.
- Display announcements and news in real-time without releasing an app update.
- Create surveys and carousels.
- Help with onboarding and educational content.
Setup & requirements
You must have the OneSignal SDK installed in your app to use In-App Messages. Once complete, you can create and send in-app messages from the OneSignal dashboard without writing any code. Our SDK also has methods for advanced use cases like:- Triggering the message at specific times
- Click-handling and deep linking
- Pausing the message
- Lifecycle management and more!
Mobile SDK Setup
In-app Message SDK methods
In-app triggers
In-app click actions
Send in-app messages
You can send in-app messages from the OneSignal dashboard and within Journeys. 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
- Choose either the Block Editor or HTML Editor
- Or use pre-built Templates or past messages.
Set a name and label
- Add internal tracking metadata.
- API equivalent:
name
Set an audience
- Send to default segment: Defaults to all “Subscribed Users” if none set.
- Send to specific segments: Include and exclude segments explicitly. Multiple segments have an “OR” relationship; duplicate Subscriptions are automatically removed.

Name, label, and audience segment selection interface
Targeting method | Dashboard | API |
---|---|---|
Segments | ✅ | ✅ |
Filters (API only) | ❌ | ✅ |
Aliases (API only) | ❌ | ✅ |
Message design
Use our visual drag-and-drop editor or our HTML editor for more control.
Editing screen
Design with drag-and-drop
Design with HTML
Pre-built HTML templates
In-app JavaScript APIs for HTML
Message Personalization
Multi-Language Messaging
Click actions
Customize what happens when users click elements in your message.
Click action options
Click Actions
Event Streams
SDK Click Handler
Deep Linking
Triggers
Define when messages should appear during app sessions.
Trigger setup
On app open
Session duration
Since last message
Custom triggers
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:
- 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.
How in-app messages are shown
In-app messages are not actively pushed. Instead, they’re pulled at app start based on audience. Then displayed based on trigger logic.
In-app message display logic flow
- 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.
- The trigger conditions are met.
- The scheduled time and frequency is valid.
Testing
While testing, it is recommended to do the following:Add versbose logging to your app
setLogLevel
method to Verbose
in your app to get more detailed logs.Make sure your Subscription is in the segment
- See Find Devices & Set Test Users if you don’t know your device’s Subscription ID.
- Make sure your device’s Subscription is in the included segment(s) and not in the excluded segment(s) if being used.
- Tip: You can add your device as a test Subscription and create or update the segment to include the Test Users filter.
Make sure the app is closed or out-of-focus for at least 30 seconds
Check trigger conditions
Check the schedule and frequency
- Make sure the “Start showing” and “Stop showing” dates are set correctly.
- Set “How often do you want to show this message?” to “Every time trigger conditions are satisfied” while testing.
Update the message and make sure it is active
- Once the message is active, you can open the app on your device.
- You should see the message display based on your trigger conditions.
Test & Preview button
Using the Test & Preview button will send a push notification to your test device selected. When you click the push to open the app, the in-app message will display. To use this feature, you must:- Make sure your device is a Test User.
- Push notifications are only sent for testing purposes. Push will not be sent when the message is live.
- You can open the app and send the “test message”. The in-app message will display.
- Tag Substitution does not work for test In-App Messages.
- If you are not seeing the message, make sure you have followed the testing steps.
- To receive a test In-App Message, your device must be subscribed to push. Test IAMs are triggered by a push notification, so if your subscription has an invalid APNs token or you’re not subscribed to push, the test will not work.
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