Skip to main content

The upload report

Imports are visible only through campaigns of your organization (404 import_not_found otherwise).

The import summary object

issues in the summary is an object keyed by code, not an array. The array form ({"row_number", "code", "severity"} items, first 50) appears only inside error.import on a refused batch.

Row-level issue codes

The code column of the report, and the keys of issues:

The report file

The report columns are row_number, severity, code, supplied, duplicate_of_row (supplied is a JSON object with the submitted values). There is no message column: the machine-readable contract of the report is the code, and rendering it as human text is the consumer’s job. The summary block at the end of the file (import_summary) uses the field keys as labels — filename, format, encoding, phone_column, rows_seen, accepted, warned, rejected, duplicates_found, status, plus refusal with the refusal code for a refused import; for planned_calls and calls sources filename and encoding are empty and format is json. The dnc_match report has the columns row_number, phone, contact_name, phone_key, dnc_entry_id, source, reason, recorded_at and a dnc_screen_summary block (checked_rows, unscreened_rows, matched_rows, suppressed_contacts). Two conventions of the shared upload machinery apply on every path alike — a file in the dashboard, the planned_calls of campaign creation, and an added calls batch:
  • row numbers count the header as row 1, so the first planned call is row_number 2 and the N-th is N+1 — in issues, in error.import and in the report file;
  • the CSV is UTF-8 with a BOM and CRLF line endings (so Excel opens Cyrillic correctly): decode it as utf-8-sig, or the first header cell reads as row_number.
Summary rows carry field keys instead of a numeric row_number and are not data rows.