Google Contacts Action

Reads and writes the Google address book behind an account. Fifteen operations over contacts and contact groups — enough to keep a CRM and a personal address book in step without anyone copying rows by hand.

Setup

A Google credential with the contacts scope. The picker only offers connections that already carry it; if yours does not, reconnect the account and grant it.


Mode — action or AI toolkit

The Mode selector decides who drives the node. In Action mode you pick one operation and fill its fields, and the node does that every time it runs. In AI toolkit mode the operations become tools an AI Node can call, and the model chooses which one and with what arguments.

ℹToolkit mode is opt-in per node, and it is what makes this node show up in an AI Node's tool picker. A node left in Action mode is invisible to agents.

Operations

The Operation dropdown decides what the node does and which fields appear under it. These are the exact values the API validates against:

ValueIn the dropdownWhat it does
listContactsList contactsPaginated list of every contact in the user's address book.
searchContactsSearch contactsFree-text search by name, email, phone, or organization.
getContactGet contactFetch a single contact by its resourceName (e.g. people/c12345).
createContactCreate contactAdd a new contact. Pass fullName for auto split into given/family.
updateContactUpdate contactUpdate fields on an existing contact. Update mask is auto-derived.
deleteContactDelete contactRemove a contact by resourceName. Irreversible.
listContactGroupsList groupsList all contact groups (labels) the user has.
addContactToGroupAdd to groupIdempotent — no error if the contact is already in the group.
removeContactFromGroupRemove from groupIdempotent — no error if the contact wasn't in the group.
batchCreateContactsBatch createBulk-create up to 200 contacts in one call. Pass a `contacts` array.
batchUpdateContactsBatch updateBulk-update up to 200 contacts. Each entry needs a resourceName.
batchDeleteContactsBatch deleteBulk-delete up to 500 contacts by resourceName. Irreversible.
createContactGroupCreate groupCreate a new contact group (label).
updateContactGroupRename groupRename an existing group.
deleteContactGroupDelete groupDelete a group. Optionally delete its contacts too.

Groups are picked, not typed. Adding a contact to a group, removing it, or renaming and deleting a group lists the account's groups with how many contacts each has — each operation shows only the ones Google lets it use (members can be changed in your own groups, My contacts and Starred; only your own groups can be renamed or deleted). To take the group from the flow, choose Type it or use a template under the list.


Gotchas

  • resourceName is the identity — it looks like people/c12345 and it is what every read, update and delete keys on. Store it when you create a contact.
  • createContact accepts fullName and splits it into given and family names for you.
  • Search is free text across name, email, phone and organization — it is not a field-by-field filter.
  • Listing is paginated. The output is iterable, so a Loop downstream walks the address book one contact at a time.
  • Emails, phones and URLs take a list in any form: a list, its JSON (["a@b.c"]) or text with several values — emails separated by commas, semicolons or line breaks (Juan Pérez <juan@x.com> counts as one email); phones and URLs by a comma or semicolon followed by a space, or a line break, so ;ext=89 or the commas of a Maps link stay inside the value. A template like {{payload.emails}} works whether the payload holds text or a list. On an update, a field you leave out is not touched, a name or note that renders empty is not touched either, and an explicit empty list ([]) clears it.
  • Batch update needs no version tags. HostWebhook fetches each contact's current version before the update, as the single update does. The updateMask is optional: without it, each contact gets the fields it brings, and nothing else is cleared. A contact that does not exist stops the batch with a 404 that names it, before anything is written.
  • A mistake in the data is a 400 (a missing resourceName, nothing to update, an empty batch, the same contact twice) and is not retried. Get, update and delete of a contact that does not exist are a 404; adding a missing contact to a group comes back in notFound.