How webhooks work
When NearIQ detects a competitive change, it can POST a JSON payload to a URL you register. This lets you build real-time integrations — send an alert to Slack, trigger a workflow, or update your own dashboard.Registering a webhook
competitor.rating_change, competitor.review_surge, competitor.hours_change, competitor.price_change, competitor.status_change, competitor.website_change, competitor.new_competitor, business.rating_change, business.review_surge, alert.created, api_key.suspended, api_key.reactivated, and api_key.revoked_by_admin.
Payload format
Verifying signatures
NearIQ signs every webhook delivery using HMAC-SHA256. Verify the signature to ensure the request came from NearIQ:X-NearIQ-Delivery, X-NearIQ-Event, X-NearIQ-Timestamp, and X-NearIQ-Signature. The signature uses the exact raw request body, prefixed by the timestamp.
Retry behavior
NearIQ retries failed deliveries (non-2xx response or timeout) with exponential backoff:- Retry delays start at about 1 minute
- Delays increase exponentially and cap at about 1 hour
- Deliveries are attempted up to 8 times
Webhook management endpoints
All webhook management endpoints require an API key with thewebhooks:manage scope and a Growth+ plan.
GET /webhooks — List webhooks
POST /webhooks — Register a webhook
| Field | Type | Required | Notes |
|---|---|---|---|
url | string | yes | Must use HTTPS. No localhost, private, or reserved hosts. |
events | string[] | yes | At least one event type. See supported events above. |
secret is returned only on creation. Store it securely — it cannot be retrieved again.
PATCH /webhooks/:id — Update a webhook
| Field | Type | Required | Notes |
|---|---|---|---|
url | string | no | New HTTPS endpoint URL. |
events | string[] | no | Replace the event list. |
active | boolean | no | Set false to pause deliveries without deleting. |