Upsert a contact
Upsert a single contact — one POST handles both create and update. Include an existing contact id to update that contact, or omit id to create a new one. The create path returns 201 and the update path returns 200; either way the response body is the full contact.
Updates are sparse: only the fields you send are changed, and any field you omit keeps its current value. custom_data is the exception in one direction — sending it replaces the contact's entire custom-field map (it is not merged key-by-key), so include every key you want to keep; omitting custom_data leaves the existing values untouched.
A contact is a person record in your CRM. It is linked to a company relationship (its employer) via company_id, to an owning Distru user via owner_id, and carries a name/email/phone profile plus optional driver-license details that surface on an order's shipping manifest when this contact is named as the driver. Writing a contact does not move inventory and does not sync to Metrc or BioTrack; it does record an activity-log entry on the contact and notify the relevant users. New contacts appear in GET /public/v1/contacts within about a second (the list is eventually consistent).
Required permission: contacts_permissions_create to create a new contact, contacts_permissions_edit (plus access to the contact under your team restrictions) to update an existing one.
Request body
Response
An updated contact
Changes
No recorded changes to this endpoint across all 1 revision of this API.