Webhooks
Receive real-time notifications when async operations complete.
Overview
Webhooks allow you to receive HTTP callbacks when certain events occur in your account. Instead of polling the API, you can subscribe to events and receive real-time notifications.
Pro & Enterprise: Webhooks are available on Pro and Enterprise plans.
Setting Up Webhooks
Configure your webhook endpoint in the dashboard settings. Your endpoint must:
Accept POST requests
Return a 2xx status code within 30 seconds
Use HTTPS (required for production)
Webhook Events
enrich.completedCompany enrichment completed successfully
enrich.failedCompany enrichment failed
scrape.completedURL scrape completed successfully
scrape.failedURL scrape failed
batch.completedBatch job completed
batch.progressBatch job progress update
Webhook Payload
All webhook payloads follow this structure:
{
"id": "evt_abc123xyz",
"type": "enrich.completed",
"created": "2026-01-15T12:00:00Z",
"data": {
"requestId": "req_xyz789",
"url": "stripe.com",
"result": {
"domain": "stripe.com",
"name": "Stripe",
"industry": "Financial Technology",
// ... full enrichment data
}
}
}Verifying Webhooks
All webhooks include a signature in the X-Vera-Signature header. Always verify this signature to ensure the webhook is authentic.
X-Vera-Signature: sha256=abc123...
X-Vera-Timestamp: 1705320000
Content-Type: application/jsonimport crypto from 'crypto';
function verifyWebhook(payload, signature, secret) {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(`sha256=${expectedSignature}`)
);
}Retry Policy
If your endpoint returns a non-2xx status code or times out, we'll retry the webhook with exponential backoff:
Best Practices
Respond quickly
Return a 200 status immediately and process the webhook asynchronously. Webhooks timeout after 30 seconds.
Handle duplicates
Use the event id to deduplicate events. The same event may be delivered more than once.
Verify signatures
Always verify the webhook signature before processing. Never trust unverified payloads.
Log events
Keep logs of received webhooks for debugging. Include the event ID and timestamp.