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.
Operations
The Operation dropdown decides what the node does and which fields appear under it. These are the exact values the API validates against:
| Value | In the dropdown | What it does |
|---|---|---|
| listContacts | List contacts | Paginated list of every contact in the user's address book. |
| searchContacts | Search contacts | Free-text search by name, email, phone, or organization. |
| getContact | Get contact | Fetch a single contact by its resourceName (e.g. people/c12345). |
| createContact | Create contact | Add a new contact. Pass fullName for auto split into given/family. |
| updateContact | Update contact | Update fields on an existing contact. Update mask is auto-derived. |
| deleteContact | Delete contact | Remove a contact by resourceName. Irreversible. |
| listContactGroups | List groups | List all contact groups (labels) the user has. |
| addContactToGroup | Add to group | Idempotent — no error if the contact is already in the group. |
| removeContactFromGroup | Remove from group | Idempotent — no error if the contact wasn't in the group. |
| batchCreateContacts | Batch create | Bulk-create up to 200 contacts in one call. Pass a `contacts` array. |
| batchUpdateContacts | Batch update | Bulk-update up to 200 contacts. Each entry needs a resourceName. |
| batchDeleteContacts | Batch delete | Bulk-delete up to 500 contacts by resourceName. Irreversible. |
| createContactGroup | Create group | Create a new contact group (label). |
| updateContactGroup | Rename group | Rename an existing group. |
| deleteContactGroup | Delete group | Delete 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
resourceNameis the identity — it looks likepeople/c12345and it is what every read, update and delete keys on. Store it when you create a contact.createContactacceptsfullNameand 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=89or 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
updateMaskis 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 innotFound.