Tier 3 — Webhooks
Outbound Webhooks
Subscribe to real-time events from Callix. When a subscribed event fires, Callix will POST a JSON payload to your registered endpoint.
Manage via API
| GET | /webhooks | List all registered webhook endpoints |
| POST | /webhooks | Register a new webhook endpoint |
| DELETE | /webhooks/:id | Remove a webhook endpoint |
Webhooks can also be managed in the Callix dashboard under Settings → Webhooks.
POST /webhooks
json
{
"url": "https://your-server.com/callix-webhooks",
"events": ["prospect.stage_changed", "payment.recorded"],
"label": "CRM sync"
}urlstringHTTPS endpoint to receive POST requestseventsstring[]Array of event type strings to subscribe tolabelstring?Human-readable label for this endpointThe response includes a secret field — store it securely, it's shown only once.
Signature verification
typescript
import crypto from "crypto"
function verifySignature(body: string, signature: string, secret: string): boolean {
const expected = crypto
.createHmac("sha256", secret)
.update(body)
.digest("hex")
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
)
}Payload shape
json
{
"event": "prospect.stage_changed",
"accountId": "<id>",
"occurredAt": 1748000000000,
"data": {
"prospectId": "<id>",
"previousStage": "lead",
"newStage": "closed"
}
}Supported events
prospect.createdA new prospect is created in Callixprospect.stage_changedA prospect's stage is updatedpayment.recordedA payment is recorded from any source (API, Stripe, etc.)call.completedA call record is created with a final outcomedeal_analysis.completedAn AI deal analysis finishes processingDelivery retries
If your endpoint returns a non-2xx status, Callix retries with exponential backoff — up to 5 attempts over ~2 hours. Delivery logs are available in the dashboard under Settings → Webhooks → Activity.
