Inbound events
Push contacts and companies from your CRM into Ringee
externalId, and makes it callable.
Pick the event you are sending in the request body above — each one has its own data shape.
Reading the response
The endpoint returns 202 Accepted for any well-formed, authenticated request. The real result is in the JSON body.Event examples
- contact.upserted
- company.upserted
- contact.deleted
- company.deleted
externalId first, then phoneNumber within the same workspace. Sending null, undefined or empty strings does not overwrite existing values — omit a field to leave it untouched.Sending events well
Do not send on every render or save
Do not send on every render or save
Use E.164 phone numbers
Use E.164 phone numbers
+14155550123 always wins over (415) 555-0123. A number Ringee cannot normalize may fail dedup against an existing contact.Never re-send what Ringee wrote
Never re-send what Ringee wrote
sync_origin marker on those rows and skip them. See Build an integration.Queue before you send
Queue before you send
Next steps
Click-to-call
Outbound webhooks
Authorizations
The cik_live_ secret key of a Custom Integration. Shown once at creation. Server-side only.
Body
- contact.upserted
- company.upserted
- contact.deleted
- company.deleted
Create or update a contact from your CRM's current state.
The event type.
"contact.upserted"Unique, stable id for this event. Ringee deduplicates on it.
"crm_01HX5Z7K8MZP1Q4V0G9YJ2RH3T"
When the change happened in your system.
"2026-05-23T14:30:00.000Z"
Omit a field to leave it untouched. Sending null, undefined or an empty string does not overwrite an existing value.
Response
Accepted. Check status in the body to know whether the event was applied.
processed — applied. skipped — duplicate eventId, already applied earlier; treat as success. failed — accepted but could not be applied; fix and resend with a new eventId.
processed, skipped, failed Echoes the eventId you sent.
Present on skipped and failed. Surface it in your sync logs.

