Skip to main content
POST …/contacts/update Synchronously update an existing contact. All fields are optional except contact_id. Only fields you provide are changed — this is a patch-style update, not a full replace. This endpoint is synchronous — the response confirms the update inline.

Request

POST {WEBHOOK_BASE_URL}/{token}/contacts/update
Content-Type: application/json
{
  "contact_id": "a1b2c3d4-0000-0000-0000-000000000000",
  "phone_number": "5550000002",
  "contact_email": "john.new@example.com",
  "tags": ["follow-up"],
  "note": "Called on March 19 — interested in selling.",
  "contributors": ["Sarah Smith"]
}

Body fields

FieldTypeRequiredDescription
contact_idstring (UUID)YesID of the contact to update
full_namestringNoReplaces the contact’s name
phone_numberstringNoAdds the number or bumps an existing one to verified
contact_emailstringNoAdded if not already present
contact_addressstringNoAdded as a linked property
notestringNoCreates a new note on the contact
tagsstring[]NoAdds new tags — existing tags are not removed. Case-insensitive dedupe.
sourcestringNoEnsures the source option exists and sets it on the contact
contributorsstring[]NoAdds users as participants — skips anyone already on the contact
first_name and last_name are supported but deprecated. Use full_name instead.
This endpoint does not require the calling user to be an org admin or assigned contributor. Inbound webhooks bypass the standard ownership gate.

Behavior details

  • Phone — if the number already exists on the contact, it is bumped to verified status. If it is new, it is added.
  • Email — added only if not already present. No deduplication beyond exact match.
  • Tags — only new tags are added. Existing tags are never removed.
  • Contributors — users are resolved by full name within the org. Users already on the contact are skipped.
  • Address — Goliath attempts to resolve the address to a known property (tryToFindPropertyId: true).

Responses

Success
200 OK

{
  "success": true,
  "contact_id": "a1b2c3d4-0000-0000-0000-000000000000"
}

Error responses

StatusCause
400contact_id is missing
401Invalid or inactive token
404No contact found with the given contact_id