Google Chat integration
Pencheff posts lifecycle events (scan started, scan done, scan failed, each new finding, finding updated) to a Google Chat space via an Incoming Webhook. Same shape as Slack — a single text message per event, filterable by severity and scoped per target.
Setup
- Open the Google Chat space → + → Apps & integrations → Webhooks → Manage webhooks → Add webhook.
- Give it a name (e.g.
Pencheff) and an avatar URL if you want one. - Copy the URL — it looks like
https://chat.googleapis.com/v1/spaces/AAAA…/messages?key=…&token=…. - In Pencheff: Dashboard → Integrations → Connect → Google Chat. Paste the URL, set the severity filter, optionally narrow the target/event scope, save.
Via API
POST /integrations
Content-Type: application/json
{
"kind": "google_chat",
"name": "#sec-alerts",
"severity_filter": "high",
"config": {
"webhook_url": "https://chat.googleapis.com/v1/spaces/AAAA/messages?key=…&token=…"
},
"target_ids": [],
"events": []
}target_ids empty (or omitted) → fires for every target in the
workspace. events empty → fires on every lifecycle event. See
Integrations overview for the per-target +
per-event scoping model.
What the message looks like
🚀 Scan started — Juvion (https://juvion.in) [engage]
✅ Scan done — Juvion · Grade B · 2 high, 12 medium, 11 low
🔴 [HIGH] CVSS 7.5 — S3 Bucket Publicly Listable
https://admin-data.s3.amazonaws.com/
🔁 Finding updated — S3 Bucket Publicly Listable: verification_status: unverified → true_positive
❌ Scan failed — Juvion: ConnectionRefusedNotes
- Webhooks support plain text up to ~4 KB per message — Pencheff truncates finding descriptions to keep room.
- Pencheff can be upgraded to send Google Chat cards (with severity
pills, links, and a CVSS badge) by setting
style: "card"in the integration config. Plain text is the default for compatibility with every space. - No outbound IP allow-list is needed — the worker initiates the connection.