Use your own id
Setexternal_id to your system’s id for that person. It’s unique per
organisation, so you can look a contact up by it later without storing Qall’s id
on your side.
+4930111111) is safest.
Sending your own fields
Create the properties once under Contacts, then set them per contact. Values are coerced to the property’s type, so a date property won’t accept “next Tuesday”.{{contact.tier}}. See
Variables.
Duplicates
Phone number, email andexternal_id are each unique within your organisation.
Posting a contact whose number already exists returns a conflict rather than
creating a second record — which is what you want, since the whole point is one
record per person.
If you’re syncing in bulk, treat a conflict as “already there, update it instead”.
Keeping it in step
On create or update in your system, push the contact. Small, immediate, no batch window. Don’t push your whole database. Contacts you never call cost you nothing to leave out, and a contact gets created automatically from an inbound call anyway — the sync is about adding the name, not the existence. When someone is deleted on your side, delete them here too. Their calls stay, with the personal details removed. See Contacts.Reading back
GET /api/contacts filters by source, by campaign, by whether they have an email
or phone, and by when they were last seen — so “everyone who called in the last
30 days and isn’t in my CRM” is one request.