Create a new contact or update an existing one. If a contact already exists for the company by email or phone, that row is updated; otherwise a new contact is created. Response body is empty on success.
Company API Key
Contact fields (see schema for normalization and merge rules)
Title-cased; split into first and last name
Lowercased; optional
Normalized using the company country when present
On existing contact, new tags are merged with existing tags (deduplicated)
Boolean or common string variants (e.g. truthy/falsy strings)
Should be one of: manual, api, webhook, facebook, instagram, import. Invalid values are stored as manual
Map of custom field name to value. Only keys that exist as company CustomField names are stored
Upsert successful; no response body