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 |
Migration note: The deprecatedactions.generatedwebhook event is no longer supported. If you previously used it to kick off generated-action automations, subscribe tosearch-tracking.completedinstead, and then call the actions API or MCP tools to load the latest recommendations and briefs for the 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 Webhooks in the account 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
Scoped API keys must include:webhooks.readto list webhook subscriptionswebhooks.writeto create, delete, or rotate webhook secrets
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).
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