Appearance
Sentry
Sentry issue / alert webhooks POST JSON to Exhale. Each tenant gets a unique HTTPS URL token. Exhale scrubs the payload, upserts a Pulse (source=sentry), and runs triage when the issue action maps to created / triggered / similar.
See Incoming integrations for how Sentry fits alongside PagerDuty, New Relic, and Manual webhook.
OpenAPI: POST /webhooks/sentry (header token) and POST /webhooks/sentry/{token}.
Endpoint
After Connect in Connections → Integrations → Observability & alerts → Sentry:
Preferred (keeps tokens out of proxy access logs):
POST https://exhale.kolstromsystems.com/webhooks/sentrySend header X-Exhale-Webhook-Token: {token}.
Path form (also supported):
POST https://exhale.kolstromsystems.com/webhooks/sentry/{token}Design partners may substitute https://exhale-staging.kolstromsystems.com as the host.
token— opaque URL segment; this token authenticates the delivery.- Response: 202 Accepted with
pulse_id,status,created, andmessage.
Unknown tokens return 404. Disabled or expired-trial tenants return 403.
Customer setup
- Sign in as admin → Connections → Integrations → Sentry.
- Click Connect Sentry and copy the webhook URL.
- In Sentry, add an alert rule or internal integration webhook and paste the Exhale URL.
- Send issue created/resolved (or alert) events that include an issue id.
- Send test alert creates a synthetic pulse and marks the integration configured.
Rotate webhook token invalidates the previous URL immediately — update Sentry after rotating.
Payload shape
| Field | Required | Notes |
|---|---|---|
Issue id | Yes | Stable id for dedupe (source=sentry); nested under data.issue or flat |
action / status | No | created, resolved, triggered, … |
title | No | Pulse title |
Lifecycle mapping
| Sentry action / status | Pulse status |
|---|---|
| Created, triggered, open, unresolved | Received → triage |
| Resolved, archived, closed | Resolved |
Example
bash
TOKEN="your-url-token"
curl -i -X POST "https://exhale.kolstromsystems.com/webhooks/sentry/${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"action":"created","data":{"issue":{"id":"12345","title":"TypeError"}}}'Related
Full detail (dedupe, fixtures, security): Sentry webhooks in the repository wiki. Planning track: Observability ingest v2.