Commerce CensusContactRequest access

API / Objects

The Event object

Events are derived from consecutive observations, never written independently — so the log is reproducible from the store rather than asserted. Six types, one uniform shape, replayable by cursor.

Fields

FieldTypeNotes
event_id ·alwaysstringAlso the webhook-id and your idempotency key.
seq ·alwaysintMonotonic. Use as the replay cursor.
type ·alwaysenumprice.changed | price.threshold_crossed | availability.changed | seller.changed | policy.violated | match.degraded.
occurred_at ·alwaystimestampThe observation time that produced it.
previous / currentobjectBoth sides of the change, always.
sourceobjectProvenance of the observation behind it.
JSON
{
  "event_id": "evt_01JQ8Z3M4K", "seq": 88421,
  "type": "price.changed",
  "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 }
}

Nuances

match.degraded deserves a handler

It is the only warning that a comparison has quietly started comparing two different products. Most integrations ignore it and then wonder why a competitor appeared to slash prices overnight.

Related

Observation · Watch