Docs
grovs.io Start for free

In-app messages

Show a banner, card, full-screen message or alert inside your app or website the moment something happens.

All Cloud plans and self-hosted Enterprise · Requires iOS SDK 3.1.0, Android SDK 3.1.0, Web SDK 2.1.0

In-app messages show inside your app or website while people use it: on app open, on a screen view, or when a tracked event happens. Use them for announcements, offers, update prompts, push permission primers, ratings and short surveys.

Create them under Engage › In-App. The SDK downloads eligible messages ahead of time and decides on the device when to show one, so a message appears the instant its trigger fires, with no network call.

Formats

Pick a template in the Message step.

TemplateLooks likeBlocks the app
CoverFills the whole screenYes
InterstitialA card in the middle of the screenYes
Half interstitialA smaller card in the middleYes
HeaderA banner at the topNo
FooterA banner at the bottomNo
AlertThe system alert on iOS, a styled dialog on the web. Text onlyYes
Cover imageImage only, full screenYes
Interstitial imageImage only, centredYes
Half interstitial imageImage onlyYes
Custom HTMLYour own page, full screen, as a card or as a banner. See Custom HTMLDepends on the layout

Text templates have a title, a message, an optional image, up to two buttons and an optional tap action on the message. Image-only templates show one picture and act on a tap.

Images are PNG, JPEG or GIF, up to 1 MB. You can add a separate landscape picture; otherwise the portrait one is used.

Header and footer banners leave the app usable underneath. Every other template covers the app until closed.

Alerts

Alerts are for short messages:

FieldLimit
Title80 characters
Message300 characters
Each button label30 characters

Alerts have no image, question or tap action. An alert with no buttons gets a Close button. An alert people can't dismiss needs at least one button.

Orientation

Set Orientation to Any orientation, Portrait only or Landscape only. A single-orientation message shows only while the screen is held that way. If the device turns while it's showing, it closes, and that close isn't counted as a dismissal. The SDK never rotates the screen.

On the web, a window wider than it is tall counts as landscape, so most desktop browsers are landscape.

How messages reach a device

  1. You launch. A message for everyone goes live at once, or at its start time. A segment message first shows Preparing audience while grovs resolves the segment.
  2. The device syncs. At every session start, the SDK fetches the messages this person may see and stores them with their images.
  3. A trigger fires. The app opens, a screen is viewed or an event is tracked. The SDK checks every stored message's triggers, device conditions, schedule and limits, and shows the highest priority one.
  4. The SDK reports back. Views, clicks and dismissals go out with the SDK's normal event batches.

When a device syncs

MomentiOSWeb
Session startYes. An "app is opened" trigger waits up to 2 seconds for this sync, then uses what's storedYes, on every page load
Back in the foregroundYes, unless it synced in the last minuteYes, unless it synced in the last minute
While in useWith the next event once 15 minutes have passed since the last syncEvery 15 minutes while the tab is visible
After a changeEvery event batch response says whether anything changed. If so, the SDK syncs within 10 secondsSame

A launch, edit, pause or end reaches a device in use usually within a minute, and at most about 15 minutes on an idle device, and every other device the next time it opens.

Start and end times are applied on the device, so scheduled messages start and stop on time without a new sync.

A device that hasn't synced for 48 hours shows nothing until it syncs again. After 14 days without a sync, it deletes its stored messages.

Segment audiences

Segment membership is refreshed every hour. People who join see the message within about an hour, and people who leave stop seeing it within about an hour.

The audience is fixed at launch. If you later edit the segment, the report says so. Use Update audience to switch the message to the segment as it is now.

SDK requirements

PlatformMinimumSet up
iOSiOS SDK 3.1.0In-app messages on iOS
WebWeb SDK 2.1.0In-app messages on the web
AndroidAndroid SDK 3.1.0In-app messages on Android
FlutterFlutter plugin 3.2.0In-app messages on Flutter
React NativeReact Native SDK 3.1.0In-app messages on React Native
UnityUnity package 1.0.0In-app messages on Unity

Older SDKs and unsupported platforms show no messages and report nothing.

Ask for push permission, Ask for an app rating and Open the app's store page only work in apps. Web visitors never see a message that uses one.

Project switches and limits

WhatLimit
Running messages per project50
Segments targeted at once per project20, shared with journeys
Message size16 KB, not counting a custom HTML page

In Engagement Settings:

  • In-app messages turns every message in the project off at once. Messages keep their state, and devices in use stop showing them usually within a minute, and at most about 15 minutes on an idle device.
  • Limit on in-app messages together caps how many messages one device shows per visit and per day, across all messages. Default: 10 each. A message can opt out with Not held back by the project limit.
  • Control group holds back up to 20% of people from every in-app message, dashboard push and journey, to measure what messaging does overall.

Automate it

Create, test, launch, pause and end messages and read their reports from your server with the In-app messages API.

Last updated 2026-10-26
Was this page helpful?