Webhooks
Webhooks let you receive real-time HTTP notifications when Shingo discovers new findings, completes an analysis run, or detects a change in connector status.
Event types
finding.createdFired when a new finding is discovered. Includes the full execution package.
finding.updatedFired when a finding's status changes (e.g., resolved, dismissed).
analysis.completedFired when an analysis run finishes. Includes summary stats.
connector.errorFired when a connector encounters an authentication or data error.
connector.syncedFired when a connector completes a data sync cycle.
Payload format
Webhook payloads are sent as JSON POST requests to your configured endpoint:
{
"event": "finding.created",
"timestamp": "2026-03-10T14:30:00Z",
"data": {
"id": "shg_2847",
"severity": "critical",
"confidence": 0.94,
"root_cause": "JS lib v2.4.0 broke mobile validation",
"revenue_impact": {
"annual": 1800000,
"currency": "USD"
},
"suggested_fix": "Revert to v2.3.1"
}
}Verification
Every webhook request includes a signature header for verification:
X-Shingo-Signature: sha256=xxxxxxxxxxxxxxxx
Verify the signature by computing HMAC-SHA256 of the raw request body using your webhook secret. Reject requests where the signature doesn't match.
Retry policy
If your endpoint returns a non-2xx status code, Shingo retries with exponential backoff:
1st retry
1 minute
2nd retry
5 minutes
3rd retry
30 minutes
After 3 failed attempts, the webhook is marked as failed and you'll receive an email notification. Failed webhooks can be retried manually via the API.