Update a contact
update_contactUpdate an existing Google Contact by sending only the fields to change; each field group is replaced as a whole, so pass complete lists to add, edit, or clear data. Etag protection prevents accidental overwrites of concurrent edits.
Instructions
Updates an existing contact and returns the updated Person. Only the provided fields are touched (updatePersonFields is computed automatically), but each provided field group is REPLACED AS A WHOLE: passing emails replaces all emails ([] clears them), passing any name part rewrites the whole name, and scalar fields clear on an empty value ("" for nickname/notes/birthday, {} for organization) — fetch current values with get_contact first and send complete groups, or data is silently dropped. Updates are etag-guarded: pass the etag from get_contact to fail cleanly (HTTP 400) if someone edited the contact meanwhile, or omit it and the current etag is fetched automatically (one extra read; last-write-wins). At least one contact field is required.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| etag | No | The contact's etag from get_contact — omit to auto-fetch the current one. | |
| urls | No | Websites. On update this list replaces ALL existing urls; [] clears them. | |
| notes | No | Free-text notes (the "Notes" field in Google Contacts). On update "" clears it. | |
| emails | No | Email addresses. On update this list replaces ALL existing emails; [] clears them. | |
| phones | No | Phone numbers. On update this list replaces ALL existing phones; [] clears them. | |
| prefix | No | Honorific prefix, e.g. "Dr.". | |
| suffix | No | Honorific suffix, e.g. "Jr.". | |
| birthday | No | Birthday: "YYYY-MM-DD", or "MM-DD" for a year-less birthday. On update "" clears it. | |
| nickname | No | Nickname. On update "" clears it. | |
| addresses | No | Postal addresses. On update this list replaces ALL existing addresses; [] clears them. | |
| given_name | No | First name. | |
| family_name | No | Last name. | |
| middle_name | No | Middle name. | |
| organization | No | Employer info. On update it replaces the existing organizations; {} clears them. | |
| person_fields | No | Person fields to return (default names, emailAddresses, phoneNumbers, organizations, memberships). Only masked fields come back — an absent field may be unmasked, not empty. | |
| resource_name | Yes | The contact's full resource name, e.g. "people/c1234567890" — exactly as returned by list_contacts, search_contacts or create_contact. |