---
title: "Update customer contact"
method: PATCH
path: "/customer-contacts/{id}"
tags: ["Customer Contacts"]
---

# Update customer contact

`PATCH /customer-contacts/{id}`

Partially update a customer contact. Only provided fields will be updated.

- **Omitted fields**: Not modified (current value preserved)
- **Provided fields**: Updated to the new value
- **Null values**: Clear the field (set to null) where applicable

When updating contactInfo, the underlying Contact record is updated.

## Path parameters

- `id` string, required

## Request body

- CustomerContactPatch — Partial contact update. All fields are optional. - **Omitted fields**: Not modified (current value preserved) - **Provided fields**: Updated to the new value - **Null values**: Clear the field (set to null) where applicable Note: customerId cannot be updated after creation.
  - `name` string — Contact person's name (should match contactInfo.name if updating both)
  - `contactInfo` ContactInfoPatch — Partial contact information update. All fields are optional. - **Omitted fields**: Not modified (current value preserved) - **Provided fields**: Updated to the new value - **Null values**: Clear the field (set to null) where applicable
    - `name` string — Contact person's full name
    - `email` string, email, nullable — Email address
    - `phoneNumber` string, nullable — Phone number
    - `title` string, nullable — Job title or position
  - `phoneExtension` string, nullable — Phone extension
  - `isPrimary` boolean — Whether this is the primary contact
  - `contactTypes` CustomerContactType[], nullable — Types/roles this contact serves (replaces entire array)
  - `notifications` CustomerContactNotificationType[], nullable — Notification types (replaces entire array)
  - `key` string, nullable — Client-defined reference identifier

## Response `200`

Customer contact updated successfully

- CustomerContact
  - `object` 'CUSTOMER_CONTACT' — Object type identifier
  - `id` string, uuid, required — Unique contact identifier
  - `customer` CustomerReference, required — Enhanced reference to a customer resource (returned in responses). Includes full customer details in addition to id/key. Note: Does NOT include nested references (paymentTerm, contacts, etc.) to prevent recursion. Maximum nesting depth: 1 level.
    - `id` string, uuid, required — Customer UUID
    - `key` string, nullable — Client-defined reference ID if set
    - `name` string, required — Customer company name
    - `friendlyId` string, required — Human-readable customer identifier
    - `status` 'PROSPECT' | 'ACTIVE' | 'INACTIVE' | 'CHURNED', required — Customer status
    - `phoneNumber` string, nullable — Primary phone number
    - `website` string, nullable — Customer website URL
    - `createdAt` string, date-time, required — When the customer was created
    - `updatedAt` string, date-time, required — When the customer was last updated
    - `deletedAt` string, date-time, nullable — When the customer was soft deleted (null if active)
  - `name` string, required — Contact person's name (denormalized from ContactInfo for convenience)
  - `contactInfo` ContactInfo, required — Contact information details (nested, without id). This is an embedded object representing a Contact record. The id is managed internally and not exposed in the API.
    - `name` string, required — Contact person's full name
    - `email` string, email, nullable — Email address
    - `phoneNumber` string, nullable — Phone number
    - `title` string, nullable — Job title or position
  - `phoneExtension` string, nullable — Phone extension specific to this contact role
  - `isPrimary` boolean, required — Whether this is the primary contact for the customer
  - `contactTypes` CustomerContactType[], nullable — Types/roles this contact serves
  - `notifications` CustomerContactNotificationType[], nullable — Shipment notification types to send to this contact
  - `invitedUser` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
    - `id` string, uuid, required — User UUID
    - `key` string, nullable — Client-defined reference ID if set
    - `email` string, email, required — User's email address
    - `name` string, nullable — User's full name
    - `phone` string, nullable — User's phone number
    - `phoneExt` string, nullable — Phone extension
    - `status` 'PENDING' | 'ACTIVE' | 'INACTIVE', required — User account status
    - `avatarId` string, uuid, nullable — Profile avatar document ID
    - `createdAt` string, date-time, required — When the user was created
    - `updatedAt` string, date-time, required — When the user was last updated
    - `deletedAt` string, date-time, nullable — When the user was soft deleted (null if active)
  - `deletedBy` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
    - `id` string, uuid, required — User UUID
    - `key` string, nullable — Client-defined reference ID if set
    - `email` string, email, required — User's email address
    - `name` string, nullable — User's full name
    - `phone` string, nullable — User's phone number
    - `phoneExt` string, nullable — Phone extension
    - `status` 'PENDING' | 'ACTIVE' | 'INACTIVE', required — User account status
    - `avatarId` string, uuid, nullable — Profile avatar document ID
    - `createdAt` string, date-time, required — When the user was created
    - `updatedAt` string, date-time, required — When the user was last updated
    - `deletedAt` string, date-time, nullable — When the user was soft deleted (null if active)
  - `key` string, nullable — Client-defined reference identifier
  - `createdAt` string, date-time, required — When the contact was created
  - `deletedAt` string, date-time, nullable — When the contact was soft deleted (null if active)

## Other responses

- `400` — Bad request - invalid input
- `401` — Unauthorized - invalid or missing access token
- `404` — Resource not found
- `409` — Conflict - resource already exists or constraint violation
- `500` — Internal server error

---

[API](https://skmtc.net/mvmnt/apis/mvmnt-api.md) · [All operations](https://skmtc.net/mvmnt/apis/mvmnt-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mvmnt/mvmnt-api/versions/c44e5e7a4256/schema)
