# contact.field_changed

A contact custom field changed value; `field` is the field slug.

### When it fires

Once per custom field whose value a write changed. Writing the current value fires nothing.

### Payload notes

`previousValue` is `null` when the field was not set. `value` is `null` when it was removed.




**Payload for `contact.field_changed`:**

- **test** `boolean`: Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
- **id** (required) `string`: Event id, the dedupe key.
- **profiles**: `WebhookProfiles` - See schema definition
- **event** (required) `string`: No description - one of: contact.field_changed
- **timestamp** (required) `string` (date-time): No description
- **contact** (required) `object`: 
  - **id** `string`: Zernio contact id.
- **field** (required) `string`: Custom field slug.
- **previousValue** (required): Value before the write; null when the field was not set.
- **value** (required): Value after the write; null when the field was removed.
- **source** (required) `string`: Who wrote the field: the API or dashboard, a workflow set_field node, or an automation. - one of: api, workflow, automation