# Surveys and ratings

> Ask for a star rating or a choice in an in-app message, follow up with a comment or a store review, and read or export the answers.

Source: https://docs.grovs.io/docs/engagement/in-app-messages/surveys-and-ratings

An in-app message can ask one question in place of its buttons. Triggers, audience, limits, schedule and experiments work as usual.

| Kind        | People answer with              |
| ----------- | ------------------------------- |
| **Stars**   | 1 to 5 stars                    |
| **Choices** | One of 2 to 5 options you write |

After the answer, the message can ask for a comment, say thank you and, for stars, ask for an App Store review.

## Ask a question

### 1. Pick a template that can hold a question

Questions work in **Cover**, **Interstitial**, **Half interstitial**, **Header** and **Footer**. A five-star footer interrupts far less than a full-screen message.

**Alert**, image-only templates and **Custom HTML** can't ask questions.

For a head start, use **New message** › **Start from a template** › **Rate the app** or **Quick question**.

### 2. Write the question

In **Message**, under **What people can do**, choose **Answer a question**. The title and message are the question, such as "How was your first workout?".

Choose the **Kind of question**. For **Choices**, add two to five options with **Add choice**.

### 3. Choose what happens after the answer

Under **After the answer**:

| Answer     | Options                                                                 |
| ---------- | ----------------------------------------------------------------------- |
| Low stars  | **Nothing more**, or **Ask what could be better**                       |
| High stars | **Nothing more**, **Ask what they like**, or **Ask for a store review** |
| A choice   | **Nothing more**, or **Ask a follow-up question**                       |

You set where low stars end and high stars begin. An optional **Thank-you message** shows for two seconds before the message closes.

### 4. Choose whether it can be skipped

With **People can close it without answering** on, closing before answering counts as a dismissal, and the message can show again within its limits. Off, the message stays until answered.

## What the person sees

1. **One tap answers.** Tapping a star or option records the answer at once, before anything else, so it's kept even if they close the app.
2. **A comment, if you asked for one.** A text box, up to 500 characters, with **Send** and **Skip**. **Send** records the comment immediately. Skipping or closing records nothing more.
3. **Thanks, if you wrote it,** for two seconds.
4. **The store review prompt,** for high stars with **Ask for a store review**. It appears after the message closes, via `SKStoreReviewController` on iOS and the Play In-App Review API on Android. The store decides how often it actually shows. Skipped on the web. On Android the app must include `com.google.android.play:review-ktx`, or the SDK skips campaigns with a review step. See [App ratings on Android](https://docs.grovs.io/docs/sdk/android/in-app-messages#app-ratings).

> **Warning:** Apple's guidelines restrict prompting only happy users for reviews. The store step is off unless you choose it; decide whether it fits your app.

## People answer once

A person who answered never sees that message again, on any device once they're identified. A second answer from the same person is refused. To ask again, duplicate the message and launch the copy.

## Follow up on an answer

Each answer is also an `in_app_answered` event on the device, with `campaign_id`, `question_id`, `type` and `value` (the star count or the option's id). Trigger another message on it to follow up in the same session. For example, "Tell us more" for one or two stars:

| Trigger                                   | Filter                                                                |
| ----------------------------------------- | --------------------------------------------------------------------- |
| **An event is tracked** `in_app_answered` | `campaign_id` is your rating message's id, and `value` is less than 3 |

Answers are also events in your analytics, so segments can filter on them.

## Read the answers

Open the message's report and choose the **Answers** tab.

- ****What people answered**** shows how many people picked each star or option and, for stars, the **out of 5 on average** score.
- ****Comments**** lists comments newest first, 25 at a time. Filter with **All comments**, or **By stars** / **By answer**.

On the **Results** tab, a question message shows **Answers** and **Answer rate** (answers divided by views) instead of clicks.

If you remove an option after launch, its past answers keep their own row under the option's id, so counts still add up.

## Export the answers

**Export** downloads a CSV of the period on screen, one row per answer:

| Column       | Holds                                            |
| ------------ | ------------------------------------------------ |
| Date (local) | When they answered, in your computer's time zone |
| Answer       | The star count, or the option's text             |
| Comment      | Their comment, if any                            |
| User         | Their user identifier, when your app set one     |
| Platform     | `ios`, `android` or `web`                        |
| Country      | Where they answered from                         |
| App version  | The app version they used                        |

An export holds at most the newest 10,000 answers, and a period is at most 92 days. For more, export shorter periods.

## Related

- [Create an in-app message](https://docs.grovs.io/docs/engagement/in-app-messages/create-a-message)
- [Reporting](https://docs.grovs.io/docs/engagement/in-app-messages/reporting)
