Reference · Tools

Google Contacts

Create, read, update, and delete contacts using the Google People API.

Action Productivity v1

The Google Contacts node connects to the Google People API so you can create, retrieve, update, and delete contacts directly inside a BusyBot workflow. Use it to keep a CRM or form-submission pipeline in sync with a shared Google Contacts address book — new leads get added, existing records get patched, and stale entries get removed, all without manual exports.

Node type
Action
Parameters
20
Outputs
Output, Error
Credentials
Google Contacts OAuth2

Google Contacts

Manage Google Contacts using the People API — create, read, update, delete contacts and group memberships.

Overview

Google Contacts tool manages contacts via the Google People API (v1). Contact operations: create a contact with name, emails, phones, addresses, organizations, birthday, events, relations, custom fields and group memberships; delete a contact by resource name; get a contact by resource name with selectable person fields; get all contacts with optional search query, sort order, and pagination; update a contact with selective field patching. All contact operations use the contactId (people/{personId} resource name, or just the ID part). getAll supports both connections list and search query modes. The rawData toggle preserves full API response. The fields parameter controls which person fields are returned.

Category: Productivity
Tool Name: google_contacts
Version: 1

Appearance: Icon: lucide-Users | Color: #4285F4

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Google Contacts OAuth2 credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Contactcontact

Operations

OperationValueDescription
CreatecreateCreate a new contact.
DeletedeleteDelete a contact.
GetgetGet a contact by ID.
Get ManygetAllRetrieve many contacts.
UpdateupdateUpdate a contact.

Parameters

Contact: Create (create)

ParameterTypeRequiredDefaultDescription
Family NamestringNoThe last name (family name) of the contact. Supports expressions like {{ $json.lastName }}.
Given NamestringNoThe first name (given name) of the contact. Supports expressions.
Additional FieldscollectionNo{}Optional contact details to set on creation.
— AddressesfixedCollectionNo{}Postal addresses. Add one entry per address.
— — Street AddressstringNoStreet address line.
— — CitystringNoCity.
— — RegionstringNoRegion, state or province.
— — Country CodestringNoCountry code.
— — Postal CodestringNoPostal or ZIP code.
— — TypeoptionsNoThe kind of address.
Options: home, work, other
— BirthdaydateTimeNoThe birthday of the contact.
— CompanyfixedCollectionNo{}Organizations the contact belongs to. Add one entry per organization.
— — CurrentbooleanNofalseWhether this is the contact’s current organization.
— — DomainstringNoThe organization’s domain.
— — NamestringNoThe organization’s name.
— — TitlestringNoThe contact’s job title at this organization.
— Custom FieldsfixedCollectionNo{}User-defined key/value pairs. Add one entry per field.
— — KeystringNoThe end user specified key of the user defined data.
— — ValuestringNoThe end user specified value of the user defined data.
— EmailsfixedCollectionNo{}Email addresses. Add one entry per address.
— — TypeoptionsNoThe kind of email address.
Options: home, work, other
— — ValuestringNoThe email address.
— EventsfixedCollectionNo{}Dated events. Add one entry per event.
— — DatedateTimeNoThe date of the event.
— — TypeoptionsNoThe kind of event.
Options: anniversary, other
— File AsstringNoThe name that should be used to sort the person in a list.
— Group Names or IDsmultiOptionsNo[]Contact groups to add this contact to. Specify contactGroup resource names (e.g. “contactGroups/myContacts”). The list is loaded from your account.
— Honorific PrefixstringNoHonorific prefix (e.g. “Dr.”, “Mr.”, “Ms.”).
— Honorific SuffixstringNoHonorific suffix (e.g. “Jr.”, “Sr.”, “PhD”).
— Middle NamestringNoThe contact’s middle name.
— NotesstringNoFree-form text notes about the contact.
— PhonefixedCollectionNo{}Phone numbers. Add one entry per number.
— — TypeoptionsNoThe kind of phone number.
Options: googleVoice, home, homeFax, main, mobile, other, otherFax, pager, work, workFax, workMobile, workPager
— — ValuestringNoThe phone number.
— RelationsfixedCollectionNo{}People related to this contact. Add one entry per relation.
— — PersonstringNoThe name of the other person this relation refers to.
— — TypeoptionsNoHow the other person is related to this contact.
Options: assistant, brother, child, domesticPartner, father, friend, manager, mother, parent, referredBy, relative, sister, spouse

Contact: Delete (delete)

ParameterTypeRequiredDefaultDescription
Contact IDstringYesThe contact resource name or numeric ID (e.g. “people/c123456789” or just “c123456789”). Supports expressions.

Contact: Get (get)

