Exporting Reports and Transcripts as JSON
Transcript Export
Open any individual chat transcript and click the export button. JSON File is one of the three export formats, alongside HTML and XML.
The JSON export carries the same fields as the XML export — visitor info, chat lines, survey results, and custom data — just serialized differently. If your process already parses the XML export, switching to JSON is a drop-in change, not a new integration.
Transcript JSON Structure
{
"Id": "string",
"EngagementType": 0,
"SiteName": "string",
"SiteID": 0,
"GroupName": "string",
"GroupID": 0,
"Tier": 0,
"IsAgentToAgent": false,
"StartTime": "2026-01-01T00:00:00",
"EndTime": "2026-01-01T00:00:00",
"Answered": "2026-01-01T00:00:00",
"Rejected": "2026-01-01T00:00:00",
"Queued": "2026-01-01T00:00:00",
"Transferred": "2026-01-01T00:00:00",
"NumTransfers": 0,
"PrechatSurvey": "2026-01-01T00:00:00",
"PostchatSurvey": "2026-01-01T00:00:00",
"HasConverted": false,
"Rating": 0,
"StartHour": 0,
"Length": "string",
"TotalSeconds": 0,
"Visitor": {
"Id": "string",
"SessionID": "string",
"AreaCode": 0,
"BrowserType": "string",
"City": "string",
"Country": "string",
"CountryCode": "string",
"DNS": "string",
"EmailAddress": "string",
"GroupVisited": 0,
"IsInvite": false,
"ISP": "string",
"Keywords": "string",
"Latitude": 0,
"Longitude": 0,
"Location": "string",
"Organization": "string",
"PostalCode": "string",
"ReferredBy": "string",
"Region": "string",
"URLReferrer": "string",
"UserLevel": 0,
"IsCreator": false,
"IP": "string",
"DisplayName": "string",
"HeadshotUrl": "string",
"WhenJoined": "2026-01-01T00:00:00",
"WhenExited": "2026-01-01T00:00:00",
"LastRetrievedText": "2026-01-01T00:00:00",
"LastSentText": "2026-01-01T00:00:00",
"LastTyped": "2026-01-01T00:00:00",
"FirstVisit": "2026-01-01T00:00:00"
},
"LiveChatLines": [
{
"Id": 0,
"DateCreated": "2026-01-01T00:00:00",
"UserID": 0,
"FromDisplay": "string",
"LineType": 0,
"LineCreator": 0,
"LineVisibility": 0,
"OwnerLevel": 0,
"Text": "string",
"Rating": 0,
"PremadeID": 0
}
],
"SurveyResults": [
{
"Id": "string",
"Question": "string",
"Answer": "string",
"SurveyType": 0
}
],
"CustomData": [
{
"Attribute": "string",
"Value": "string"
}
]
}
Id is the transcript/engagement ID — the field to key off of if you're tying a chat back to a record in your own CRM.
Visitor — one object with:
| Field | Notes |
|---|---|
Id, SessionID | Visitor and session identifiers |
DisplayName, EmailAddress | Visitor-provided identity info |
IP, DNS, ISP, Organization | Network info |
City, Region, Country, CountryCode, PostalCode, AreaCode, Latitude, Longitude, Location | Geolocation |
BrowserType | Visitor's browser |
Keywords, ReferredBy, URLReferrer | How the visitor arrived |
GroupVisited, UserLevel, IsInvite, IsCreator | Chat context |
HeadshotUrl | Set for agent-to-agent chats |
WhenJoined, WhenExited, FirstVisit, LastRetrievedText, LastSentText, LastTyped | Timestamps |
LiveChatLines — array, one object per chat message:
| Field | Notes |
|---|---|
Id | Line ID |
DateCreated | Timestamp |
UserID | Sender's user ID (agent/bot) or 0 for the visitor |
FromDisplay | Sender's display name |
LineType, LineCreator, LineVisibility | Who sent it and how it's shown |
OwnerLevel | Role of the sender |
Text | The message content |
Rating | Line-level rating, if applicable |
PremadeID | Canned message ID, if the line came from one |
SurveyResults — array, one object per pre-chat/post-chat survey answer:
| Field | Notes |
|---|---|
Id | Survey result ID |
Question | The survey question text |
Answer | The visitor's answer |
SurveyType | Which survey this came from (pre-chat, post-chat, etc.) |
CustomData — array of key/value pairs for any custom visitor attributes captured on the chat:
| Field | Notes |
|---|---|
Attribute | The custom field name |
Value | The custom field value |
Engagement Report
From Reports > Engagement > Export, JSON File is one of five export options, alongside HTML, PDF, XLSX, and XML. JSON is available on the Engagement report only — other report types keep their existing export options.
The JSON export includes exactly the same columns your account has enabled for that report — whatever you'd see in an XLSX export is what you'll get in JSON, just structured as an array of objects instead of a spreadsheet. Each object's keys are the same underlying field names shown below; your account's exact set can be narrower (if some columns are disabled) or include a few extra keys (enabled custom variables or survey questions specific to your account).
Engagement Report JSON Fields
| JSON Key | Column Label |
|---|---|
Group | Group |
DateEngagementStarted | Start Time |
InitialQueueWaitTime | Initial Queue Wait Time |
TransferredQueueWaitTime | Transferred Queue Wait Time |
User | Agent |
ChattedWithBot | Chatted With Bot |
Visitor | Visitor |
VisitorEmail | Visitor Email |
ChatTime | Chat Time |
InitialResponseTime | Initial Response Time |
ChatRequestedFromPage | Chat Requested From Page |
ReferredBy | Referrer |
IsMobile | Mobile |
TotalEngagementTime | Total Time |
AgentEngagementTime | Agent Engagement Time |
QueueResult | Result |
Site | Site |
City | City |
Country | Country |
DateEngagementEnded | End Time |
EndedByAgent | Ended by Agent |
PostalCode | Postal Code |
Region | Region |
ISP | ISP |
IPAddress | IP Address |
ResultedInConversion | Resulted in Conversion |
SatisfactionLevel | Satisfaction Level |
SubmittedPostEngagementSurvey | Submitted Post Engagement Survey |
SubmittedPreEngagementSurvey | Submitted Pre Engagement Survey |
NumTransfers | Transfers |
NumberOfIdleAutoRouteTransfers | Idle Transfers |
NumChatTurns | Chat Turns |
NumBotTurns | Bot Turns |
NumAgentMessages | Agent Messages |
NumVisitorMessages | Visitor Messages |
NumBotMessages | Bot Messages |
EngagementClosedReason | Engagement Closed Reason |
ClosedBy | Closed By |
FromInvitation | From Invitation |
CreatedCRMRecord | Created CRM Record |
CRMRecordType | CRM Record |
UtmContent | UTM Content |
UtmMedium | UTM Medium |
UtmCampaign | UTM Campaign |
UtmSource | UTM Source |
UtmTerm | UTM Term |
Note: for date ranges of 90 days or more, use the scheduled email export instead.
Why Use JSON
JSON is meant for pulling report or transcript data into your own scripts or integrations programmatically, rather than opening a file by hand. If you're building an automated process that needs the engagement ID or other transcript/report fields — for example, to reliably tie a chat back to a record in your own CRM — JSON gives you that data in a format that's easy to parse without any manual steps in between.
Was this article helpful?