Reference · Tools

Google Chat

Send messages, manage members and spaces in Google Chat.

Action Communication v1

The Google Chat node connects to the Google Chat REST API v1 to send and manage messages, list or retrieve space members, and query spaces. You can build workflows that post alerts to a Chat space when a monitoring threshold is breached, update or delete messages, and keep membership records in sync — all without touching the Chat UI.

Node type
Action
Parameters
20
Outputs
Output, Error
Credentials
Google Chat OAuth2 , Google API (Service Account)

Google Chat

Send messages and manage members and spaces in Google Chat.

Overview

Google Chat tool integrates with the Google Chat REST API v1 to manage messages, memberships, and spaces. It supports creating, retrieving, updating, and deleting messages; listing and getting space members; and listing and getting spaces. Both OAuth2 (recommended for user-context access) and Service Account (for Chat bot / server-to-server scenarios) authentication are supported. Pagination is handled automatically for getAll operations.

Category: Communication
Tool Name: google_chat
Version: 1

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

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Google Chat OAuth2 or Google API (Service Account) credentials — pick one and match it with the Authentication parameter on the node. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Membermember
Messagemessage
Spacespace

Operations

OperationValueDescription
CreatecreateCreate a new message in a space (Message resource)
DeletedeleteDelete a message (Message resource)
GetgetGet a message (Message resource)
UpdateupdateUpdate a message (Message resource)
GetgetGet a space membership (Member resource)
Get ManygetAllList memberships in a space (Member resource)
GetgetGet a space (Space resource)
Get ManygetAllList all spaces the caller is a member of (Space resource)

Parameters

Message: Create

