Skip to main content

Event

call.completed Sent when an existing call’s status is updated to Completed (for example, from Processing or Queued). This follows the call change stream on status updates; a call inserted already as Completed does not trigger this webhook from that path. Delivered inside the standard webhook envelope; the fields below are the inner payload object. Emission is gated by server configuration; if the outbound emitter is disabled, no webhook is sent.

Payload fields

These fields are on the inner payload object (inside the standard envelope).
FieldRequiredDescription
callIdYesInternal call id.
phoneNumberYesDialed or caller number; Empty if non-telephonic call.
fileNumberNoThe filenumber on the Account, either provided by submission or generated if no external id provided.
statusYesCall status; for this event, always Completed (same casing as stored on the call record).
durationYesCall length in milliseconds (durationMs on the call); 0 if not set.
outcomesYesObject of outcome flags (see below). Always present; may be {} if nothing was detected.
summaryYesCall note or summary. May be an empty string.
recordingUrlNoThe recording of the call.
createdAtYesTimestamp from the call record. ISO-8601
endedAtYesTimestamp when the webhook payload was built. ISO-8601

Outcomes

Every property in outcomes is optional: only keys with values from call analysis (or label fallbacks) are included. Before delivery, the webhook removes any outcome keys that are not approved for external consumers; those keys never appear in the payload. The tables below list possible keys that may be sent after that filtering, grouped for readability.

Collection

FieldRequiredTypeDefinition
refuseToPayNobooleanRefused to pay.
disputeNobooleanDebt disputed on the call.
engaged_negotiationsNobooleanConsumer engaged in payment negotiation (e.g. adjusted amounts or explored options).
acknowledgeDebtNobooleanConsumer acknowledged the debt.
payDateNobooleanPay frequency or pay date was discussed.
sentSmsNobooleanFollow-up SMS was sent.
useLenderAgainNobooleanWhether the consumer would use the lender again (true / false); omitted when not determined.

Language

FieldRequiredTypeDefinition
spanishCallNobooleanCall handled in Spanish.

Contact

FieldRequiredTypeDefinition
confirmedNameNobooleanName was confirmed.
deceasedNobooleanSubject indicated as deceased.
wantedToTalkHumanNobooleanAsked for a human agent.
statusTransferNobooleanCall transferred due to status (e.g. to another queue or agent).
wasTheRightNumberNobooleanReached the intended number.
wasTheRightPartyNobooleanReached the correct party or debtor.
wasWrongNumberNobooleanWrong number.
wasWrongPartyNobooleanWrong person.

Compliance

FieldRequiredTypeDefinition
ceaseAndDesistNobooleanCease-communication request.
complaintAboutCollectorNobooleanComplaint about the collector.
doNotCallNobooleanDo-not-call request.
fraudNobooleanFraud indicated or suspected.
lawSuitRiskNobooleanLawsuit or legal risk surfaced.
legalActionNobooleanLegal action mentioned or threatened.

Preference

FieldRequiredTypeDefinition
callbackConsentNobooleanExplicit consent to future callbacks.
emailOnlyPreferenceNobooleanEmail-only contact preference.
wantsCallBackNobooleanWants a callback.

Payments & Plans

FieldRequiredTypeDefinition
cardDetailsProvidedNobooleanCard details were given on the call.
paymentFailedNobooleanPayment attempt failed.
paymentMadeNobooleanPayment succeeded.
plan_acceptedNobooleanPayment plan accepted.
plan_typeNostringPlan kind: pay_in_full, settle_today, settlement_plan, regular_plan, tailored_plan.
promiseToPayDaysNonumberDays until promised payment.

Employment

FieldRequiredTypeDefinition
isEmployedNobooleanEmployed.
isUnemployedNobooleanUnemployed.
multipleJobsNobooleanMultiple jobs indicated.

Call progress

FieldRequiredTypeDefinition
attemptedVerificationNobooleanIdentity verification was attempted.
debtMentionedNobooleanDebt was mentioned in the flow.
mirandaReadNobooleanMiranda (or equivalent) disclosure read.
offeredPaymentOptionsNobooleanPayment options were offered.
FieldRequiredTypeDefinition
bankruptcyNobooleanBankruptcy mentioned or claimed.
bankruptcyAttorneyNameNostringBankruptcy attorney name, if provided.
bankruptcyAttorneyPhoneNostringBankruptcy attorney phone, if provided.
bankruptcyCaseNumberNostringBankruptcy case number, if provided.
bankruptcyChapterNostringBankruptcy chapter, if provided.
bankruptcyFilingDateNostringBankruptcy filing date, if provided.
claimsPaidDirectNobooleanClaims payment was made directly to the creditor.
coDebtorRefusedNobooleanCo-debtor refused to pay or engage.
debtConsolidationNobooleanDebt consolidation in play or discussed.
debtConsolidationCompanyNostringNamed debt consolidation company.
deployedNobooleanMilitary deployment indicated.
hospitalizedNobooleanHospitalization indicated.
jailNobooleanIncarceration indicated.
Future API versions may add keys; treat unexpected keys as forward-compatible.

Examples

The HTTP POST body is the standard envelope: top-level event, eventCategory, organization, optional agent, timestamp, idempotencyKey, and nested payload. The payload object for call.completed is what the tables above describe. Below, inner payload means that nested payload only; full body shows the complete JSON your endpoint receives.

Inner payload — minimal

