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

rating.dropped

Fires when an app’s aggregate rating falls by at least a delta you set, versus the last observed aggregate. Carries the common envelope plus the fields below.

Payload fields

FieldTypeNotes
transition_idstringhash(store + app_id + country + current_rating + rating_count): identity. This is the event’s occurrence_id. Deterministic, so re-observing the same aggregate (in the same storefront) dedupes.
previous_ratingfloatLast observed aggregate.
current_ratingfloatNewly observed aggregate.
deltafloatcurrent − previous (negative on a drop).
rating_countintegerTotal ratings backing the current aggregate.
countrystringStorefront country of the dropped aggregate. Added 2026-07-03 (additive); empty on drops emitted before then.

Rules

A hook sets a delta (0–4); it is required.

  • delta: fire when the rating falls by at least that much versus the last observation.

The first time Rustle observes an app’s rating it seeds the baseline silently (no event), so you only hear about movement from there on. Re-observing an unchanged aggregate never re-fires. See Filters & storefronts.

Example

{
  "event_id": "sample-rating-event-id",
  "occurrence_id": "sample-transition",
  "event_type": "rating.dropped",
  "store": "google",
  "app_id": "com.example.app",
  "subscriber_id": "zapier-sample",
  "occurred_at": "2026-06-01T12:00:00Z",
  "observed_at": "2026-06-01T12:05:00Z",
  "schema_version": 2,
  "transition_id": "sample-transition",
  "previous_rating": 4.2,
  "current_rating": 3.9,
  "delta": -0.3,
  "rating_count": 12345,
  "country": "us",
  "enrichment": null
}

A rating.dropped event carries no enrichment; that block applies to reviews, so here it is always null.

You can fetch a synthetic example any time from GET /api/v1/sample?event_type=rating.dropped.