Payload
string
required
The record that changed.
string
The object it belongs to.
string
The
prop_… id of the one property this delivery is about. Resolve it
against the object’s schema to get its key and name.any
The value before the change, in stored shape.
null means the field was
genuinely empty. The key being absent means no prior value could be read,
which is a different thing.any
The value after the change.
null means the field was cleared.object
The whole record after the change, keyed by property key, plus an
id key
holding the record id.Why record is there as well
Because it saves you a round trip in the common case. The changed field is named
by propertyId, and record gives you the state the record is now in, so a
handler that needs three fields to make a decision has them without calling back.
record here carries an id key, which
record.created does not. That
asymmetry comes from the emitters and is faithful to what is actually sent.Naming the property
propertyId is an id, not something to show a person. Read the object’s schema
once and cache the map:
Worth knowing
- Order is not guaranteed. Two changes to the same record can arrive out of
order, so
recordis the more trustworthy view of current state than replayingcurrentvalues in arrival order. If it matters, read the record back. - Bulk edits are suppressed, along with imports and AI property fills.
- Computed properties. A formula or rollup recalculating is not itself a
field write and does not reliably produce this event. Treat computed values in
recordas a snapshot rather than a trigger.