Google Chat integration
The Google Chat integration posts alerts into a space as cardsV2 messages. It needs one thing: the space’s incoming webhook URL.
What you need
Section titled “What you need”-
In Google Chat, open the space you want alerts in.
-
Apps & integrations → Webhooks → Add webhook.
-
Copy the URL. It looks like
https://chat.googleapis.com/v1/spaces/....
Connect it
Section titled “Connect it”In the dashboard, Integrations → Add Integrations → Google Chat. Name it, paste the URL into Webhook URL, and click Add. Or via the API:
curl -X POST https://api.siteqwality.com/integration/google_chat \ -H "Authorization: Bearer $SITEQWALITY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "friendly_name": "Acme Google Chat", "url": "https://chat.googleapis.com/v1/spaces/..." }'Note the request field is url, while the stored and returned field is google_chat_webhook_url.
Both fields are required and must be non-empty. Nothing validates that the value is a URL at all, let alone a working one, so a typo shows up as a failed notification rather than an error at save time.
Create a channel
Section titled “Create a channel”curl -X POST https://api.siteqwality.com/notification \ -H "Authorization: Bearer $SITEQWALITY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "notification_group_id": "<your-group-id>", "type": "google_chat", "details": { "google_chat_integration_id": "<google-chat-integration-id>" } }'Message format
Section titled “Message format”Messages render as a Google Chat card with a header and a body section carrying the monitor name, URL, and status. Recovery messages use the same card shape.
Delivery behavior
Section titled “Delivery behavior”Each attempt has a 15 second timeout, and any non-2xx response counts as a failure.
Limitations
Section titled “Limitations”Google Chat channels fire for HTTP monitors, browser checks, and DNS/domain expiry. TLS expiry and cron/heartbeat monitors only support email, SMS, and Slack today; a Google Chat channel on a group used by those monitor types is skipped.