Create or update a contact
upsert_contactCreate a contact, or update the one that already has this email (matched case-insensitively). Custom fields and tags are merged into what is stored. A company is created or reused from company_domain or company_name. Requires the write_crm scope.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Full name. | |
| tags | No | Short labels. | |
| Yes | Contact email, the dedupe key. | ||
| title | No | Job title. | |
| fields | No | Free-form custom columns, for example {"stack":"Next.js","funding":"seed"}. Values are strings or numbers. | |
| source | No | The list or run this contact came from. | |
| status | No | new, contacted, qualified or closed. replied, unsubscribed and bounced are set by the system or the operator. | |
| timezone | No | IANA zone such as Europe/Paris. Campaigns send inside the window in this zone. | |
| company_name | No | Company name. | |
| company_domain | No | Company domain, for example acme.com. | |
| idempotency_key | No | Optional. Repeating a call with the same key and the same arguments returns the first result instead of writing again, so retries are safe. |