Contacts events
Outbound webhook events for contacts: when each one fires and the exact JSON payload Centerfy POSTs to your URL.
10 events. Subscribe to them in Settings → API & Webhooks → Webhooks or with the outbound webhook subscription endpoints. Delivery, authentication headers and the common envelope are described in the webhooks overview.
| Event | When it fires |
|---|---|
contact.created | A new contact is added to this sub-account — from any source (CRM, agent, inbound webhook, sync). |
contact.updated | A contact’s fields change. A tag-only change is NOT sent here — it fires the tag events below instead. |
contact.deleted | A contact is deleted. The payload carries the contact’s last known state. |
contact.tag_added | One or more tags are added to a contact — from any source. added_tags lists exactly what was added. |
contact.tag_removed | One or more tags are removed from a contact — from any source. removed_tags lists exactly what was removed. |
contact.unsubscribed | A contact is unsubscribed from SMS and/or email. channels lists which ones were just turned off. |
contact.resubscribed | A contact is subscribed again to SMS and/or email. channels lists which ones were turned back on. |
contact.assigned | A contact is assigned to a team member, reassigned, or unassigned (assigned_user_id is null when unassigned). |
contact.lead_score_changed | A contact’s lead score changes — from scoring rules or engagement. |
contact.custom_fields_updated | One or more of a contact’s custom field values change. changed_fields lists the keys that changed. |
contact.created
Contact created. A new contact is added to this sub-account — from any source (CRM, agent, inbound webhook, sync).
{
"event": "contact.created",
"occurred_at": "2026-06-20T14:30:00.000Z",
"sub_account_id": "<sub account uuid>",
"organization_id": "<organization uuid>",
"contact": {
"id": "<uuid>",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+14155550123",
"address": "123 Main St, San Francisco, CA",
"tags": [
"lead",
"website"
],
"lead_source": "inbound_webhook",
"created_at": "2026-06-19T10:00:00.000Z",
"updated_at": "2026-06-20T14:30:00.000Z"
}
}contact.updated
Contact updated. A contact’s fields change. A tag-only change is NOT sent here — it fires the tag events below instead.
{
"event": "contact.updated",
"occurred_at": "2026-06-20T14:30:00.000Z",
"sub_account_id": "<sub account uuid>",
"organization_id": "<organization uuid>",
"contact": {
"id": "<uuid>",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+14155550123",
"address": "123 Main St, San Francisco, CA",
"tags": [
"lead",
"website"
],
"lead_source": "inbound_webhook",
"created_at": "2026-06-19T10:00:00.000Z",
"updated_at": "2026-06-20T14:30:00.000Z"
}
}contact.deleted
Contact deleted. A contact is deleted. The payload carries the contact’s last known state.
{
"event": "contact.deleted",
"occurred_at": "2026-06-20T14:30:00.000Z",
"sub_account_id": "<sub account uuid>",
"organization_id": "<organization uuid>",
"contact": {
"id": "<uuid>",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+14155550123",
"address": "123 Main St, San Francisco, CA",
"tags": [
"lead",
"website"
],
"lead_source": "inbound_webhook",
"created_at": "2026-06-19T10:00:00.000Z",
"updated_at": "2026-06-20T14:30:00.000Z"
}
}contact.tag_added
Tag added. One or more tags are added to a contact — from any source. added_tags lists exactly what was added.
{
"event": "contact.tag_added",
"occurred_at": "2026-06-20T14:30:00.000Z",
"sub_account_id": "<sub account uuid>",
"organization_id": "<organization uuid>",
"added_tags": [
"vip"
],
"contact": {
"id": "<uuid>",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+14155550123",
"address": "123 Main St, San Francisco, CA",
"tags": [
"lead",
"website",
"vip"
],
"lead_source": "inbound_webhook",
"created_at": "2026-06-19T10:00:00.000Z",
"updated_at": "2026-06-20T14:30:00.000Z"
}
}contact.tag_removed
Tag removed. One or more tags are removed from a contact — from any source. removed_tags lists exactly what was removed.
{
"event": "contact.tag_removed",
"occurred_at": "2026-06-20T14:30:00.000Z",
"sub_account_id": "<sub account uuid>",
"organization_id": "<organization uuid>",
"removed_tags": [
"website"
],
"contact": {
"id": "<uuid>",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+14155550123",
"address": "123 Main St, San Francisco, CA",
"tags": [
"lead"
],
"lead_source": "inbound_webhook",
"created_at": "2026-06-19T10:00:00.000Z",
"updated_at": "2026-06-20T14:30:00.000Z"
}
}contact.unsubscribed
Contact unsubscribed. A contact is unsubscribed from SMS and/or email. channels lists which ones were just turned off.
{
"event": "contact.unsubscribed",
"occurred_at": "2026-06-20T14:30:00.000Z",
"sub_account_id": "<sub account uuid>",
"organization_id": "<organization uuid>",
"channels": [
"sms"
],
"contact": {
"id": "<uuid>",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+14155550123",
"address": "123 Main St, San Francisco, CA",
"tags": [
"lead",
"website"
],
"lead_source": "inbound_webhook",
"created_at": "2026-06-19T10:00:00.000Z",
"updated_at": "2026-06-20T14:30:00.000Z"
}
}contact.resubscribed
Contact resubscribed. A contact is subscribed again to SMS and/or email. channels lists which ones were turned back on.
{
"event": "contact.resubscribed",
"occurred_at": "2026-06-20T14:30:00.000Z",
"sub_account_id": "<sub account uuid>",
"organization_id": "<organization uuid>",
"channels": [
"email"
],
"contact": {
"id": "<uuid>",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+14155550123",
"address": "123 Main St, San Francisco, CA",
"tags": [
"lead",
"website"
],
"lead_source": "inbound_webhook",
"created_at": "2026-06-19T10:00:00.000Z",
"updated_at": "2026-06-20T14:30:00.000Z"
}
}contact.assigned
Contact assigned. A contact is assigned to a team member, reassigned, or unassigned (assigned_user_id is null when unassigned).
{
"event": "contact.assigned",
"occurred_at": "2026-06-20T14:30:00.000Z",
"sub_account_id": "<sub account uuid>",
"organization_id": "<organization uuid>",
"assigned_user_id": "<uuid>",
"previous_assigned_user_id": null,
"contact": {
"id": "<uuid>",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+14155550123",
"address": "123 Main St, San Francisco, CA",
"tags": [
"lead",
"website"
],
"lead_source": "inbound_webhook",
"created_at": "2026-06-19T10:00:00.000Z",
"updated_at": "2026-06-20T14:30:00.000Z"
}
}contact.lead_score_changed
Lead score changed. A contact’s lead score changes — from scoring rules or engagement.
{
"event": "contact.lead_score_changed",
"occurred_at": "2026-06-20T14:30:00.000Z",
"sub_account_id": "<sub account uuid>",
"organization_id": "<organization uuid>",
"lead_score": 42,
"previous_lead_score": 35,
"contact": {
"id": "<uuid>",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+14155550123",
"address": "123 Main St, San Francisco, CA",
"tags": [
"lead",
"website"
],
"lead_source": "inbound_webhook",
"created_at": "2026-06-19T10:00:00.000Z",
"updated_at": "2026-06-20T14:30:00.000Z"
}
}contact.custom_fields_updated
Custom fields updated. One or more of a contact’s custom field values change. changed_fields lists the keys that changed.
{
"event": "contact.custom_fields_updated",
"occurred_at": "2026-06-20T14:30:00.000Z",
"sub_account_id": "<sub account uuid>",
"organization_id": "<organization uuid>",
"changed_fields": [
"budget"
],
"custom_field_values": {
"budget": 5000,
"industry": "Retail"
},
"previous_custom_field_values": {
"budget": 2500,
"industry": "Retail"
},
"contact": {
"id": "<uuid>",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+14155550123",
"address": "123 Main St, San Francisco, CA",
"tags": [
"lead",
"website"
],
"lead_source": "inbound_webhook",
"created_at": "2026-06-19T10:00:00.000Z",
"updated_at": "2026-06-20T14:30:00.000Z"
}
}