Nothing detected in analysis beyond completion: outcomes is an empty object. fileNumber is omitted when not available. phoneNumber may be an empty string.
{
  "callId": "67a0f74d1c2e8a12f9130ae2",
  "phoneNumber": "",
  "status": "Completed",
  "duration": 0,
  "outcomes": {},
  "summary": "",
  "createdAt": "2026-02-17T17:00:01.000Z",
  "endedAt": "2026-02-17T17:05:12.430Z"
}

Inner payload — payment and plan

Typical successful contact with payment taken and a plan type discussed (not every boolean needs to be present; sparse keys only).
{
  "callId": "67a0f74d1c2e8a12f9130ae2",
  "phoneNumber": "+15125550123",
  "fileNumber": "ACC-429795",
  "status": "Completed",
  "duration": 180000,
  "outcomes": {
    "confirmedName": true,
    "wasTheRightNumber": true,
    "wasTheRightParty": true,
    "paymentMade": true,
    "plan_accepted": true,
    "plan_type": "regular_plan",
    "promiseToPayDays": 14,
    "wantsCallBack": false
  },
  "summary": "Customer agreed to make payment on the existing plan terms.",
  "createdAt": "2026-02-17T17:00:01.000Z",
  "endedAt": "2026-02-17T17:03:01.000Z"
}

Inner payload — compliance and preferences

Caller requests regulatory-style limits and states contact preferences.
{
  "callId": "6812ab3c4d5e6f7089012345",
  "phoneNumber": "+13105550199",
  "fileNumber": "FILE-8821",
  "status": "Completed",
  "duration": 420000,
  "outcomes": {
    "confirmedName": true,
    "wasTheRightParty": true,
    "ceaseAndDesist": true,
    "doNotCall": true,
    "lawSuitRisk": false,
    "legalAction": false,
    "emailOnlyPreference": true,
    "wantsCallBack": false,
    "callbackConsent": false
  },
  "summary": "Consumer requested written communications only and no further calls.",
  "createdAt": "2026-03-01T14:22:00.000Z",
  "endedAt": "2026-03-01T14:29:00.000Z"
}

Inner payload — wrong party / reachability

Analysis indicates the wrong person or number; collection outcomes may still be sparse.
{
  "callId": "68f0e1d2c3b4a59687012345",
  "phoneNumber": "+14085550100",
  "status": "Completed",
  "duration": 95000,
  "outcomes": {
    "wasWrongParty": true,
    "wasTheRightNumber": false,
    "refuseToPay": false
  },
  "summary": "Third party answered; debtor not available.",
  "createdAt": "2026-03-10T18:00:00.000Z",
  "endedAt": "2026-03-10T18:01:35.000Z"
}

Inner payload — bankruptcy strings

When bankruptcy details are captured, related string fields may appear together with bankruptcy: true.
{
  "callId": "6901a2b3c4d5e6f708901234",
  "phoneNumber": "+12125550111",
  "fileNumber": "BNK-10044",
  "status": "Completed",
  "duration": 310000,
  "outcomes": {
    "confirmedName": true,
    "wasTheRightParty": true,
    "bankruptcy": true,
    "bankruptcyChapter": "13",
    "bankruptcyCaseNumber": "25-12345-ABC",
    "bankruptcyFilingDate": "2025-11-01",
    "bankruptcyAttorneyName": "Jane Doe Law Firm",
    "bankruptcyAttorneyPhone": "+13125559876",
    "paymentMade": false,
    "plan_accepted": false
  },
  "summary": "Debtor stated active Chapter 13; case and attorney details provided.",
  "createdAt": "2026-03-12T16:10:00.000Z",
  "endedAt": "2026-03-12T16:15:10.000Z"
}

Inner payload — payment failed on call

A payment was attempted but did not succeed; paymentMade may be false or omitted.
{
  "callId": "6902c3d4e5f6071829345678",
  "phoneNumber": "+15125550900",
  "fileNumber": "ACC-10002",
  "status": "Completed",
  "duration": 240000,
  "outcomes": {
    "confirmedName": true,
    "wasTheRightParty": true,
    "cardDetailsProvided": true,
    "paymentFailed": true,
    "paymentMade": false,
    "wantedToTalkHuman": true
  },
  "summary": "Card declined; customer will call back with another card.",
  "createdAt": "2026-03-12T20:00:00.000Z",
  "endedAt": "2026-03-12T20:04:00.000Z"
}

Full HTTP body (envelope + inner payload)

What your server receives for call.completed when an agent is associated with the call. If the webhook is organization-only, agent is omitted. idempotencyKey is stable per organization and callId for this event.
{
  "event": "call.completed",
  "eventCategory": "calls",
  "idempotencyKey": "call.completed:507f1f77bcf86cd799439011:67a0f74d1c2e8a12f9130ae2",
  "organization": {
    "id": "507f1f77bcf86cd799439011",
    "name": "Acme Corp"
  },
  "agent": {
    "id": "507f191e810c19729de860ea",
    "name": "Outbound Collections"
  },
  "timestamp": "2026-02-17T17:03:01.000Z",
  "payload": {
    "callId": "67a0f74d1c2e8a12f9130ae2",
    "phoneNumber": "+15125550123",
    "fileNumber": "ACC-429795",
    "status": "Completed",
    "duration": 180000,
    "outcomes": {
      "confirmedName": true,
      "wasTheRightParty": true,
      "paymentMade": true,
      "plan_accepted": true,
      "plan_type": "regular_plan"
    },
    "summary": "Customer agreed to make payment.",
    "createdAt": "2026-02-17T17:00:01.000Z",
    "endedAt": "2026-02-17T17:03:01.000Z"
  }
}