<!-- BusyBot node reference — https://busybot.net/tools/google-chat/ -->

> Node: Google Chat (`google_chat`) · Action · v1
> Category: Communication · Credentials: Google Chat OAuth2 (`googleChatOAuth2Api`), Google API (Service Account) (`googleApi`)
> Updated: 2026-08-16

# 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

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `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](https://busybot.net/credentials/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Member | `member` |
| Message | `message` |
| Space | `space` |

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a new message in a space (Message resource) |
| Delete | `delete` | Delete a message (Message resource) |
| Get | `get` | Get a message (Message resource) |
| Update | `update` | Update a message (Message resource) |
| Get | `get` | Get a space membership (Member resource) |
| Get Many | `getAll` | List memberships in a space (Member resource) |
| Get | `get` | Get a space (Space resource) |
| Get Many | `getAll` | List all spaces the caller is a member of (Space resource) |

### Parameters

#### Message: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Space Name | `string` | Yes | — | The resource name of the space, in the form "spaces/*". Supports expressions like {{ $json.space }}. |
| Use JSON Body | `boolean` | No | `false` | Whether to specify the full message body as JSON (for cards and advanced formatting). |
| Text | `string` | No | — | The message text to send. Supports expressions. _(shown when Use JSON Body is `false`)_ |
| Message Body (JSON) | `json` | No | `{}` | 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 Fields | `collection` | No | `{}` | Optional message settings. Add only the ones you need. |
| — Request ID | `string` | No | — | A 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 Key | `string` | No | — | Specifies 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

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Message Name | `string` | Yes | — | The resource name of the message, in the form "spaces/*/messages/*". Supports expressions. |
| Use JSON Body | `boolean` | No | `false` | Whether to specify the full message body as JSON (for cards and advanced formatting). |
| Text | `string` | No | — | The message text to send. Supports expressions. _(shown when Use JSON Body is `false`)_ |
| Message Body (JSON) | `json` | No | `{}` | 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

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Message Name | `string` | Yes | — | The resource name of the message, in the form "spaces/*/messages/*". Supports expressions. |

#### Message: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Message Name | `string` | Yes | — | The resource name of the message, in the form "spaces/*/messages/*". Supports expressions. |

#### Member: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Member Name | `string` | Yes | — | The resource name of the membership, in the form "spaces/*/members/*". Supports expressions. |

#### Member: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Space Name | `string` | Yes | — | The resource name of the space, in the form "spaces/*". Supports expressions. |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Maximum number of results to return. _(shown when Return All is `false`)_ |

#### Space: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Space Name | `string` | Yes | — | The resource name of the space, in the form "spaces/*". Supports expressions. |

#### Space: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Maximum number of results to return. _(shown when Return All is `false`)_ |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Authentication | `options` | No | `oAuth2` | Authentication method to use. |
| | | | | Options: `oAuth2`, `serviceAccount` |
| Google Account | `credential` | No | — | Connect or select your Google account. _(shown when Authentication is `oAuth2`)_ |
| Service Account Email | `string` | Yes | — | The email address of the Google service account. _(shown when Authentication is `serviceAccount`)_ |
| Private Key | `string` | Yes | — | The private key from the service account JSON key file. _(shown when Authentication is `serviceAccount`)_ |
| Max Concurrency | `number` | No | `10` | Maximum 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.

| Operation | Output items |
|-----------|--------------|
| `message` / `create`, `get`, `update` | One item — the Chat message record, including the resource name Chat assigned it. |
| `message` / `delete` | One item — Chat's delete response merged onto the incoming item. |
| `member` / `get` | One item — the membership record. |
| `member` / `getAll` | **Fans out** — one output item per membership. With Return All on, every page is fetched; otherwise up to Limit results. |
| `space` / `get` | One item — the space record. |
| `space` / `getAll` | **Fans 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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

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

List every member of a space:

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

Get a single membership:

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

List all spaces the caller belongs to:

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

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes 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.