ParameterTypeRequiredDefaultDescription
Space NamestringYesThe resource name of the space, in the form “spaces/*”. Supports expressions like {{ $json.space }}.
Use JSON BodybooleanNofalseWhether to specify the full message body as JSON (for cards and advanced formatting).
TextstringNoThe message text to send. Supports expressions. (shown when Use JSON Body is false)
Message Body (JSON)jsonNo{}The full message body as a JSON object or JSON string. Use for cards and rich formatting. See https://developers.google.com/chat/reference/rest/v1/spaces.messages#Message. (shown when Use JSON Body is true)
Additional FieldscollectionNo{}Optional message settings. Add only the ones you need.
— Request IDstringNoA unique request ID for idempotency. If a message was already created with this ID in the space, the existing message is returned without creating a new one.
— Thread KeystringNoSpecifies a thread key to group messages into a thread. Has no effect if a thread field is already set in the message body.

Message: Update

ParameterTypeRequiredDefaultDescription
Message NamestringYesThe resource name of the message, in the form “spaces//messages/”. Supports expressions.
Use JSON BodybooleanNofalseWhether to specify the full message body as JSON (for cards and advanced formatting).
TextstringNoThe message text to send. Supports expressions. (shown when Use JSON Body is false)
Message Body (JSON)jsonNo{}The full message body as a JSON object or JSON string. Use for cards and rich formatting. See https://developers.google.com/chat/reference/rest/v1/spaces.messages#Message. (shown when Use JSON Body is true)

Message: Get

ParameterTypeRequiredDefaultDescription
Message NamestringYesThe resource name of the message, in the form “spaces//messages/”. Supports expressions.

Message: Delete

ParameterTypeRequiredDefaultDescription
Message NamestringYesThe resource name of the message, in the form “spaces//messages/”. Supports expressions.

Member: Get

ParameterTypeRequiredDefaultDescription
Member NamestringYesThe resource name of the membership, in the form “spaces//members/”. Supports expressions.

Member: Get Many

ParameterTypeRequiredDefaultDescription
Space NamestringYesThe resource name of the space, in the form “spaces/*”. Supports expressions.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Maximum number of results to return. (shown when Return All is false)

Space: Get

ParameterTypeRequiredDefaultDescription
Space NamestringYesThe resource name of the space, in the form “spaces/*”. Supports expressions.

Space: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Maximum number of results to return. (shown when Return All is false)

All Operations

ParameterTypeRequiredDefaultDescription
AuthenticationoptionsNooAuth2Authentication method to use.
Options: oAuth2, serviceAccount
Google AccountcredentialNoConnect or select your Google account. (shown when Authentication is oAuth2)
Service Account EmailstringYesThe email address of the Google service account. (shown when Authentication is serviceAccount)
Private KeystringYesThe private key from the service account JSON key file. (shown when Authentication is serviceAccount)
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The Google Chat API response is merged into the incoming item JSON at the top level, so the fields you sent in pass through. Binary data on the input item is not carried onto the output.

OperationOutput items
message / create, get, updateOne item — the Chat message record, including the resource name Chat assigned it.
message / deleteOne item — Chat’s delete response merged onto the incoming item.
member / getOne item — the membership record.
member / getAllFans out — one output item per membership. With Return All on, every page is fetched; otherwise up to Limit results.
space / getOne item — the space record.
space / getAllFans out — one output item per space, with the same Return All / Limit behavior.

When a list operation returns nothing, a single item is emitted carrying results: [] so the input item is not silently dropped — check for that property before treating a branch as populated.

Usage Examples

  • Send a message to a Google Chat space
  • Get a message by resource name
  • Update a message in Google Chat
  • Delete a message from a space
  • List all members of a Google Chat space
  • Get details about a Google Chat space
  • List all spaces the user is a member of

Example Configuration

Send a plain text message to a space:

{
  "type": "google_chat",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "message",
    "operation": "create",
    "spaceName": "spaces/SPACE_ID",
    "useJsonBody": false,
    "text": "Automated notification: process completed successfully",
    "additionalFields": {
      "requestId": "unique-request-id-123"
    }
  }
}

Send a card as a Chat bot using a service account:

{
  "type": "google_chat",
  "parameters": {
    "authentication": "serviceAccount",
    "resource": "message",
    "operation": "create",
    "spaceName": "spaces/SPACE_ID",
    "useJsonBody": true,
    "jsonBody": {
      "text": "Check out this card!",
      "cards": [{
        "header": { "title": "Workflow Update" },
        "sections": [{
          "widgets": [{
            "textParagraph": { "text": "Your workflow has completed successfully." }
          }]
        }]
      }]
    }
  }
}

Update an existing message:

{
  "type": "google_chat",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "message",
    "operation": "update",
    "messageName": "spaces/SPACE_ID/messages/MESSAGE_ID",
    "useJsonBody": false,
    "text": "Updated message content"
  }
}

Delete a message:

{
  "type": "google_chat",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "message",
    "operation": "delete",
    "messageName": "{{ $json.messageName }}"
  }
}

List every member of a space:

{
  "type": "google_chat",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "member",
    "operation": "getAll",
    "spaceName": "spaces/SPACE_ID",
    "returnAll": true
  }
}

Get a single membership:

{
  "type": "google_chat",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "member",
    "operation": "get",
    "memberName": "spaces/SPACE_ID/members/MEMBER_ID"
  }
}

List all spaces the caller belongs to:

{
  "type": "google_chat",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "space",
    "operation": "getAll",
    "returnAll": true
  }
}

Error Handling

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

Tips

Send messages and manage members and spaces in Google Chat.

Parameter Dependency Rules

  1. operation options depend on the selected resource
  2. spaceName is required for different operations based on resource type
  3. messageName is only needed for message operations on existing messages
  4. useJsonBody determines whether to use text (simple) or jsonBody (rich content)
  5. returnAll controls whether limit parameter is available for list operations
  6. additionalFields is only available when creating new messages

Notes

  • Pick the authentication that matches the caller. OAuth2 posts as the signed-in user; Service Account posts as a Chat bot and can only reach spaces the bot has been added to.
  • Names, not display titles. Space Name, Message Name and Member Name are Chat resource names (spaces/…, spaces/…/messages/…, spaces/…/members/…), not the human-readable names shown in the Chat UI. A created message returns its resource name — store it if you plan to update or delete it later.
  • Request ID makes creates idempotent. Re-running a workflow with the same Request ID returns the message that already exists instead of posting a duplicate.

Frequently asked questions

Should I use OAuth2 or a Service Account, and does it matter who appears as the sender?

Yes, it matters significantly. OAuth2 authenticates as a real Google user, so messages appear to come from that person. A Service Account authenticates as a Chat bot, so messages show a bot identity. The practical constraint with Service Accounts is that the bot must already be added to any space it tries to reach — it cannot access spaces it hasn't been invited to.

Where do I find the 'Space Name' or 'Message Name' values the node asks for?

These are Chat API resource names, not the display titles you see in the Chat UI. A space name looks like spaces/XXXXXXXXX and a message name looks like spaces/XXXXXXXXX/messages/YYYYYYY. When you create a message with this node, the response includes the message's resource name — store it in your workflow if you plan to update or delete that message later.

How do I prevent duplicate messages if my workflow runs more than once?

Set the Request ID field when creating a message. If the node is called again with the same Request ID, the Google Chat API returns the original message instead of posting a new one. This makes message creation idempotent, which is especially useful in retry-prone or scheduled workflows.

Can I send formatted or card-based messages, or only plain text?

Both are supported. Toggle the 'Use JSON Body' parameter off to send a simple text string, or toggle it on to provide a raw JSON body, which lets you use Chat's card and rich-content message formats. The plain-text option is faster to configure; the JSON body option gives you full control over the message structure.

What happens when I list all members or spaces — does the node handle pagination automatically?

Yes. For getAll operations, pagination is handled automatically by the node. You can either enable 'Return All' to retrieve every page of results, or disable it and set a 'Limit' to cap how many records come back. The Limit parameter only appears when Return All is turned off.

Build with the Google Chat node

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

Open BusyBot

Last updated . Spotted something wrong? Tell us.