Webhooks

Push real-time events from Clarm to your own systems. Webhooks fire on purchases, identifies, enterprise alerts, and goal completions.

Setting up a webhook

  1. Go to Dashboard → Integrations
  2. Click Add Integration
  3. Choose Webhook and enter your endpoint URL
  4. Select which events should trigger the webhook
  5. Save and enable

Webhook payload

All webhooks send a JSON POST with this structure:

Webhook payloadjson
{
  "event": "purchase",
  "timestamp": "2026-02-12T14:30:00Z",
  "data": {
    "visitor_id": "v_abc123",
    "email": "jane@acme.com",
    "amount": 299.00,
    "currency": "USD",
    "plan": "growth"
  }
}

Supported events

  • purchase — a conversion or payment was tracked
  • identify — a visitor was identified with email/name
  • goal_achieved — a custom goal was completed
  • enterprise_alert — AI detected an enterprise buyer
  • visitor_enriched — IP enrichment identified a company for a visitor for the first time
  • high_intent_visitor — visitor's behavioral intent score crossed the threshold (≥70)

Enrichment webhook payloads

visitor_enriched payloadjson
{
  "event": "visitor_enriched",
  "timestamp": "2026-03-23T14:30:00Z",
  "data": {
    "visitor_id": "v_abc123",
    "company": {
      "name": "Acme Corp",
      "domain": "acme.com",
      "industry": "Software",
      "size": "201-500",
      "revenue": "$50M-$100M",
      "location": "San Francisco, CA"
    },
    "enterprise_score": 75,
    "enrichment_source": "peopledatalabs"
  }
}
high_intent_visitor payloadjson
{
  "event": "high_intent_visitor",
  "timestamp": "2026-03-23T14:35:00Z",
  "data": {
    "visitor_id": "v_abc123",
    "intent_score": 82,
    "company": {
      "name": "Acme Corp",
      "industry": "Software",
      "size": "201-500"
    },
    "engagement": {
      "pages_viewed": 5,
      "messages_sent": 3,
      "current_url": "https://example.com/pricing"
    }
  }
}

Retry policy

Failed deliveries (non-2xx responses) are retried up to 3 times with exponential backoff (2s, 4s, 8s). After all retries fail, the event is logged in Dashboard → Integrations → Delivery Logs.

!

Webhook endpoints must respond within 10 seconds. For long-running processing, return 200 immediately and process asynchronously.