ParameterTypeRequiredDefaultDescription
Contact IDstringYesThe contact resource name or numeric ID (e.g. “people/c123456789” or just “c123456789”). Supports expressions.
FieldsmultiOptionsNo[]Person fields to return. Use [”*”] for all fields.
Options: *, addresses, biographies, birthdays, coverPhotos, emailAddresses, events, genders, imClients, interests, locales, memberships, metadata, names, nicknames, occupations, organizations, phoneNumbers, photos, relations, residences, sipAddresses, skills, urls, userDefined
RAW DatabooleanNofalseReturn the raw API response without data cleaning.

Contact: Get Many (getAll)

ParameterTypeRequiredDefaultDescription
FieldsmultiOptionsNo[]Person fields to return. Use [”*”] for all fields.
Options: *, addresses, biographies, birthdays, coverPhotos, emailAddresses, events, genders, imClients, interests, locales, memberships, metadata, names, nicknames, occupations, organizations, phoneNumbers, photos, relations, residences, sipAddresses, skills, urls, userDefined
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Max number of results to return. Between 1 and 500. (shown when Return All is false)
Use QuerybooleanNofalseWhether to filter results using a search query (uses searchContacts endpoint) instead of listing all connections.
QuerystringNoPlain-text query to filter contacts. Matches name, email, phone, etc. prefix phrases. (shown when Use Query is true)
RAW DatabooleanNofalseReturn raw API response without data cleaning.
OptionscollectionNo{}Extra listing options. (shown when Use Query is false)
— Sort OrderoptionsNoThe order in which contacts are returned.
Options: LAST_MODIFIED_ASCENDING, LAST_MODIFIED_DESCENDING, FIRST_NAME_ASCENDING, LAST_NAME_ASCENDING

Contact: Update (update)

ParameterTypeRequiredDefaultDescription
Contact IDstringYesThe contact resource name or numeric ID (e.g. “people/c123456789” or just “c123456789”). Supports expressions.
FieldsmultiOptionsNo[]Person fields to return. Use [”*”] for all fields.
Options: *, addresses, biographies, birthdays, coverPhotos, emailAddresses, events, genders, imClients, interests, locales, memberships, metadata, names, nicknames, occupations, organizations, phoneNumbers, photos, relations, residences, sipAddresses, skills, urls, userDefined
Update FieldscollectionNo{}The fields to patch. Only the fields you add are sent, and only those are overwritten.
— EtagstringNoThe etag of the contact to prevent conflicts. If omitted, it is fetched automatically.
— Family NamestringNoThe last name (family name) of the contact.
— Given NamestringNoThe first name (given name) of the contact.
— Middle NamestringNoThe contact’s middle name.
— Honorific PrefixstringNoHonorific prefix.
— Honorific SuffixstringNoHonorific suffix.
— AddressesfixedCollectionNo{}Postal addresses. Add one entry per address.
— — Street AddressstringNoStreet address line.
— — CitystringNoCity.
— — RegionstringNoRegion, state or province.
— — Country CodestringNoCountry code.
— — Postal CodestringNoPostal or ZIP code.
— — TypeoptionsNoThe kind of address.
Options: home, work, other
— BirthdaydateTimeNoThe birthday of the contact.
— CompanyfixedCollectionNo{}Organizations the contact belongs to. Add one entry per organization.
— — CurrentbooleanNofalseWhether this is the contact’s current organization.
— — DomainstringNoThe organization’s domain.
— — NamestringNoThe organization’s name.
— — TitlestringNoThe contact’s job title at this organization.
— Custom FieldsfixedCollectionNo{}User-defined key/value pairs. Add one entry per field.
— — KeystringNoThe key of the user defined data.
— — ValuestringNoThe value of the user defined data.
— EmailsfixedCollectionNo{}Email addresses. Add one entry per address.
— — TypeoptionsNoThe kind of email address.
Options: home, work, other
— — ValuestringNoThe email address.
— EventsfixedCollectionNo{}Dated events. Add one entry per event.
— — DatedateTimeNoThe date of the event.
— — TypeoptionsNoThe kind of event.
Options: anniversary, other
— File AsstringNoThe name used to sort this person in a list.
— Group Names or IDsmultiOptionsNo[]Contact groups to set for this contact. The list is loaded from your account.
— NotesstringNoFree-form text notes about the contact.
— PhonefixedCollectionNo{}Phone numbers. Add one entry per number.
— — TypeoptionsNoThe kind of phone number.
Options: googleVoice, home, homeFax, main, mobile, other, otherFax, pager, work, workFax, workMobile, workPager
— — ValuestringNoThe phone number.
— RelationsfixedCollectionNo{}People related to this contact. Add one entry per relation.
— — PersonstringNoThe name of the other person this relation refers to.
— — TypeoptionsNoHow the other person is related to this contact.
Options: assistant, brother, child, domesticPartner, father, friend, manager, mother, parent, referredBy, relative, sister, spouse

All Operations

