> For the complete documentation index, see [llms.txt](https://docs.amply.tools/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.amply.tools/recipes/rate-review-positive-moment.md).

# Rate review at a positive moment

Show the native rate-review prompt only to users who have just signaled satisfaction — not to everyone on session 3.

**Use this when** your store rating is dragged down by users asked at the wrong moment. **Don't use this when** you have no reliable "positive moment" event. Firing at a random session is no better than the stock prompt.

## Goal

The stock "rate us" prompt on session 3 pulls from the whole population, including frustrated users. Those users rate 1 and 2 stars. This recipe gates the native prompt behind a light custom popup that first asks "how's it going?" — and only triggers the store rating if the user says it is going well. The effect is a higher average store rating because you never invite the unhappy cohort to the store at all.

## Setup

### In the dashboard

* Create a campaign `rating-prompt-positive-moment`.
* Trigger: event `PositiveSignal` (a value moment you define — streak completed, goal hit, purchase confirmed).
* Conditions: `subscription_status != "new"` (avoid brand-new users), `store_rating_shown != true`, session count `>= 3`.
* Action: fire a deeplink to your in-app sentiment popup, e.g. `yourapp://popup/sentiment-check`. The popup asks "Enjoying the app?" with two buttons: "Yes" / "Not really". See [Custom popups](/user-guide/custom-popups.md) for how the popup-as-deeplink pattern works today.
* Branch on the popup result (handled in-app, not in the dashboard):
  * "Yes" → the app calls the native rate-review prompt.
  * "Not really" → the app opens `yourapp://feedback/form` (see [Feedback capture on negative rating](/recipes/feedback-capture-on-negative-rating.md)).
* Frequency: once per user, ever — enforced by the `store_rating_shown != true` condition in the audience, not a native frequency cap.

### In the app (engineering hand-off)

Note: `session_count` is not a built-in targeting attribute — the app must increment and set it as a custom property on each session start, e.g. `amply.setCustomProperty("session_count", n)`.

* Pick the single strongest "positive moment" in your product. Track it as one event, not many:

  ```swift
  amply.track("PositiveSignal", properties: ["source": "streak_7d"])
  ```
* Register a popup action that calls `SKStoreReviewController.requestReview()` on iOS or `ReviewManager` on Android when Amply asks.
* After the native prompt runs, mark the user:

  ```swift
  amply.setCustomProperty(key: "store_rating_shown", value: true)
  ```

## How it runs

1. User completes a 7-day streak. App fires `PositiveSignal`.
2. Amply evaluates event-triggered campaigns. The user has session count `5`, has never been asked, is not a new user. `rating-prompt-positive-moment` matches.
3. Custom popup appears: "Enjoying the app?"
4. User taps "Yes". Amply triggers the native rate-review prompt. The OS shows its store rating sheet.
5. User leaves a 5-star review. App sets `store_rating_shown = true`. The campaign never matches this user again.
6. Parallel path: if the user had tapped "Not really", the feedback deeplink fires and the native prompt is never called — the unhappy user never reaches the store.

## Metrics to watch

* Store rating distribution before and after rollout. Expect the 4-5 star share to rise and the 1-2 star share to fall.
* Popup "Yes" share. If it is <50%, the `PositiveSignal` event is triggering too broadly.
* Native prompt acceptance rate among those who said "Yes". This is the lift over the stock flow.
* Written review volume. You may see fewer total reviews but a higher average — that is the desired outcome.

## Related

* [Feedback capture on negative rating](/recipes/feedback-capture-on-negative-rating.md) — the "Not really" branch
* [Rate-review flows](/user-guide/rate-review-flows.md) — dashboard configuration for the native prompt
* [Custom popups](/user-guide/custom-popups.md) — building the "Enjoying the app?" popup
* [Tracking events](/developer-guide/tracking-events.md) — defining the `PositiveSignal` event
* [Sessions and events](/concepts/sessions-and-events.md) — when event-triggered campaigns evaluate
* [AI-assisted integration](/getting-started/ai-assisted-integration.md) — describe this campaign in plain language and have your AI assistant build it


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.amply.tools/recipes/rate-review-positive-moment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
