Event Types
| Event | Description |
|---|---|
search-tracking.completed | A search tracking run has finished processing |
visibility.changed | Visibility metrics have been calculated after a search tracking run |
actions.generated | New suggested actions have been created for a project |
Managing Webhooks via the Dashboard
You can create and manage webhooks directly from your account settings in the DevTune dashboard.- Navigate to your team account
- Open Settings > Webhooks in the sidebar
- Click Create Webhook
- Fill in the form:
- Endpoint URL — The HTTPS URL that will receive webhook POST requests
- Project — Select which project’s events should trigger the webhook
- Events — Check one or more event types to subscribe to
- Click Create Webhook
- Copy the signing secret shown in the dialog — this is the only time it will be displayed
- If you ever need a new secret, click the rotate icon next to the webhook — this generates a new secret and invalidates the old one immediately
Note: The Webhooks page requires the Plus plan or above (API Access entitlement). You must also have the settings.manage permission on the team account.
Managing Webhooks via the API
Create a Webhook
Request Body
Response (201)
secret is only returned when creating the webhook. Store it securely for signature verification.
List Webhooks
Response (200)
Delete a Webhook
Response (200)
Rotate Webhook Secret
Response (200)
Webhook Payload Format
When an event fires, DevTune sends a POST request with this body:visibility.changed payload
previousMetrics is null when there is no prior data (e.g., the first run for a project).
actions.generated payload
Headers
| Header | Description |
|---|---|
Content-Type | application/json |
X-DevTune-Signature | HMAC-SHA256 hex digest of the request body |
X-DevTune-Event | The event type (e.g., search-tracking.completed) |
User-Agent | DevTune-Webhook/2.0 |
Verifying Signatures
Every webhook delivery includes anX-DevTune-Signature header containing an HMAC-SHA256 hex digest computed with your webhook secret.
Node.js Example
Important: Use the raw request body (before JSON parsing) for signature verification. In Express, use express.raw({ type: 'application/json' }) on your webhook route to get the raw buffer.
Python Example
Retry Policy
Failed deliveries (non-2xx responses or timeouts) are retried up to 3 times with exponential backoff. Each attempt is logged in the delivery log visible in the DevTune dashboard.Use Cases
- Slack notifications when a tracking run finishes
- CI/CD triggers to re-run checks when visibility changes
- Data pipelines that sync DevTune data to your warehouse on each update
- GTM automation that feeds generated actions into triage systems or agentic workflows
Related Endpoints
- Authentication - API key creation and usage
- Error Handling - Error codes and troubleshooting