Auth model
Google Chat app credentials + HTTP webhook configuration
Workspace-native messaging for teams already living inside Google Chat.
Google Chat setup for OpenClaw covers Chat API apps, webhook delivery, workspace permissions, and a clean verification path for internal rollouts.
Auth model
Google Chat app credentials + HTTP webhook configuration
Safety stance
Align Google Workspace permissions with the smallest audience possible before widening room access.
Verification ritual
Verify app install state, one direct conversation, and one room-based message flow before going broad.
Rollout mode
25–35 min setup
Google Workspace Chat app
This channel is ready for DMs and spaces over HTTP, verifies bearer audiences, pairs DMs by default, and treats spaces as mention-gated.
Watch the webhook path
Misconfigured app visibility or webhook assumptions can look like total transport failure.
Google Chat is a strong internal operator lane for OpenClaw when your team already lives inside Google Workspace. The catch is that it is not a token-only chat connector. You are operating a public HTTPS webhook path for inbound events while keeping the rest of the gateway private.
Google Chat fits best when you want OpenClaw inside an existing Workspace footprint instead of introducing a new chat surface.
Its strengths are practical:
users/<userId> and spaces can target spaces/<spaceId>That makes Google Chat a good lane for internal assistants, team-specific spaces, and controlled Workspace rollouts where you want the bot to be present but not casually exposed.
Telegram usually teaches operators to separate platform visibility from OpenClaw policy. Google Chat adds a third concern: webhook exposure.
This channel works only when three boundaries are aligned:
If one layer is wrong, the symptoms can look similar: the app exists, the space exists, and yet nothing useful happens.
The upstream docs are unusually clear on the safe posture here:
In practice, treat this as two systems with different exposure rules.
OpenClaw supports Google Chat through HTTP webhooks. The usual path is /googlechat, and the upstream docs recommend exposing only that path to the internet.
When a request arrives, OpenClaw verifies the bearer token against your configured:
audienceTypeaudienceThat means the webhook is not just “some public POST URL.” It is a public endpoint with a specific trust contract.
After the webhook is accepted, routing and policy still apply:
groupPolicy, groups, and per-space user controls still determine what is allowedSo a working webhook does not mean an open bot. It only means Google Chat can reach the gateway.
For most teams, the safest first rollout looks like this:
/googlechat, not /{
channels: {
googlechat: {
enabled: true,
serviceAccountFile: '/path/to/service-account.json',
audienceType: 'app-url',
audience: 'https://gateway.example.com/googlechat',
webhookPath: '/googlechat',
dm: {
policy: 'pairing',
},
groupPolicy: 'allowlist',
groups: {
'spaces/AAAA': {
allow: true,
requireMention: true,
users: ['users/1234567890'],
},
},
},
},
}
Why this is a good starting shape:
According to the official setup flow, you need:
Two operational details matter early:
/googlechat unless you deliberately changed webhookPath.Do not move on until you know exactly which project, service account, and app configuration own this lane. If you are running multiple agents or binding this lane to a specific workspace, align that routing plan with /guides/openclaw-multi-agent-routing so each webhook identity stays mapped to the right agent workflow.
Google Chat webhook auth is part of the channel design, not an optional hardening step.
OpenClaw supports two audience modes documented upstream:
audienceType: 'app-url' where the audience is the webhook URL itselfaudienceType: 'project-number' where the audience is the Google Cloud project numberThe important point is consistency:
audienceType / audiencemust agree.
If they do not, the bot can look reachable while authentication fails before useful routing ever starts.
Google Chat supports both direct messages and spaces, but they should not be rolled out as if they were the same risk surface.
Upstream documents DMs as pairing by default. Unknown senders receive a pairing code, and you approve them explicitly.
openclaw pairing approve googlechat <CODE>
That is a clean default for internal deployments because it lets you open the lane without silently trusting every first contact.
If you already know the exact Workspace principals that should be able to use the bot, you can make that policy more explicit with allowFrom on the DM side.
Spaces are group surfaces, so the upstream defaults are intentionally more restrained:
groupPolicy and groups.This is the right order for a first production rehearsal:
If mention detection needs help, the docs note that botUser can be set to the app’s user name.
A Google Chat channel is only really working when all of these checks pass in sequence.
Confirm that the webhook URL you configured is the one Google Chat is using, and that only the webhook path is publicly exposed. Keep /guides/openclaw-operability-and-observability handy so the telemetry you record while exposing that path matches the runbook you expect.
If you are publishing the entire gateway surface instead of just /googlechat, fix that first.
Run:
openclaw channels status --probe
The upstream docs specifically call this out for catching auth errors and missing audience configuration.
Your first DM test should prove the actual default trust model:
That tells you message delivery and DM policy are both working.
Add the app to one known space and test with an explicit @-mention.
This step should prove:
The official docs point to a small set of high-value failure patterns.
Upstream documents a 405 Method Not Allowed case from Google Cloud Logs Explorer when the webhook handler is not registered correctly.
The common meaning is simple: Google can hit something, but OpenClaw is not serving the expected Google Chat handler at that path.
Start by checking whether channels.googlechat is actually configured.
If the webhook is public but auth is misaligned, the likely issue is not “networking” in general. It is that audienceType and audience do not match the Google-side configuration you actually deployed.
When the app exists and the webhook is healthy, silence often comes from policy, not transport:
That is why Google Chat rollout is easier when you keep one DM and one space as the initial proof set.
A few documented details are worth making explicit because they shape long-term maintenance:
/googlechat if you do not override it,users/<userId> is the stable allowlist target for direct users,dangerouslyAllowNameMatching,Because that webhook path is public, pair the rollout conversation with /guides/openclaw-cost-and-guardrails-checklist so compliance, security, and budget stakeholders all agree on what the exposure entails.
The disciplined move is to validate delivery, auth, and policy first, then add richer behavior later.
If you are using Google Chat as part of a broader internal rollout, the next two topics usually matter most:
Those are not Google Chat-specific, but they matter the moment your operators start approving users or managing the gateway remotely.
Verification & references
References