Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

review.created

Fires once per newly-seen review that passes your star filter. Carries the common envelope plus the fields below.

Payload fields

FieldTypeNotes
review_idstringStore-native, stable review id.
fingerprintstringhash(store + app_id + review_id): identity only. This is the event’s occurrence_id.
content_hashstringHash of title + body. Non-key, for your own edit detection; it never affects identity.
ratinginteger1–5.
titlestring | nullMay be absent.
bodystringThe review text.
authorstring | nullStore-provided display name.
app_versionstring | nullVersion reviewed, when the source provides it.
countrystringStorefront/locale the review was polled from (lowercase ISO-3166 alpha-2).

The enrichment object

An optional enrichment object may accompany a review with extra context: overall sentiment, topic tags, and a short English summary. It may be null, so treat it as optional and code defensively.

FieldTypeNotes
languagestringDetected language of the review text (ISO 639-1), independent of the storefront.
sentimentenumpositive, neutral, negative, or mixed.
themesarrayOne or more topic tags from the vocabulary below.
is_feature_requestboolThe review asks for a feature.
feature_slugstring | nullStable key for the requested feature; the same feature maps to the same slug across languages. null unless is_feature_request.
feature_phrasestring | nullShort label for the requested feature. null unless is_feature_request.
is_bug_reportboolThe review reports a bug.
severityenumlow, medium, or high. high = crash, data loss, payment failure, security, or explicit churn.
mentions_competitorboolThe review names another product.
competitor_namedstring | nullThe named product. null unless mentions_competitor.
other_topicstring | nullShort phrase for a topic outside the vocabulary. Set only when themes includes other; null otherwise.
summary_enstringA short English summary of the review (≤~20 words), written in English whatever the review’s language.

themes is drawn from a fixed vocabulary:

stability_crash, performance, battery, data_loss, sync, login_account, billing_payment, refund, pricing_value, ads, ui_ux, onboarding, bug_general, notifications, privacy_security, customer_support, content_quality, compatibility, localization, update_regression, praise_general, comparison, other.

sentiment, themes, is_feature_request, is_bug_report, and severity are independent axes: a review can be positive, about sync, and a feature request at once.

Filtering

A hook configures min_stars / max_stars (each 1–5, default 1–5). The filter gates delivery, never dedupe. A filtered-out review is still recorded as seen, so widening the filter later never replays it. See Filters & storefronts.

Example

{
  "event_id": "sample-review-event-id",
  "occurrence_id": "sample-fingerprint",
  "event_type": "review.created",
  "store": "apple",
  "app_id": "284882215",
  "subscriber_id": "zapier-sample",
  "occurred_at": "2026-06-01T12:00:00Z",
  "observed_at": "2026-06-01T12:05:00Z",
  "schema_version": 2,
  "review_id": "rev-1",
  "fingerprint": "sample-fingerprint",
  "content_hash": "sample-content-hash",
  "rating": 2,
  "title": "Crashes and lost my notes",
  "body": "Loved the redesign, but it crashes after the latest update and I lost my notes. Please add an offline mode like Evernote.",
  "author": "jane",
  "app_version": "3.2.1",
  "country": "us",
  "enrichment": {
    "language": "en",
    "sentiment": "mixed",
    "themes": ["stability_crash", "update_regression", "data_loss"],
    "is_feature_request": true,
    "feature_slug": "offline_mode",
    "feature_phrase": "Offline mode",
    "is_bug_report": true,
    "severity": "high",
    "mentions_competitor": true,
    "competitor_named": "Evernote",
    "other_topic": null,
    "summary_en": "Crashes and loses notes after the update; wants an offline mode."
  }
}

Editing a review’s body does not re-fire review.created; identity excludes content. Use content_hash if you want to detect edits yourself.

You can fetch a synthetic example of this shape any time from GET /api/v1/sample?event_type=review.created.