Skip to main content
PropertyValue
Dataset codeD23
Section codeS4 — Communications
Endpoint path/exports/S4/D23
Cursor fieldcommunicated_at
Page size11000 (default 500)
AvailabilityPhase 1 — generally available
PaginationVia (variable page size — joined through a parent)
Each row is an outcome our agents logged after attempting contact — PTP captured, RPC achieved, no-answer, busy, settled, and so on. The outcome_option field uses a controlled vocabulary. Structured outcome details (PTP date, amount, callback date) live in D24, which is not yet enabled.

Fields

FieldTypeDescriptionNotes
public_idstringStable unique identifier for this manual communication row. Use as the primary key for warehouse upserts. Derived from the underlying Mongo _id.Available as of v1.1
communication_typestringChannel of the manual attempt.
interaction_sourcestringWhere the interaction originated.
outcome_optionstringLogged outcome from a controlled vocabulary (e.g. PTP, RPC, no-answer).
is_activebooleanWhether this log entry is active.
is_ptp_brokenbooleanWhether a promise-to-pay associated with this entry was broken.
communicated_atstringWhen the communication occurred (ISO-8601).Cursor field
created_atstringRow creation timestamp (ISO-8601).
updated_atstringLast-modified timestamp (ISO-8601).

Sample row

{
  "public_id": "664a1b2c3d4e5f6071829abc",
  "communication_type": "CALL",
  "interaction_source": "AGENT",
  "outcome_option": "PTP",
  "is_active": true,
  "is_ptp_broken": false,
  "communicated_at": "2026-05-21T12:05:44.000Z",
  "created_at": "2026-05-21T12:06:00.512Z",
  "updated_at": "2026-05-21T12:06:00.512Z"
}

Pagination characteristics

This dataset is via — it is filtered to your tenant by joining through its parent (user_lender_detail_idUserLenderDetails). It is also very large (tens of millions of rows in shared tenant DBs), so on multi-tenant databases a single response may contain fewer rows than your limit even when more data exists. The cursor still advances correctly — keep paging until nextCursor is null. See Pagination → Variable page size.
Always pull D23 in time-windowed slices. Because of the dataset’s size, an unbounded request (no since/until) forces a scan across the entire collection and can exceed the API gateway timeout, returning a 504. To pull reliably:
  • Pass a since (and optionally until) window and walk forward in slices — for a full backfill, iterate month-by-month (or smaller for the busiest tenants).
  • Within each window, page with the cursor until nextCursor is null, then advance to the next window.
  • Consider a smaller limit (e.g. 200500) so each page does less work.
  • ?includeTotal=true requires a time window on this dataset — without one it returns totalNote: "window_required".

Use cases

  • Outcome-mix dashboards (PTP rate, RPC rate, refusal rate).
  • Agent productivity benchmarking.
  • Cohort-level reach/contact analytics.
Page size may be smaller than the requested limit on multi-tenant DBs. Rely on nextCursor: null to detect the end of data. Free-text notes, phone, and email are deliberately excluded.