Webhooks & Callbacks
Logimeter pushes data to your system via webhooks. Rather than your server polling the API, Logimeter sends HTTP POST requests to a URL you configure on each TrackingNumber when relevant events occur.
Overview
Webhooks are configured per TrackingNumber by setting callback URL fields. When a triggering event occurs (e.g. a call ends), Logimeter sends an HTTP POST to the configured URL with a JSON payload.
Types of Webhooks
| Webhook | Config field | Payload | When sent |
|---|---|---|---|
| Call Termination | call_term_callbacks | Call metadata (caller, duration, recording URL, etc.) | When any tracked call ends |
| Missed Call Saver | mcs_call_term_callbacks | MCS-specific data for missed calls | When a tracked call is missed and MCS is active |
| DataEvent (AI) | call_term_callbacks + ai_enabled | AI insights (intent, outcome, vehicle, sentiment) | After transcription and AI analysis complete |
Requirements for Your Endpoint
- HTTPS only. HTTP URLs are rejected. Your server must have a valid SSL certificate accessible from the internet.
- Respond with HTTP 200 within 10 seconds. Any other status code (or a timeout) is treated as a failed delivery.
- Accept POST requests with
Content-Type: application/json. - Return 200 immediately and process the payload in a background worker or queue. Do not perform slow operations synchronously inside the webhook handler.
If your endpoint takes longer than 10 seconds to respond, Logimeter marks the delivery as failed and begins the retry process — even if your server eventually processes the request. Always respond immediately.
Retry Policy
When a delivery fails, Logimeter retries automatically before giving up:
| Attempt | Delay |
|---|---|
| 1st retry | 1 minute after initial failure |
| 2nd retry | 5 minutes after 1st retry |
| 3rd retry | 30 minutes after 2nd retry |
| Final failure | Logged to the failed events endpoint |
After 3 failed retries, no further automatic attempts are made. Retrieve the payload from the relevant failed events endpoint and replay it manually.
Call Termination Payload
When a tracked call ends, Logimeter POSTs the following JSON to the URL set in call_term_callbacks on the TrackingNumber.
{
"call_id": 123456,
"tracking_number": "0879437575",
"caller_number": "27821234567",
"call_start_stamp": "2026-01-15T09:30:00+02:00",
"call_end_stamp": "2026-01-15T09:35:22+02:00",
"call_duration": 322,
"answered": true,
"recording_url": "https://recordings.logimeter.com/abc123.mp3",
"company": {
"name": "Cape Town Dealer",
"reference": "dealer-cape-town-001"
},
"contact": {
"name": "Jane Smith",
"reference": "agent-jane-001"
},
"reference": "lead-session-abc123"
}
| Field | Type | Description |
|---|---|---|
| call_id | integer | Logimeter's internal call ID. |
| tracking_number | string | The tracking number that received the call. |
| caller_number | string | The caller's number in E.164 format (no +). |
| call_start_stamp | datetime | ISO 8601 timestamp when the call started (SAST). |
| call_end_stamp | datetime | ISO 8601 timestamp when the call ended (SAST). |
| call_duration | integer | Call duration in seconds. |
| answered | boolean | true if the call was answered by a live agent. |
| recording_url | string (URL) | Direct link to the call recording, if available. |
| company | object | Company associated with the tracking number (name + reference). |
| contact | object | Agent who answered (name + reference). Null if unanswered. |
| reference | string | Session reference set during the DNA allocation, if applicable. |
Checking Failed Deliveries
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| from_date | string (YYYY-MM-DD) | Start of date range. Defaults to today. |
| to_date | string (YYYY-MM-DD) | End of date range. Defaults to tomorrow. |
Same query parameters as /v1/call_events_fail/. Use this endpoint to find AI DataEvent payloads that were not successfully delivered to your webhook. The response includes the full request_json payload for replay.
See the Data Event API for field details on the response.