Skip to content
emploreadocs

Webhooks

Webhooks stream Emplorea events to your systems in real time - the agent equivalent of push notifications. Create endpoints in Settings, then Integrations, or via POST /api/v1/webhooks (webhooks scope). Endpoints must be HTTPS.

Events

employee.created     employee.updated     employee.terminated
leave.requested      leave.approved       leave.declined
leave.cancelled
document.uploaded    document.signed      (fire once documents ship)

Payload

{
  "id": "evt-uuid",            // unique per event - deduplicate on this
  "event": "employee.created",
  "created_at": "2026-06-13T03:12:45.000Z",
  "company_id": "uuid",
  "data": { ...the full resource object }
}

Signature verification - always verify first

Every delivery is signed with HMAC-SHA256 using your endpoint secret (shown once at creation). The signature arrives in the X-Emplorea-Signature header as sha256=<hex>. Verify before processing:

import { createHmac, timingSafeEqual } from "node:crypto";

function verify(rawBody, signatureHeader, secret) {
  const expected = "sha256=" +
    createHmac("sha256", secret).update(rawBody).digest("hex");
  return timingSafeEqual(Buffer.from(expected), Buffer.from(signatureHeader));
}

Delivery and retries

  • 3 attempts per event with exponential backoff (immediately, 2s, 8s).
  • 30 second timeout per attempt; any 2xx response counts as delivered.
  • Every attempt outcome is logged - see the per-endpoint log in Settings.
  • Use the Test button (or a ping event) to verify your receiver end to end.
  • Paused endpoints receive nothing until resumed; deletes are soft.