Skip to content
Start free trial

Webhooks

Webhooks

Webhooks let you send real-time notifications from HARi to any external system when events happen in your CRM. Use them to connect HARi to custom applications, automation platforms, or internal tools.

  1. Create a workflow in HARi with a Call Webhook action
  2. Specify the target URL (your server, Zapier, Make, n8n, etc.)
  3. When the workflow triggers, HARi sends an HTTP POST request to your URL with the event data

Every webhook delivers a JSON payload:

{
"event": "record.created",
"entity": "contact",
"timestamp": "2026-03-31T14:30:00Z",
"workspace": "yourcompany",
"record": {
"id": "a1b2c3d4-...",
"name": "Jane Smith",
"email": "jane@example.com",
"company": "Acme Corp",
"owner": "Vincent",
"created_at": "2026-03-31T14:30:00Z"
},
"changes": {
"stage": {
"old": "qualification",
"new": "proposal"
}
}
}

The changes object is included only for update events and contains only the fields that changed.

You can trigger webhooks on any workflow event:

EventDescription
record.createdA new record was created
record.updatedA record was modified
record.deletedA record was deleted
stage.changedA BPF stage transition occurred
status.changedRecord status changed (active/inactive/archived)
assignment.changedRecord owner changed

Your server needs an HTTP endpoint that accepts POST requests and returns a 200 status code:

POST https://your-server.com/webhooks/hari
Content-Type: application/json
  1. Go to Settings > Workflows > + New Workflow
  2. Set the trigger (e.g., “When an opportunity is updated”)
  3. Add conditions if needed (e.g., “Stage changed to Closed Won”)
  4. Add action: Call Webhook
  5. Enter your endpoint URL
  6. Select which record fields to include in the payload
  7. Save and activate

You have two ways to verify a webhook reaches your endpoint:

  • Test fire from Settings (fastest). Open Settings → Webhooks, find the row for the webhook you just configured, and click Test fire. HARi sends a sample payload to the URL immediately. A result panel appears below the row showing the HTTP status code, response time, and the response body (truncated at 500 characters with a “Show more” link for longer payloads). Connection or timeout errors are surfaced in red. The panel persists until you click Dismiss or fire another test, so you can compare runs.

  • Trigger from a real event. Create or update a record that matches the workflow’s trigger conditions. The workflow fires its full payload to your endpoint and the delivery shows up in the workflow execution log.

Use the Test fire button when you’re iterating on the URL or payload shape. Use a real event when you want to verify the workflow’s own conditions and field selection.

If your endpoint returns a non-200 status code, network-errors, or times out (15-second limit):

  • Retry 1: after 1 second
  • Retry 2: after 2 seconds
  • Retry 3: after 4 seconds

Exponential backoff. 4xx responses (other than 408/429) stop retrying immediately — those indicate a client-side problem, not a transient failure. After 3 failed attempts, the delivery is marked as failed. Each attempt is logged in the workflow execution log.

When the webhook has a configured secret, HARi sends two headers with each delivery:

  • X-Webhook-Secret — your shared secret (so the receiver can validate without HMAC if simpler)
  • X-Webhook-Signature — HMAC-SHA256 of the raw JSON body using the same secret as the key

Verify either (or both) on your server to confirm the webhook came from HARi. Your webhook secret is configured in Settings > Webhooks.

Webhook URLs must use HTTPS. HTTP endpoints are rejected for security.

HARi sends webhooks as events occur with no artificial delay. If your endpoint is slow, consider using a queue (e.g., AWS SQS, RabbitMQ) to handle bursts.

Maximum concurrent webhook deliveries per workspace: 50.