Skip to main content

openclaw webhooks

Webhook helpers and integrations. Today this surface is scoped to Gmail Pub/Sub flows built on the bundled gog watcher.

Subcommands

openclaw webhooks gmail setup --account <email> [...]
openclaw webhooks gmail run   [--account <email>] [...]
SubcommandDescription
gmail setupOne-time wizard: Gmail watch, Pub/Sub topic/subscription, and OpenClaw hook delivery.
gmail runRun gog watch serve plus the watch auto-renew loop in the foreground.
The Gateway also auto-starts gog gmail watch serve on boot once hooks.enabled=true and hooks.gmail.account is set (set by gmail setup). gmail run is the same logic in the foreground, useful for debugging or when the Gateway watcher is disabled. See Gmail Pub/Sub integration for the auto-start details and OPENCLAW_SKIP_GMAIL_WATCHER opt-out.

webhooks gmail setup

openclaw webhooks gmail setup --account you@example.com
openclaw webhooks gmail setup --account you@example.com --project my-gcp-project --json
openclaw webhooks gmail setup --account you@example.com --hook-url https://gateway.example.com/hooks/gmail
Installs gcloud and gog if missing, authenticates gcloud, creates the Pub/Sub topic and subscription, starts the Gmail watch, and writes hooks.gmail config with hooks.enabled=true. Prints Next: openclaw webhooks gmail run.

Required

FlagDescription
--account <email>Gmail account to watch.

Pub/Sub options

FlagDefaultDescription
--project <id>(none)GCP project id (the OAuth client owner). Falls back to the topic’s own project id, then to the project resolved from gog credentials.
--topic <name>gog-gmail-watchPub/Sub topic name.
--subscription <name>gog-gmail-watch-pushPub/Sub subscription name.
--label <label>INBOXGmail label to watch.
--push-endpoint <url>(none)Explicit Pub/Sub push endpoint. Overrides Tailscale.

OpenClaw delivery options

FlagDefaultDescription
--hook-url <url>Built from hooks.path and the Gateway portOpenClaw webhook URL.
--hook-token <token>hooks.token, or a generated tokenOpenClaw webhook token.
--push-token <token>Generated tokenPush token forwarded to gog watch serve.

gog watch serve options

FlagDefaultDescription
--bind <host>127.0.0.1gog watch serve bind host.
--port <port>8788gog watch serve port.
--path <path>/gmail-pubsubgog watch serve path. Forced to / when Tailscale is enabled without an explicit target, since Tailscale strips the path before proxying.
--include-bodytrueInclude email body snippets. There is no CLI flag to turn this off; set hooks.gmail.includeBody: false in config instead.
--max-bytes <n>20000Max bytes per body snippet.
--renew-minutes <n>720 (12h)Renew Gmail watch every N minutes.

Tailscale exposure

FlagDefaultDescription
--tailscale <mode>funnelExpose push endpoint via tailscale: funnel, serve, or off.
--tailscale-path <path>(none)Path for tailscale serve/funnel.
--tailscale-target <t>(none)Tailscale serve/funnel target (port, host:port, or URL).

Output

FlagDescription
--jsonPrint a machine-readable summary instead of text.

webhooks gmail run

openclaw webhooks gmail run --account you@example.com
Runs gog watch serve plus the watch auto-renew loop in the foreground, restarting gog watch serve after a 2s delay if it exits unexpectedly. run accepts the same Pub/Sub, OpenClaw delivery, gog watch serve, and Tailscale flags as setup, except:
  • --account is optional on run; it falls back to hooks.gmail.account.
  • run does not accept --project, --push-endpoint, or --json.
  • Every flag falls back to the matching hooks.gmail.* config value (written by setup), then to the same built-in default setup uses, with one exception: --tailscale defaults to off on run (not funnel) when neither the flag nor hooks.gmail.tailscale.mode is set.
CategoryFlags
Pub/Sub--account, --topic, --subscription, --label
OpenClaw delivery--hook-url, --hook-token, --push-token
gog watch serve--bind, --port, --path, --include-body, --max-bytes, --renew-minutes
Tailscale--tailscale, --tailscale-path, --tailscale-target
For run, the --topic value is the full Pub/Sub topic path (projects/.../topics/...), not just the short topic name.