Where to look
In the dashboard: Integrations → Custom Integrations → Configure, then the inbound and outbound log tabs.
Log endpoints
Both require an admin dashboard session and support cursor pagination.eventId, the raw payload, the processing status (processing, processed, failed, plus deduplicated ones) and the error message when it failed.
Outbound logs record every delivery attempt: destination URL, payload, attempt count, HTTP status, latency, next scheduled retry and the last error.
Inbound errors
These are returned synchronously to your request.
A
202 with "status": "failed" means the event was accepted, stored and then rejected during processing — for example a missing required field inside data. The reason is in message and in the inbound log.
Outbound delivery failures
A delivery is retried when your endpoint returns a non-2xx status, times out after 15 seconds, or is unreachable.
After 10 failed attempts the delivery is marked
failed and Ringee emails the workspace to say the endpoint is down.
Common causes
Signature verification always fails
Signature verification always fails
You parsed the body before verifying. Read the raw text and HMAC exactly those bytes — a
JSON.parse followed by JSON.stringify produces different bytes and a different digest.Also confirm you are hashing `${timestamp}.${rawBody}`, not the body alone, and that you are using the whsec_ signing secret rather than the cik_live_ API key.Everything returns 401 after a rotation
Everything returns 401 after a rotation
Rotating the API key invalidates the old one immediately — and also revokes every Dialer SDK publishable key on that integration. Update both.
Contacts are duplicated in Ringee
Contacts are duplicated in Ringee
You are sending a different
externalId for the same record, or omitting it. Dedup runs on externalId first, then phoneNumber. Keep externalId stable for the lifetime of the record.Fields are not being cleared
Fields are not being cleared
That is intentional.
null, undefined and empty strings never overwrite existing values on upsert — this protects Ringee data from partial CRM payloads.Your endpoint receives the same event twice
Your endpoint receives the same event twice
Expected. Retries and redeliveries reuse the
eventId. Deduplicate on it with a UNIQUE constraint — see Outbound webhooks.Recordings never arrive
Recordings never arrive
recording.ready is a separate opt-in event that can arrive minutes after call.completed. Confirm it is selected in the outbound event list, and that recording is enabled for the workspace.Self-hosted debugging
When running Ringee yourself, deliveries are drained by the Temporal orchestrator (apps/orchestrator). If outbound events queue up but never send, check that the orchestrator is running and connected to Temporal — see How it works.
