Conecta Gmail a OpenClaw: Configuración rápida en 5 minutos
¿Alguna vez has intentado automatizar acciones basadas en correos electrónicos y has terminado frustrado con el polling constante? Es un dolor de cabeza configurar webhooks que realmente funcionen en tiempo real sin complicar toda tu infraestructura o quemar tus cuotas de API.
Si buscas una forma directa de conectar Gmail con tus flujos de trabajo, esta guía te muestra cómo usar Pub/Sub para enviar notificaciones push directamente a OpenClaw. Es la mejor ruta para tener una respuesta inmediata y eficiente.
Gmail Pub/Sub -> OpenClaw
Sección titulada «Gmail Pub/Sub -> OpenClaw»Objetivo: Gmail watch -> Pub/Sub push -> gog gmail watch serve -> OpenClaw webhook.
Requisitos previos
Sección titulada «Requisitos previos»gcloudinstalado y con sesión iniciada (guía de instalación).gog(gogcli) instalado y autorizado para la cuenta de Gmail (gogcli.sh).- OpenClaw hooks habilitados (ver Webhooks).
tailscalecon sesión iniciada (tailscale.com). La configuración soportada usa Tailscale Funnel para el endpoint público HTTPS. Otros servicios de túnel pueden funcionar, pero son DIY (hazlo tú mismo), no tienen soporte y requieren cableado manual. Ahora mismo, Tailscale es lo que soportamos.
Ejemplo de configuración de hook (habilita el mapeo preestablecido de Gmail):
{ hooks: { enabled: true, token: "OPENCLAW_HOOK_TOKEN", path: "/hooks", presets: ["gmail"], },}Para entregar el resumen de Gmail a una superficie de chat, sobrescribe el preset con un mapeo que configure deliver y opcionalmente channel/to:
{ hooks: { enabled: true, token: "OPENCLAW_HOOK_TOKEN", presets: ["gmail"], mappings: [ { match: { path: "gmail" }, action: "agent", wakeMode: "now", name: "Gmail", sessionKey: "hook:gmail:{{messages[0].id}}", messageTemplate: "New email from {{messages[0].from}}\nSubject: {{messages[0].subject}}\n{{messages[0].snippet}}\n{{messages[0].body}}", model: "openai/gpt-5.2-mini", deliver: true, channel: "last", // to: "+15551234567" }, ], },}Si quieres un canal fijo, configura channel + to. De lo contrario, channel: "last" usa la última ruta de entrega (por defecto WhatsApp).
Para forzar un modelo más barato en las ejecuciones de Gmail, configura model en el mapeo (provider/model o alias). Si aplicas agents.defaults.models, inclúyelo allí.
Para establecer un modelo predeterminado y un nivel de pensamiento específicos para los hooks de Gmail, añade hooks.gmail.model / hooks.gmail.thinking en tu configuración:
{ hooks: { gmail: { model: "openrouter/meta-llama/llama-3.3-70b-instruct:free", thinking: "off", }, },}Notas:
- El
model/thinkingpor hook en el mapeo sigue teniendo prioridad sobre estos valores predeterminados. - Orden de respaldo:
hooks.gmail.model→agents.defaults.model.fallbacks→ primario (auth/límites de tasa/timeouts). - Si
agents.defaults.modelsestá configurado, el modelo de Gmail debe estar en la lista de permitidos. - El contenido del hook de Gmail está envuelto con límites de seguridad para contenido externo por defecto. Para desactivarlo (peligroso), configura
hooks.gmail.allowUnsafeExternalContent: true.
Para personalizar más el manejo de la carga útil (payload), añade hooks.mappings o un módulo de transformación JS/TS bajo hooks.transformsDir (ver Webhooks).
Asistente (recomendado)
Sección titulada «Asistente (recomendado)»Usa el ayudante de OpenClaw para conectar todo (instala dependencias en macOS a través de brew):
openclaw webhooks gmail setup \ --account openclaw@gmail.comValores por defecto:
- Usa Tailscale Funnel para el endpoint de push público.
- Escribe la configuración
hooks.gmailparaopenclaw webhooks gmail run. - Habilita el preset del hook de Gmail (
hooks.presets: ["gmail"]).
Nota sobre la ruta: cuando tailscale.mode está habilitado, OpenClaw configura automáticamente hooks.gmail.serve.path como / y mantiene la ruta pública en hooks.gmail.tailscale.path (por defecto /gmail-pubsub) porque Tailscale elimina el prefijo de la ruta configurada antes de actuar como proxy.
Si necesitas que el backend reciba la ruta con prefijo, configura hooks.gmail.tailscale.target (o --tailscale-target) con una URL completa como http://127.0.0.1:8788/gmail-pubsub y haz que coincida con hooks.gmail.serve.path.
¿Quieres un endpoint personalizado? Usa --push-endpoint <url> o --tailscale off.
Nota de plataforma: en macOS el asistente instala gcloud, gogcli y tailscale vía Homebrew; en Linux instálalos manualmente primero.
Auto-inicio del Gateway (recomendado):
- Cuando
hooks.enabled=trueyhooks.gmail.accountestá configurado, el Gateway iniciagog gmail watch serveal arrancar y renueva automáticamente el watch. - Configura
OPENCLAW_SKIP_GMAIL_WATCHER=1para excluirte (útil si ejecutas el demonio tú mismo). - No ejecutes el demonio manual al mismo tiempo, o te encontrarás con el error
listen tcp 127.0.0.1:8788: bind: address already in use.
Demonio manual (inicia gog gmail watch serve + renovación automática):
openclaw webhooks gmail runConfiguración única
Sección titulada «Configuración única»- Selecciona el proyecto de GCP que sea propietario del cliente OAuth utilizado por
gog.
gcloud auth logingcloud config set project <project-id>Nota: Gmail watch requiere que el tema (topic) de Pub/Sub resida en el mismo proyecto que el cliente OAuth.
- Habilita las API:
gcloud services enable gmail.googleapis.com pubsub.googleapis.com- Crea un tema:
gcloud pubsub topics create gog-gmail-watch- Permite que el push de Gmail publique:
gcloud pubsub topics add-iam-policy-binding gog-gmail-watch \ --member=serviceAccount:gmail-api-push@system.gserviceaccount.com \ --role=roles/pubsub.publisherIniciar el watch
Sección titulada «Iniciar el watch»gog gmail watch start \ --account openclaw@gmail.com \ --label INBOX \ --topic projects/<project-id>/topics/gog-gmail-watchGuarda el history_id de la salida (para depuración).
Ejecutar el controlador de push
Sección titulada «Ejecutar el controlador de push»Ejemplo local (autenticación con token compartido):
gog gmail watch serve \ --account openclaw@gmail.com \ --bind 127.0.0.1 \ --port 8788 \ --path /gmail-pubsub \ --token <shared> \ --hook-url http://127.0.0.1:18789/hooks/gmail \ --hook-token OPENCLAW_HOOK_TOKEN \ --include-body \ --max-bytes 20000Notas:
--tokenprotege el endpoint de push (x-gog-tokeno?token=).--hook-urlapunta a OpenClaw/hooks/gmail(mapeado; ejecución aislada + resumen al principal).--include-bodyy--max-bytescontrolan el fragmento del cuerpo enviado a OpenClaw.
Recomendado: openclaw webhooks gmail run envuelve el mismo flujo y renueva automáticamente el watch.
Exponer el controlador (avanzado, no soportado)
Sección titulada «Exponer el controlador (avanzado, no soportado)»Si necesitas un túnel que no sea Tailscale, conéctalo manualmente y usa la URL pública en la suscripción de push (no soportado, sin protecciones):
cloudflared tunnel --url http://127.0.0.1:8788 --no-autoupdateUsa la URL generada como endpoint de push:
gcloud pubsub subscriptions create gog-gmail-watch-push \ --topic gog-gmail-watch \ --push-endpoint "https://<public-url>/gmail-pubsub?token=<shared>"Producción: usa un endpoint HTTPS estable y configura Pub/Sub OIDC JWT, luego ejecuta:
gog gmail watch serve --verify-oidc --oidc-email <svc@...>Envía un mensaje a la bandeja de entrada vigilada:
gog gmail send \ --account openclaw@gmail.com \ --to openclaw@gmail.com \ --subject "watch test" \ --body "ping"Verifica el estado del watch y el historial:
gog gmail watch status --account openclaw@gmail.comgog gmail history --account openclaw@gmail.com --since <historyId>Solución de problemas
Sección titulada «Solución de problemas»Invalid topicName: desajuste de proyecto (el tema no está en el proyecto del cliente OAuth).User not authorized: faltaroles/pubsub.publisheren el tema.- Mensajes vacíos: el push de Gmail solo proporciona el
historyId; recupéralo a través degog gmail history.
Limpieza
Sección titulada «Limpieza»gog gmail watch stop --account openclaw@gmail.comgcloud pubsub subscriptions delete gog-gmail-watch-pushgcloud pubsub topics delete gog-gmail-watchSiguientes pasos
Sección titulada «Siguientes pasos»¿Necesitas ayuda para configurar esto en tu entorno específico? Prueba el AI Setup Assistant.
OpenClaw Expert
Sigues atascado?
Si esta pagina no resolvio tu caso, pregunta a OpenClaw Expert para pasos concretos.