
Setup
1. Create the message
Navigate to Messages > In-App > New In-App or open the existing App Store Rating template. Add an Action ID to your review button:
2. Add the trigger
The trigger controls when the message displays. You can use a no-code or code-based approach. No-code: Set up the Audience to target users you want reviews from — for example, users with many sessions who have used the app for a long time. Code-based: Use the SDK’saddTrigger method to programmatically display the message based on user actions. Avoid showing the prompt when the user is in the middle of an important task.
In this example, the In-App Trigger key is ask_for_review with a value of show. The key and value can be anything, but must match what you pass to addTrigger:
OneSignal.InAppMessages.addTrigger("ask_for_review", "show");

3. Handle the app store rating prompt
You can direct users to leave a review with a no-code or code-based approach.No-code option
No-code option
- Update the segment to use the “Device Type is Android” filter.
- Duplicate the in-app message and update the duplicate’s segment to use the “Device Type is iOS” filter. You should have two in-app messages with two separate segments.
- Add a URL Click Action to the “Review Now” button linking to your app’s store listing:
- Android:
https://play.google.com/store/apps/details?id=YOUR_PACKAGE_NAME— see Linking to Google Play - iOS:
https://apps.apple.com/app/idYOUR_APP_STORE_ID?action=write-review— see Requesting App Store Reviews
- Android:
Code-based option
Code-based option
Use the SDK’s This example uses the in_app_review Flutter package. Adapt for your platform — see RequestReviewAction for iOS or the Google Play In-App Reviews API for Android.
InAppMessages.addClickListener method to detect when the review button is clicked (by checking the Action ID), then call the native iOS or Android review API to present the rating modal.4. Schedule and enable
Apple displays the native review prompt a maximum of three times within a 365-day period. Google Play enforces a time-bound quota but does not publish the exact limit — calling the API more than once in a short period (less than a month) may not show a dialog. To stay within these limits, set your in-app schedule to display once every 17 weeks:
FAQ
How often can Apple’s native review prompt appear?
Apple displays theRequestReviewAction prompt a maximum of three times per 365-day period per user. This is enforced by the system — your app does not need to track the count. See Requesting App Store Reviews.
How often can Google’s native review prompt appear?
Google Play enforces a quota but does not publish the exact limit. CallinglaunchReviewFlow more than once in a short period (less than a month) may not display the dialog. The quota is an implementation detail that Google can change without notice. See In-App Reviews quotas.
Can I use this with non-native apps (Flutter, React Native, Expo)?
Yes. Use a platform-specific plugin to call the native review API — for example, in_app_review for Flutter or StoreReview for Expo. The OneSignal in-app message and click listener work the same way regardless of framework.In-app click actions
Configure URL, permission prompt, tag, outcome, and custom click actions on in-app message elements.
Tags
Tag users based on behavior to build segments for targeted messaging.