# contact.updated

> Fires when a contact is successfully updated.

The `contact.updated` event fires whenever a **contact is successfully updated** — for example when its name changes or it is subscribed or unsubscribed.

Compare `data.updated_at` against `data.created_at` to tell a fresh contact from an edited one.

```json
{
  "type": "contact.updated",
  "created_at": "2026-06-11T23:47:56.678Z",
  "data": {
    "id": "e169aa45-1ecf-4183-9955-b1499d5701d3",
    "audience_id": "78261eea-8f8b-4381-83c6-79fa7120f1cf",
    "segment_ids": ["78261eea-8f8b-4381-83c6-79fa7120f1cf"],
    "created_at": "2026-06-10T15:11:54.110Z",
    "updated_at": "2026-06-11T23:47:56.678Z",
    "email": "jordan.lee@example.com",
    "first_name": "Jordan",
    "last_name": "Lee",
    "unsubscribed": false
  }
}
```

**Payload**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `type` | string | No | The event type that triggered the webhook. |
| `created_at` | string | No | ISO 8601 timestamp when the webhook event was created. |
| `data` | object | No | Event-specific data. The fields below live inside this object. |
| `data.id` | string | No | Unique identifier for the contact. |
| `data.audience_id` | string | No | Identifier of the audience this contact belongs to. |
| `data.segment_ids` | string[] | No | Segment IDs the contact belongs to. |
| `data.created_at` | string | No | ISO 8601 timestamp when the contact was created. |
| `data.updated_at` | string | No | ISO 8601 timestamp when the contact was last updated. |
| `data.email` | string | No | Contact's email address. |
| `data.first_name` | string | No | Contact's first name. |
| `data.last_name` | string | No | Contact's last name. |
| `data.unsubscribed` | boolean | No | Whether the contact has unsubscribed from all your emails. |

> **Note:** This is one of several events MailBlastr can deliver. See the full list of [webhook event types](https://www.mailblastr.com/docs/webhooks/events).
