Integrations
Hexowatch
Overview
This document provides a complete guide to integrating Hexowatch with Callgoose SQIBS using outgoing webhooks.
Hexowatch sends change detection events (visual, content, HTML, etc.) to Callgoose SQIBS, where they automatically create incidents through API Filters. This integration uses Hexowatch’s Webhook settings and Callgoose SQIBS’s Process API endpoint.
Prerequisites
Ensure you have the following before beginning:
- Hexowatch: Active account (Premium or Business plan required for webhooks).
- Callgoose SQIBS:
- API Token.
- API endpoint.
- Configuration: At least one Hexowatch monitor to generate alerts.
1. Obtain Callgoose API Token & Endpoint
Refer API Token & API Endpoint
- Generate a new token or use an existing one.
- Construct your Callgoose inbound process URL.
URL Format:
https://****.callgoose.com/v1/process?from=Hexawatch&token=<API_TOKEN>
Note: Replace <API_TOKEN> with your actual token. Store this securely.
2. Webhook Payload Strategy
Unlike some tools that allow custom JSON templates, Hexowatch sends a Fixed JSON Payload structure. You cannot modify the keys (e.g., id, monitoredUrl, changePercentage) sent by Hexowatch.
Therefore, the integration strategy relies entirely on Callgoose SQIBS API Filters to map these static fields into the incident structure.
Key Hexowatch Fields:
- id: Unique identifier for the change event.
- title: Title of the change (e.g., "Visual monitoring change detected").
- monitoredUrl: The specific URL where the change happened.
- changePercentage: The magnitude of the change.
- link: A direct link to the comparison report in Hexowatch.
3. Configure Hexowatch → Outgoing Webhook
You can configure webhooks globally (for all monitors) or per monitor.
3.1 Configure Webhook
- Login to your Hexowatch dashboard.
- Navigate to Settings -> Integrations (or click on the Webhooks tab).
- Alternatively, for a single monitor: Go to the specific Monitor -> Settings -> Webhooks.
- Webhook URL: Enter the URL constructed in Section 1.
3.2 Add Headers (Not Applicable)
Hexowatch's standard webhook configuration does not typically support adding custom HTTP headers via the UI. Ensure you pass the token as a query parameter in the URL as shown in step 3.1.
3.3 Payload Structure
Hexowatch will automatically send a JSON body similar to the structure below. You do not need to configure a template in Hexowatch.
4. Sample Trigger Payload
Hexowatch is an event-based monitoring system. It triggers an alert when a change is detected.
4.1 Trigger (Change Detected)
{
"id": "chg_123456789",
"title": "Visual monitoring change detected",
"monitoredUrl": "https://example.com",
"name": "Homepage Visual Check",
"createdDate": "2025-11-10 09:12:00",
"changePercentage": "15",
"link": "https://hexowatch.com/monitor/123/comparison/456",
"diff_data": "...",
"tags": ["production", "landing-page"]
}
Note: Hexowatch does not typically send a "Resolved" event because a change is a point-in-time occurrence, not a state duration like server downtime.
5. Configure Callgoose SQIBS API Filters
Since Hexowatch provides a fixed payload, you must map the fields in Callgoose.
5.1 Trigger Filter (Create Incident)
- Navigate to Integrations -> API Filters -> Create New.
- Configure the rules:
- Payload JSON Key: "id"
- Key Value Contains: Exists (Select "Exists" or "Is Not Null" condition)
- Incident Mapped With: "id"
- Title Field: "name"
- Description Field: "title"
5.2 Resolve Filter (Resolve Incident)
- Configuration: Not applicable for standard Hexowatch monitors.
- Recommendation: Set your Callgoose Service to Auto-Resolve incidents after a specific duration (e.g., 1 hour) or resolve them manually after reviewing the Hexowatch report.
This ensures:
- Every detected change creates a unique incident.
- The incident contains the direct link to the visual diff for immediate analysis.
6. Testing the Integration
- Save the Hexowatch webhook configuration.
- Trigger a Check:
- Go to a Hexowatch monitor and click Run Now.
- Alternatively, make a small visible change to the monitored page to force a detection.
- Verify in Callgoose:
- Check API Logs to confirm receipt (HTTP 200 OK).
- Confirm a new incident is created with the title and link populated correctly.
- Cleanup: Remove any test data if necessary.
7. Security Recommendations
- HTTPS: Always use https:// for the Callgoose URL.
- Token Security: Since the token is passed in the URL (Query Parameter), ensure that you do not share screenshots of your Webhook URL settings.
- Scope: If possible, use a dedicated API token for integrations to easily revoke access if compromised.
8. Troubleshooting
- No Incident Created
- Webhook URL: Ensure the token parameter is correctly appended to the URL (?token=...).
- Filter Mismatch: Check Callgoose API Logs. If the log says "Discarded," ensure your Trigger Filter is looking for the id key or changePercentage, not a status field like "down".
- Plan Limits: Verify your Hexowatch plan supports webhooks.
- Missing Description Data
- Field Names: Hexowatch field names are case-sensitive. Ensure you use {{monitoredUrl}} (camelCase), not {{monitored_url}}.
- Empty Values: If changePercentage is empty in the incident, the monitor might have triggered on a keyword or technology change rather than a visual percentage change.
- Webhook Not Received
- Firewall: Ensure no corporate firewall is blocking outgoing requests from Hexowatch servers.
- Endpoint: Verify the Callgoose endpoint returns a 2xx status code when tested via curl or Postman.
9. Conclusion
Integrating Hexowatch with Callgoose SQIBS provides a seamless, real-time awareness of website changes. By combining Hexowatch’s visual and content intelligence with Callgoose’s incident routing, you can ensure that unauthorized changes, defacements, or critical content updates are immediately brought to your team's attention.
By using the simple API Filter mappings defined above, this integration ensures that change events are accurately reflected within Callgoose.
For further customization or advanced use cases, refer to the official documentation for both Hexowatch and Callgoose SQIBS:
