Log calls from your phone system
Put a call from any phone system or recorder in the BrokerPlus call log. It shows up on the contact and the deal with its transcript, and BrokerPlus writes the recap, just like a call the broker made from BrokerPlus.
Before you start
BrokerPlus already connects to Dialpad and Quo with no code: an admin turns them on in Settings > Integrations, and calls flow in on their own. This guide is for everything else, for example Plaud, Grain, Savo, or a second Dialpad company.
- A call lands in the call log of the broker who created the key. To log each broker's calls, use a key each broker creates.
- Get your contacts into BrokerPlus first. BrokerPlus finds a call's contact by the client's phone number.
What happens when you send a call
When you send a call to POST /v1/calls, BrokerPlus:
- Finds the contact. It uses
contact_idif you send one. Otherwise it matches the client's number:fromon aninboundcall,toon anoutboundone. A number that matches two contacts matches neither. - Finds the deal. It uses
deal_idif you send one. Otherwise it picks the contact's most recently updated deal. - Files the call in the broker's call log and on the contact and the deal.
- Writes a recap if the call has a transcript and you didn't send a
summary, and fills in the application answers the client gave on the call. Send your ownsummaryand BrokerPlus keeps it instead of writing one. - Sends the
call.loggedwebhook.
Log a call
Send the words either as plain transcript text or as timed transcript_segments. The response
is 201:
Code
summary is null at first because BrokerPlus writes the recap a moment later. Read the call
again with GET /v1/calls/{id} to pick it up.
Send each call once
Phone systems resend a webhook when they don't get a quick answer, so always send external_id
with the phone system's own call id. A second request with the same provider and external_id
returns the call that's already logged, with 200 instead of 201, and logs nothing new. Case and
punctuation in provider don't matter: Dialpad and dialpad are the same system.
Send the call once the transcript is ready. BrokerPlus can't add a transcript to a call that's already in the log, so if your phone system produces the transcript after the call ends, wait for it.
Example: relay a second Dialpad company
BrokerPlus connects to one Dialpad company per brokerage. This small server relays a second company's calls: Dialpad posts a call event when a call ends, and the server sends it on to BrokerPlus.
Dialpad's event fields can change, so check them against Dialpad's current documentation, and verify each event's Dialpad signature before you read it.
Code
Read the call log
GET /v1/callslists the calls the broker can see, newest first. Filter bycontact_id,deal_id, ordirection, and useupdated_sinceto sync (see Sync).GET /v1/calls/{id}returns one call.- Subscribe to
call.loggedto hear about each new call. See Webhooks.
The log includes calls on BrokerPlus lines and from connected phone systems; provider tells you
where each one came from.
Read recorded meetings
Video meetings the BrokerPlus notetaker sat in, and Roam meetings, are on the Meetings tab, apart from the call log.
-
GET /v1/meetingslists them, newest first, with BrokerPlus'ssummary. Filter bydeal_idorcontact_id, and useupdated_sinceto sync. -
GET /v1/meetings/{id}adds the transcript line by line, who was in the meeting and how long each person spoke, BrokerPlus's follow-ups inaction_items, and the video platform's own summary when it writes one. -
POST /v1/meetingssends the notetaker into a Zoom, Google Meet or Microsoft Teams call, now or atjoin_at, as the broker your key acts as. Name adeal_idto file the meeting on a deal. Everybody in the call sees it join, so a key with theno_sendinglimit is refused it. -
POST /v1/meetings/{id}/stoptakes the notetaker out of the call before it ends. A Roam meeting is stopped from inside Roam. -
POST /v1/meetings/{id}/syncasks the video platform for the transcript and summary again, for a meeting that ended without them. They land on the meeting within a few minutes.
The recording itself is not on the API.
Call lists
A call list is a round of calls the broker works one row at a time. Each row is a person to call, with the outcome of the call and a note. BrokerPlus calls nobody and sends nothing: the list records what the broker did.
POST /v1/call-listsmakes a list from contacts or deals. A deal puts its primary applicant on the list.POST /v1/call-lists/importmakes a list from rows of names, numbers, and emails, for example a spreadsheet you read yourself. Each row is matched to a contact by email, then by number. A row that matches nobody stays on the list only, unless you sendadd_to_contacts: true.POST /v1/call-lists/{id}/entriesadds contacts, deals, or people typed in by name. A person already on the list keeps their outcome and note.GET /v1/call-lists/{id}/entrieslists the rows, in the order the broker works them. Filter bystatus.PATCH /v1/call-lists/{id}/entries/{entry_id}records an outcome:called,no_answer,follow_up,done, or back topending. Any outcome can follow any other.DELETE /v1/call-lists/{id}/entries/{entry_id}takes a person off the list, andDELETE /v1/call-lists/{id}deletes the list. The contacts stay.
Code
Code
called_at and called_by_user_id record when the row first left pending and who worked it. They
stay when the outcome changes again, and clear when the row goes back to pending.
Call scripts
A call script is the list of questions a broker reads on a call, in sections. It is the same script the broker sees in the Scripts pane. A question fills nothing in the application: it is a question to ask, with an optional note for whoever runs the call.
GET /v1/call-scriptslists the scripts, andGET /v1/call-scripts/{id}returns one.POST /v1/call-scriptsmakes a script on the broker's team.PATCH /v1/call-scripts/{id}changes the fields you send.sectionsreplaces every section.DELETE /v1/call-scripts/{id}retires a script. A call that already used it still names it.
Code
Code
Errors
| Status | Code | What it means |
|---|---|---|
400 | VALIDATION_ERROR | Fix the fields in details.fieldErrors. A call needs a contact_id, a deal_id, or the client's number. |
404 | NOT_FOUND | This key can't write to that contact_id or deal_id. |
409 | CALL_EXISTS | The call is already in the log of a broker whose calls this key can't read. Don't send it again. |
Every other code is on Errors.