ParameterTypeRequiredDefaultDescription
AuthenticationoptionsNooAuth2Authentication method to use.
Options: oAuth2 (OAuth2, recommended), serviceAccount (Service Account)
Google AccountcredentialNoConnect or select your Google account. (shown when Authentication is oAuth2)
Service Account EmailstringYesThe email address of the Google service account, for example my-service-account@project.iam.gserviceaccount.com. (shown when Authentication is serviceAccount)
Private KeystringYesThe private key from the service account JSON key file. Paste the full PEM block, including the BEGIN and END lines. (shown when Authentication is serviceAccount)
Max ConcurrencynumberNo5Maximum number of items to process concurrently. Between 1 and 20.

Output Data

The People API response is merged into the item JSON, so the incoming fields pass through except where a response field uses the same name. Binary data on the input item is not carried to the output.

Wherever the API returns a person record, the node also adds contactId — the ID part of the record’s resourceName, so you can feed it straight back into a later Get, Update or Delete.

OperationOutput
createOne item carrying the created person record plus contactId.
deleteOne item carrying success: true. The API returns no body for a delete.
getOne item carrying the person record plus contactId.
getAllFans out — one item per contact, each with contactId. A search that matches nothing still emits one item, carrying the input JSON unchanged.
updateOne item carrying the patched person record plus contactId.

With RAW Data off (the default) on get and getAll, the record is flattened for easier downstream use; turn it on to receive the People API response exactly as returned. Because getAll already emits one item per contact, you do not need a Split Out node after it.

Reference the result downstream by expression, e.g. {{ $json.contactId }}.

Usage Examples

  • Create a new contact with name, email, and phone number
  • Delete a contact by its resource ID
  • Get a contact by ID and return selected person fields
  • List all contacts with sorting and pagination
  • Search contacts by name or email
  • Update a contact email address or phone number
  • Add a contact to a contact group

Example Configuration

Create a contact with a work email and a mobile number:

{
  "type": "google_contacts",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "contact",
    "operation": "create",
    "givenName": "{{ $json.firstName }}",
    "familyName": "{{ $json.lastName }}",
    "additionalFields": {
      "emailsUi": {
        "emailsValues": [
          { "type": "work", "value": "{{ $json.email }}" }
        ]
      },
      "phoneUi": {
        "phoneValues": [
          { "type": "mobile", "value": "{{ $json.phone }}" }
        ]
      }
    }
  }
}

List contacts newest-first, one item per contact:

{
  "type": "google_contacts",
  "parameters": {
    "resource": "contact",
    "operation": "getAll",
    "fields": ["names", "emailAddresses", "phoneNumbers"],
    "returnAll": false,
    "limit": 100,
    "useQuery": false,
    "options": {
      "sortOrder": "LAST_MODIFIED_DESCENDING"
    }
  }
}

Search contacts by a plain-text query:

{
  "type": "google_contacts",
  "parameters": {
    "resource": "contact",
    "operation": "getAll",
    "fields": ["names", "emailAddresses"],
    "useQuery": true,
    "query": "{{ $json.searchTerm }}",
    "returnAll": true
  }
}

Patch one field on an existing contact:

{
  "type": "google_contacts",
  "parameters": {
    "resource": "contact",
    "operation": "update",
    "contactId": "{{ $json.contactId }}",
    "fields": ["names", "emailAddresses"],
    "updateFields": {
      "emailsUi": {
        "emailsValues": [
          { "type": "work", "value": "{{ $json.newEmail }}" }
        ]
      }
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Create, read, update, and delete Google Contacts using the People API — manage names, emails, phones, addresses, and group memberships.

Frequently asked questions

What credentials do I need, and how do I set them up?

This node requires a Google Contacts OAuth2 credential (type: googleContactsOAuth2Api). You'll need to authorize BusyBot to access your Google account through the standard OAuth2 flow — no service account or API key will work here. Make sure the Google People API is enabled in your Google Cloud project before connecting.

What is the contactId and where do I find it?

Every Google contact is identified by a resource name in the format people/{personId} — for example, people/c1234567890. The node accepts either the full resource name or just the ID portion (the part after the slash) for operations like get, update, and delete. You can retrieve a contact's resource name by running a getAll or get operation first and inspecting the output.

When I update a contact, does it overwrite all existing fields?

No — the update operation uses selective field patching, meaning only the fields you explicitly include in the request are changed. Fields you leave blank are left untouched on the contact. This makes it safe to update, say, a phone number without accidentally clearing the contact's address or organization details.

How do I search for contacts instead of fetching all of them?

The getAll operation supports two modes: listing all contacts from your connections list, or running a search query. Switch to search query mode and provide a string to match against names, email addresses, or phone numbers. You can also control sort order and use pagination parameters to handle large address books without loading everything at once.

What does the rawData toggle do, and when should I use it?

By default the node returns a simplified, normalized version of the API response. Enabling rawData preserves the full Google People API response payload, including any fields or metadata that the simplified output omits. Turn it on when you need access to less common fields — like custom fields, events, or relations — that aren't surfaced in the default output.

Build with the Google Contacts node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Google Contacts OAuth2 credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.