One-time wizard: Gmail watch, Pub/Sub topic/subscription, and OpenClaw hook delivery.
gmail run
Run 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](/automation/cron-jobs#gmail-pubsub-integration) for the auto-start details and `OPENCLAW_SKIP_GMAIL_WATCHER` opt-out.
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
Flag
Description
--account <email>
Gmail account to watch.
Pub/Sub options
Flag
Default
Description
--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.
gog watch serve path. Forced to / when Tailscale is enabled without an explicit target, since Tailscale strips the path before proxying.
--include-body
true
Include email body snippets. There is no CLI flag to turn this off; set hooks.gmail.includeBody: false in config instead.
--max-bytes <n>
20000
Max bytes per body snippet.
--renew-minutes <n>
720 (12h)
Renew Gmail watch every N minutes.
Tailscale exposure
Flag
Default
Description
--tailscale <mode>
funnel
Expose 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
Flag
Description
--json
Print 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.