Six types. Each is derived from consecutive observations, so the log is reproducible rather than asserted.
| Type | Fires when | Useful for |
|---|---|---|
| price.changed | Any observed price delta. | Repricing, analytics. |
| price.threshold_crossed | A watch condition is met. | Alerts, consumer apps. |
| availability.changed | Stock state moved. | Merchandising. Drives more decisions than price. |
| seller.changed | Buy-box or primary seller flipped. | Channel control. Usually precedes the price move. |
| policy.violated | Observed below your declared floor. | Enforcement, with evidence attached. |
| match.degraded | A mapping fell below trust. | Data quality. Nobody else ships this. |
{ "type": "price.changed",
"event_id": "evt_01JQ8Z3M4K", "seq": 88421,
"occurred_at": "2026-09-07T14:21:59Z",
"product_id": "prd_8Fk2xQ", "listing_id": "lst_2c81", "seller": "bestbuy",
"previous": { "price_minor": 31999, "observed_at": "2026-08-21T02:10:44Z" },
"current": { "price_minor": 19800, "observed_at": "2026-09-07T14:21:59Z" },
"source": { "channel": "direct_api", "confidence": 1.00 } }It is the only warning you get that a comparison has quietly started comparing two different products. Most integrations ignore it and then wonder why a competitor appeared to slash prices.