> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Close CRM: Close Update Contact

> Update an existing person contact in Close CRM by id: change their name, job title, email addresses, phone numbers or custom fields.

Update an existing person contact in Close CRM by id: change their name, job title, email addresses, phone numbers or custom fields.

> [!NOTE]
>
> Tool ID: `close_update_contact`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'close_update_contact',
  {
    "id": "id_123"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline run close_update_contact --input '{
  "id": "id_123"
}'
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": {
    "created_by": "example",
    "date_created": "2026-01-15T12:00:00Z",
    "date_updated": "2026-01-15T12:00:00Z"
  }
}
```

Use `deepline describe close_update_contact --json` for the latest machine-readable contract.

## Input reference

Change an existing Close CRM contact by id. Send only fields to change. omitted fields remain unchanged. Supply the complete email, phone and URL lists you intend to store. Changing lead\_id moves the contact to another company lead. This writes CRM data. Recover an uncertain execution before repeating it.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.id` | `string` | Yes | — | — |
| `payload._fields` | `string` | No | — | Comma-separated list of fields to include in the response. |
| `payload.emails` | `array` | No | — | Maximum items: 100. |
| `payload.lead_id` | `string` | No | — | — |
| `payload.name` | `string` | No | — | Maximum length: 1000. |
| `payload.phones` | `array` | No | — | Maximum items: 100. |
| `payload.timezone` | `string` | No | — | IANA timezone identifier |
| `payload.title` | `string` | No | — | Maximum length: 1000. |
| `payload.urls` | `array` | No | — | Maximum items: 100. |
| `payload.custom_fields` | `record` | No | — | Map Close custom field ids (cf\_...) to values. null clears a value. Add .add or .remove to a field id to modify a multi-value field. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Change an existing Close CRM contact by id. Send only fields to change; omitted fields remain unchanged. Supply the complete email, phone and URL lists you intend to store. Changing lead_id moves the contact to another company lead. This writes CRM data. Recover an uncertain execution before repeating it.",
    "properties": {
      "id": {
        "type": "string"
      },
      "_fields": {
        "type": "string",
        "description": "Comma-separated list of fields to include in the response."
      },
      "emails": {
        "type": [
          "array",
          "null"
        ],
        "maxItems": 100,
        "items": {
          "type": "object",
          "required": [
            "email"
          ],
          "properties": {
            "email": {
              "type": "string",
              "format": "email"
            },
            "type": {
              "type": "string"
            }
          },
          "additionalProperties": false
        }
      },
      "lead_id": {
        "type": [
          "null",
          "string"
        ]
      },
      "name": {
        "type": [
          "null",
          "string"
        ],
        "maxLength": 1000
      },
      "phones": {
        "type": [
          "array",
          "null"
        ],
        "maxItems": 100,
        "items": {
          "type": "object",
          "properties": {
            "phone": {
              "type": [
                "null",
                "string"
              ],
              "description": "Phone number in E.164 format"
            },
            "type": {
              "type": "string"
            }
          },
          "additionalProperties": false
        }
      },
      "timezone": {
        "type": [
          "null",
          "string"
        ],
        "description": "IANA timezone identifier"
      },
      "title": {
        "type": [
          "null",
          "string"
        ],
        "maxLength": 1000
      },
      "urls": {
        "type": [
          "array",
          "null"
        ],
        "maxItems": 100,
        "items": {
          "type": "object",
          "required": [
            "url"
          ],
          "properties": {
            "type": {
              "type": "string"
            },
            "url": {
              "type": "string",
              "format": "uri"
            }
          },
          "additionalProperties": false
        }
      },
      "custom_fields": {
        "type": "object",
        "description": "Map Close custom field ids (cf_...) to values; null clears a value. Add .add or .remove to a field id to modify a multi-value field.",
        "propertyNames": {
          "pattern": "^cf_[A-Za-z0-9]+(?:\\.(?:add|remove))?$"
        },
        "additionalProperties": {
          "not": {
            "type": "object"
          }
        }
      }
    },
    "required": [
      "id"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.created_by` | `string \| null` | No | — | — |
| `result.data.date_created` | `string` | No | — | Format: `date-time`. |
| `result.data.date_updated` | `string` | No | — | Format: `date-time`. |
| `result.data.display_name` | `string` | No | — | — |
| `result.data.emails` | `array` | No | — | — |
| `result.data.emails[].email` | `string` | Yes | — | — |
| `result.data.emails[].is_unsubscribed` | `boolean` | Yes | — | — |
| `result.data.emails[].type` | `string` | Yes | — | — |
| `result.data.id` | `string` | No | — | — |
| `result.data.integration_links` | `array` | No | — | — |
| `result.data.integration_links[].name` | `string` | Yes | — | — |
| `result.data.integration_links[].url` | `string` | Yes | — | — |
| `result.data.lead_id` | `string \| null` | No | — | — |
| `result.data.lead_suggestions_operation_id` | `string \| null` | No | — | — |
| `result.data.name` | `string \| null` | No | — | — |
| `result.data.organization_id` | `string` | No | — | — |
| `result.data.phones` | `array` | No | — | — |
| `result.data.phones[].country` | `string \| null` | No | — | — |
| `result.data.phones[].outbound_sms_blocked` | `boolean` | No | — | — |
| `result.data.phones[].phone` | `string` | Yes | — | — |
| `result.data.phones[].phone_formatted` | `string` | No | — | — |
| `result.data.phones[].type` | `string` | Yes | — | — |
| `result.data.phones[].tz_ids` | `array` | No | — | — |
| `result.data.recent_calls` | `array` | No | — | — |
| `result.data.recent_calls[].dialer_id` | `string \| null` | Yes | — | — |
| `result.data.recent_calls[].duration` | `integer` | Yes | — | — |
| `result.data.recent_calls[].finish_timestamp` | `string` | Yes | — | Format: `date-time`. |
| `result.data.recent_calls[].id` | `string` | Yes | — | — |
| `result.data.recent_calls[].status` | `"created" \| "in-progress" \| "completed" \| "cancel" \| "no-answer" \| "busy" \| "failed" \| "timeout"` | Yes | — | Current status of the call. Allowed: `created`, `in-progress`, `completed`, `cancel`, `no-answer`, `busy`, `failed`, `timeout`. |
| `result.data.subscriptions` | `array` | No | — | — |
| `result.data.subscriptions[].contact_email` | `string \| null` | Yes | — | — |
| `result.data.subscriptions[].date_created` | `string` | Yes | — | Format: `date-time`. |
| `result.data.subscriptions[].initial_email_id` | `string \| null` | Yes | — | — |
| `result.data.subscriptions[].sequence_id` | `string` | Yes | — | — |
| `result.data.subscriptions[].sequence_name` | `string` | Yes | — | — |
| `result.data.subscriptions[].sequence_status` | `"active" \| "paused" \| "draft"` | Yes | — | Allowed: `active`, `paused`, `draft`. |
| `result.data.subscriptions[].start_date` | `string \| null` | Yes | — | Format: `date-time`. |
| `result.data.subscriptions[].subscription_id` | `string` | Yes | — | — |
| `result.data.subscriptions[].subscription_status` | `"active" \| "paused" \| "finished" \| "goal" \| "error"` | Yes | — | Allowed: `active`, `paused`, `finished`, `goal`, `error`. |
| `result.data.subscriptions[].subscription_status_reason` | `"manual" \| "pending-call-timed-out" \| "bulk-action" \| "rate-limited" \| "sequence-deleted" \| "workflow-paused" \| "filter-not-matched" \| "insufficient-ai-credit-balance" \| "plan-not-supported" \| "reply-received" \| "call-answered" \| "meeting-booked" \| "lead-status-changed" \| "outcome-met" \| "account-invalid" \| "account-failures" \| "sending-throttled-too-long" \| "membership-inactive" \| "send-as-error" \| "email-bounced" \| "call-failed" \| "sms-failed" \| "no-user-phone" \| "billing-error" \| "assignment-field-invalid" \| "lead-status-field-invalid" \| "assignees-missing" \| "run-as-disabled" \| "lead-not-visible" \| "internal-error" \| "field-mapping-error" \| "filter-config-invalid" \| "email-ai-generation-failed"` | Yes | — | Reason for each higher level status on a Workflow run. Allowed: `manual`, `pending-call-timed-out`, `bulk-action`, `rate-limited`, `sequence-deleted`, `workflow-paused`, `filter-not-matched`, `insufficient-ai-credit-balance`, `plan-not-supported`, `reply-received`, `call-answered`, `meeting-booked`, `lead-status-changed`, `outcome-met`, `account-invalid`, `account-failures`, `sending-throttled-too-long`, `membership-inactive`, `send-as-error`, `email-bounced`, `call-failed`, `sms-failed`, See the live schema for the complete constraint. |
| `result.data.timezone` | `string \| null` | No | — | — |
| `result.data.timezone_source` | `string \| null` | No | — | — |
| `result.data.title` | `string \| null` | No | — | — |
| `result.data.updated_by` | `string \| null` | No | — | — |
| `result.data.urls` | `array` | No | — | — |
| `result.data.urls[].type` | `string` | Yes | — | — |
| `result.data.urls[].url` | `string` | Yes | — | — |
| `result.meta` | `object` | No | — | Additional response metadata (status, paging). |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Provider response payload.",
        "properties": {
          "created_by": {
            "type": [
              "string",
              "null"
            ]
          },
          "date_created": {
            "type": "string",
            "format": "date-time"
          },
          "date_updated": {
            "type": "string",
            "format": "date-time"
          },
          "display_name": {
            "type": "string"
          },
          "emails": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "email": {
                  "type": "string"
                },
                "is_unsubscribed": {
                  "type": "boolean"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "email",
                "is_unsubscribed",
                "type"
              ],
              "additionalProperties": false
            }
          },
          "id": {
            "type": "string"
          },
          "integration_links": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "url"
              ],
              "additionalProperties": false
            }
          },
          "lead_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "lead_suggestions_operation_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "organization_id": {
            "type": "string"
          },
          "phones": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "country": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "outbound_sms_blocked": {
                  "type": "boolean"
                },
                "phone": {
                  "type": "string"
                },
                "phone_formatted": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "tz_ids": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "phone",
                "type"
              ],
              "additionalProperties": false
            }
          },
          "recent_calls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "dialer_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "duration": {
                  "type": "integer"
                },
                "finish_timestamp": {
                  "type": "string",
                  "format": "date-time"
                },
                "id": {
                  "type": "string"
                },
                "status": {
                  "type": "string",
                  "description": "Current status of the call.",
                  "enum": [
                    "created",
                    "in-progress",
                    "completed",
                    "cancel",
                    "no-answer",
                    "busy",
                    "failed",
                    "timeout"
                  ]
                }
              },
              "required": [
                "dialer_id",
                "duration",
                "finish_timestamp",
                "id",
                "status"
              ],
              "additionalProperties": false
            }
          },
          "subscriptions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "contact_email": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "date_created": {
                  "type": "string",
                  "format": "date-time"
                },
                "initial_email_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "sequence_id": {
                  "type": "string"
                },
                "sequence_name": {
                  "type": "string"
                },
                "sequence_status": {
                  "type": "string",
                  "enum": [
                    "active",
                    "paused",
                    "draft"
                  ]
                },
                "start_date": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                },
                "subscription_id": {
                  "type": "string"
                },
                "subscription_status": {
                  "type": "string",
                  "enum": [
                    "active",
                    "paused",
                    "finished",
                    "goal",
                    "error"
                  ]
                },
                "subscription_status_reason": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Reason for each higher level status on a Workflow run.",
                  "enum": [
                    "manual",
                    "pending-call-timed-out",
                    "bulk-action",
                    "rate-limited",
                    "sequence-deleted",
                    "workflow-paused",
                    "filter-not-matched",
                    "insufficient-ai-credit-balance",
                    "plan-not-supported",
                    "reply-received",
                    "call-answered",
                    "meeting-booked",
                    "lead-status-changed",
                    "outcome-met",
                    "account-invalid",
                    "account-failures",
                    "sending-throttled-too-long",
                    "membership-inactive",
                    "send-as-error",
                    "email-bounced",
                    "call-failed",
                    "sms-failed",
                    "no-user-phone",
                    "billing-error",
                    "assignment-field-invalid",
                    "lead-status-field-invalid",
                    "assignees-missing",
                    "run-as-disabled",
                    "lead-not-visible",
                    "internal-error",
                    "field-mapping-error",
                    "filter-config-invalid",
                    "email-ai-generation-failed"
                  ]
                }
              },
              "required": [
                "contact_email",
                "date_created",
                "initial_email_id",
                "sequence_id",
                "sequence_name",
                "sequence_status",
                "start_date",
                "subscription_id",
                "subscription_status",
                "subscription_status_reason"
              ],
              "additionalProperties": false
            }
          },
          "timezone": {
            "type": [
              "string",
              "null"
            ]
          },
          "timezone_source": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "updated_by": {
            "type": [
              "string",
              "null"
            ]
          },
          "urls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                }
              },
              "required": [
                "type",
                "url"
              ],
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.

## Related documentation

* [Connect integrations](https://deepline.com/docs/integrations.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.