---
title: "Update a contact"
method: PATCH
path: "/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}"
tags: ["Contacts API"]
---

# Update a contact

`PATCH /public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}`

## Request

- Base URL: `https://app.chatwoot.com`
- URL: `https://app.chatwoot.com/public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}`
- Auth: none required

Update a contact's attributes

## Request body

- PublicContactCreateUpdatePayload
  - `identifier` string: External identifier of the contact
  - `identifier_hash` string: Identifier hash prepared for HMAC authentication
  - `email` string: Email of the contact
  - `name` string: Name of the contact
  - `phone_number` string: Phone number of the contact
  - `avatar` string, binary: Send the form data with the avatar image binary or use the avatar_url
  - `custom_attributes` object: Custom attributes of the customer

## Response `200`

Success

- PublicContactRecord: Full serialized contact record returned when the public API renders a Contact model directly.
  - `id` integer: Id of the contact
  - `name` string, nullable: Name of the contact when available
  - `email` string, nullable: Email of the contact
  - `phone_number` string, nullable: Phone number of the contact
  - `identifier` string, nullable: Identifier of the contact
  - `blocked` boolean: Whether the contact is blocked
  - `additional_attributes` object, nullable: Additional attributes of the contact when present
  - `custom_attributes` object, nullable: Custom attributes of the contact when present
  - `contact_type` string, nullable: Contact type of the contact when available
  - `country_code` string, nullable: Country code of the contact
  - `last_activity_at` string, nullable: Last activity timestamp of the contact in ISO 8601 format
  - `created_at` string, nullable: Created timestamp of the contact in ISO 8601 format
  - `updated_at` string, nullable: Updated timestamp of the contact in ISO 8601 format
  - `last_name` string, nullable: Last name of the contact
  - `middle_name` string, nullable: Middle name of the contact
  - `location` string, nullable: Location of the contact
  - `account_id` integer: Account id of the contact
  - `company_id` integer, nullable: Company id of the contact
  - `label_list` string[]: Labels applied to the contact

## Other responses

- `401`: Unauthorized

## Changes

- **2026-03-19** `9d0afdc7de05`: 2 breaking, 2 warning, 16 info
  - the response property `email` became nullable for the status `200`
  - the response property `name` became nullable for the status `200`
  - removed the optional property `pubsub_token` from the response with the `200` status
  - removed the optional property `source_id` from the response with the `200` status
  - …16 more

[Operation history](https://skmtc.dev/chatwoot/apis/chatwoot-3/changes/public/api/v1/inboxes/:inbox_identifier/contacts/:contact_identifier/patch.md)

---

[API](https://skmtc.dev/chatwoot/apis/chatwoot-3.md) - [All operations](https://skmtc.dev/chatwoot/apis/chatwoot-3/llms.txt) - [OpenAPI document](https://skmtc.dev/chatwoot/apis/chatwoot-3/revisions/024ce1ca0eab?raw)
