Fields
contactId or externalContactId?
You need one, not both.
contactId
Use it when you already know the internal Ringee UUID — for example because your app reads Ringee data directly.
externalContactId
Use it when your Custom Integration maps a CRM id to a Ringee contact.
externalContactId is the same value you send as data.externalId in contact.upserted. Sync contacts through the Public API first and Ringee resolves the link automatically.
Prefill just a number
When there is no contact record — a manual dial, an inbound lookup:Start a call directly
Floating can skip straight to dialing:Phone number format
Destinations must be E.164 — a+, the country code, then the number, with no extension:
INVALID_PHONE_NUMBER. Normalize in your CRM before passing it in; the SDK validates locally before it reaches the network.
Keeping it in sync
CallsetContact() whenever the selected record changes. It is cheap and idempotent:
null:
After the call
The SDK emitsended with a call snapshot in the browser, but the durable record of what happened arrives through your outbound webhooks:
Write your CRM activity from the webhooks — they are signed, retried and idempotent. Use the browser events for live UI only.
Next steps
Sync contacts to Ringee
Establish the
externalId linkReceive call activity
Close the loop back into your CRM

