
Streams incoming Gmail messages as NDJSON using Google Cloud Pub/Sub, which is useful for building email automation workflows or monitoring specific inboxes. Sets up the necessary Pub/Sub topic and subscription automatically, handles Gmail's push notifications, and lets you filter by label IDs like INBOX or UNREAD. The watch expires after 7 days so you'll need to re-run it periodically. Works well for feeding email data into scripts or dashboards, though you'll need a GCP project with billing enabled since it creates Pub/Sub resources.
$ npx -y skills add googleworkspace/cli --skill gws-gmail-watch --agent claude-codeInstalls into .claude/skills of the current project.
PREREQUISITE: Read
../gws-shared/SKILL.mdfor auth, global flags, and security rules. If missing, rungws generate-skillsto create it.
Watch for new emails and stream them as NDJSON
gws gmail +watch
| Flag | Required | Default | Description |
|---|---|---|---|
--project | — | — | GCP project ID for Pub/Sub resources |
--subscription | — | — | Existing Pub/Sub subscription name (skip setup) |
--topic | — | — | Existing Pub/Sub topic with Gmail push permission already granted |
--label-ids | — | — | Comma-separated Gmail label IDs to filter (e.g., INBOX,UNREAD) |
--max-messages | — | 10 | Max messages per pull batch |
--poll-interval | — | 5 | Seconds between pulls |
--msg-format | — | full | Gmail message format: full, metadata, minimal, raw |
--once | — | — | Pull once and exit |
--cleanup | — | — | Delete created Pub/Sub resources on exit |
--output-dir | — | — | Write each message to a separate JSON file in this directory |
gws gmail +watch --project my-gcp-project
gws gmail +watch --project my-project --label-ids INBOX --once
gws gmail +watch --subscription projects/p/subscriptions/my-sub
gws gmail +watch --project my-project --cleanup --output-dir ./emails
Sponsors