Docs
grovs.io Start for free

In-app message reporting

Read an in-app message's views, clicks and dismissals, and see exactly what the SDK counts as each.

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

Every in-app message has a report. Open it from Engage › In-App with Open report on the message's row.

The report

Pick a Period: Today (UTC), by hour, Last 7 days, Last 30 days or Last 90 days. Days are UTC. Numbers refresh at most once a minute.

MetricMeans
ViewsTimes the message was on screen. The hint below counts distinct devices
ClicksTimes someone acted on it: a button, or a tap on the message. The hint counts distinct devices
Click rateClicks divided by views
DismissalsTimes someone closed it without acting
Devices that may see itFor a segment message, the devices in its audience. Not shown for Everyone

Below the totals:

  • Over time charts views, clicks and dismissals by day, or by hour for today.
  • By platform splits them by iOS, Android and web.
  • Clicks by button shows clicks per button. Tap on the message counts taps on the message itself.

A message with a question shows Answers and Answer rate instead of clicks, plus an Answers tab. See Surveys and ratings. A message with a goal, control group or variants has an Experiment card. See Experiments.

What counts

The SDK reports three events in its normal event batches: in_app_viewed, in_app_clicked and in_app_dismissed. Because of batching, a view can take a while to appear, and an offline device reports when it reconnects.

A view

A view counts when the message is actually on screen, not when its trigger fires.

  • A message waiting out a delay or behind another message counts when it appears. If it no longer applies by then, it never appears and isn't counted.
  • A message that couldn't be drawn isn't counted and reports nothing.
  • A custom HTML message counts once its page is ready. A page not ready within 5 seconds is dropped and not counted.
  • Test messages are never counted.
  • Each view has its own id, so a batch sent twice counts once.

Every limit, such as "at most once a day", counts the views this device recorded.

A click

At most one click per view: the first action on the message.

TemplateCounts as the click
Templates with buttonsA tap on a button, or on the message when it has a tap action
Image-only templatesA tap on the picture
Custom HTMLThe first grovs.track() or grovs.open() call, including from a data-grovs-action="track" or ="open" element or a plain link. Closing doesn't count

The click is reported before the action runs, so it's recorded even if the action leaves the app.

A dismissal

A dismissal is a close without a click. The SDK records why:

ReasonWhen
close_buttonThe close button, the Escape key on the web, or grovs.close() in a custom HTML page
backdropA tap outside the message
swipeA swipe on a banner or card (iOS)
appYour app closed it through the SDK, or the page went away

Two closes aren't counted as Dismissals:

  • Screen rotation. A Portrait only or Landscape only message closes when the device turns. It's reported with reason orientation, since the person didn't dismiss it.
  • After an answer. Once a question is answered, any close counts as answered.

In custom HTML, a person can track an event (a click) and then close the page, so one view can have both a click and a dismissal.

Reading the numbers

  • Views and devices. Three views by one person is three views and one device. Device counts aren't people: someone with a phone and a laptop counts twice.
  • Control groups. Held-back people never see the message and add no views. The Experiment card compares them with viewers.
  • Edits. Editing a live message doesn't reset its report. Each click carries the revision it was shown with, so clicks on a since-removed button still count.
  • Ended messages keep their report.

The raw events are also in your analytics and the event stream, with the message's campaign_id, revision, template and, for clicks, button_id and action.

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