# WIP.md ## Current focus Google Workspace + n8n integration ## Goal Use OpenClaw as the brain, n8n as the orchestration layer, and Google Workspace as a real execution surface for Gmail/Calendar workflows. ## Current status Status: `in-progress` Owner: `zap` Started: `2026-03-12` ### Architecture decision - Keep `openclaw-action` as the narrow authenticated ingress into n8n. - Keep approval/state/logging in n8n. - Use host-side `gog` execution for Google Workspace actions for now. - Attach execution results back into n8n history so approval items become auditable records. - Prefer this over broad n8n Google credential sprawl unless a later need clearly justifies it. ## What is already done ### n8n action bus - [x] Live `openclaw-action` workflow exists and is active. - [x] Core actions verified live: - `append_log` - `get_logs` - `notify` - `approval_queue_add` - `approval_queue_list` - `approval_queue_resolve` - `fetch_and_normalize_url` - `inbound_event_filter` - [x] Approval-gated notification execution works live: - `send_notification_draft` - approve → real `notify` ### Google access - [x] `gog` installed and authenticated for: - Gmail - Calendar - Drive - Contacts - Docs - Sheets - [x] Local-only Gog automation env stored outside git at: - `/home/openclaw/.openclaw/credentials/gog.env` - [x] Host bridge implemented: - `skills/n8n-webhook/scripts/resolve-approval-with-gog.py` - [x] n8n history patch action implemented: - `approval_history_attach_execution` - [x] Dry-run end-to-end bridge tests succeeded for: - Gmail draft creation - Calendar event creation - [x] Headless non-interactive Gog execution works via the stored local env. - [x] Direct real Gmail draft create test succeeded. - [x] Direct real Gmail draft delete test succeeded. - [x] Real n8n-routed Gmail draft test succeeded end-to-end (queue → approve via bridge → verify → delete). - approval id: `approval-mmnvjcak-qcuhbzqd` - draft id: `r348335896293726096` - subject: `[zap n8n e2e] Gmail draft test 20260312T194153Z` - [x] Real n8n-routed Calendar event test succeeded end-to-end (queue → approve via bridge → verify → delete). - approval id: `approval-mmnvjyo5-uezhcw84` - event id: `il3ojkfnsnq3uhlepvrmaklpq4` - title: `[zap n8n e2e] Calendar test 20260312T194222Z` ## What is left ### Highest priority: prove the bridge with real Google writes - [x] Real end-to-end Gmail draft via n8n path: 1. queue `send_email_draft` 2. approve via `resolve-approval-with-gog.py` 3. verify draft exists in Gmail 4. delete the test draft - [x] Real end-to-end Calendar event via n8n path: 1. queue `create_calendar_event` 2. approve via bridge 3. verify event exists in Calendar 4. delete the test event ### Then expand useful Google actions - [ ] Add `delete_email_draft` - [ ] Add `list_email_drafts` - [ ] Add `send_gmail_draft` / send-approved-email path - [ ] Add `update_calendar_event` - [ ] Add `delete_calendar_event` - [ ] Add `list_upcoming_events` - [ ] Decide whether Drive/Docs/Sheets need action-bus verbs next or can stay direct-tool only for now ### Then polish the operator experience - [ ] Add a compact operator command/reference section for common approval flows - [ ] Add one or two canned test payloads for real bridge verification flows - [ ] Decide whether some Google actions should stay approval-gated by default - [ ] Add low-noise reporting so history clearly shows: - queued - approved/rejected - executed - execution result id / draft id / event id ## Nice-to-have / future - [ ] Evaluate whether native n8n Google nodes are worth adding later - [ ] If useful, sync this work into the LAN Gitea repo for safer backup/review and easier long-lived tracking ## Current recommendation Next action should be: 1. add `delete_email_draft` and `list_email_drafts` 2. add `update_calendar_event`, `delete_calendar_event`, and `list_upcoming_events` 3. decide approval defaults for each new Google action ## Next-session handoff For the next fresh implementation session, start from `HANDOFF.md` + `WIP.md` rather than from old chat context. Immediate target: - prove the real approval-routed Gmail and Calendar paths end-to-end - clean up the created artifacts after verification - then refresh WIP/memory/tasks and commit ## Relevant files - `skills/n8n-webhook/assets/openclaw-action.workflow.json` - `skills/n8n-webhook/scripts/call-action.sh` - `skills/n8n-webhook/scripts/resolve-approval-with-gog.py` - `skills/n8n-webhook/references/openclaw-action.md` - `memory/2026-03-12.md` - `/home/openclaw/.openclaw/credentials/gog.env` (local-only, not for git) ## Current branch / checkpoints - branch: `feat/n8n-action-bus-v2` - key commits: - `9dcc477` — expand action bus starter workflow - `dc990a1` — deploy and verify expanded action bus - `1eabaeb` — add approval-gated notification executor - `afa48a3` — bridge approvals to gog executors - `044e36f` — auto-load local gog automation env