> 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/feedback-capture-on-negative-rating.md).

# Feedback capture on negative rating

Keep 1- and 2-star reviews out of the App Store by catching them inside the app and routing the user to a feedback form instead.

**Use this when** you run the rate-review positive-moment flow and want to do something useful with the unhappy branch. **Don't use this when** you do not have an internal channel to read and answer the feedback; silent intake makes the user angrier.

## Goal

If you only ask happy users to rate you, you never hear from the unhappy ones — and they eventually leave 1-star reviews anyway, just with less data for you. This recipe catches the "not really" branch of the rating popup, opens a short in-app form, captures the complaint with a reason category, and closes the loop with a confirmation. The public rating is protected and you now have actionable signal.

## Setup

### In the dashboard

* This recipe is the negative branch of [rate-review-positive-moment](/recipes/rate-review-positive-moment.md). It reuses that recipe's sentiment popup.
* When the user taps "Not really" in the popup, the app opens `yourapp://feedback/form`. No additional campaign is needed for this step — the app handles the branch locally.
* Create a follow-up campaign `feedback-thanks` triggered by the event `FeedbackSubmitted`.
  * Action: fire deeplink `yourapp://popup/feedback-thanks` — the app renders a "Thanks — we'll get back to you" popup with a single OK button (see [Custom popups](/user-guide/custom-popups.md)).
  * Frequency: once per submission.
* Do not fire the native store prompt on this branch under any circumstance.

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

* Register the `yourapp://feedback/form` deeplink to open an in-app form with a reason selector (bug, missing feature, price, other) and a free-text field.
* On submit, send the payload to your support inbox or help-desk and fire:

  ```typescript
  await Amply.track({
    name: 'FeedbackSubmitted',
    properties: { reason: selectedReason, rating_bucket: 'low' }
  });
  ```
* Suppress the native rate-review call on this branch. The positive-moment recipe's branching already does that.

## How it runs

1. User hits a positive moment. The rating popup appears: "Enjoying the app?"
2. User taps "Not really".
3. The app opens `yourapp://feedback/form` locally — no campaign is involved in this step. The in-app form opens. The user picks "missing feature" and types one sentence.
4. App sends the payload to the support inbox. App fires `FeedbackSubmitted` with the reason.
5. `feedback-thanks` matches. The confirmation popup appears.
6. Support triages the feedback. If it is a bug the team can fix, the user is followed up through the same channel. The native store prompt was never called. The App Store rating stays intact.

## Metrics to watch

* Share of `PositiveSignal` firings that end in the negative branch. Rising share means something in the product got worse — this is now your canary.
* Feedback submission rate once the form opens. <30% means the form is too long or the moment is wrong.
* Reason-code distribution. This is the cheapest user-research feed in the product.
* 1- and 2-star review count in the public stores week-over-week.

## Related

* [Rate-review at a positive moment](/recipes/rate-review-positive-moment.md) — the other half of this flow
* [Custom popups](/user-guide/custom-popups.md) — building the confirmation popup
* [Managing deeplinks](/user-guide/managing-deeplinks.md) — registering the feedback form route
* [Tracking events](/developer-guide/tracking-events.md) — firing `FeedbackSubmitted` with the reason property
* [Handling deeplinks](/developer-guide/handling-deeplinks.md) — opening the form from the deeplink listener
* [AI-assisted integration](/getting-started/ai-assisted-integration.md) — describe this campaign in plain language and have your AI assistant build it
