Data Export
Export event data and parser results for analysis in external tools.
Configuration is usually set up for you
Export Formats
Two formats are available: JSON and CSV. Both contain the
same data, just structured differently. JSON preserves nested payload objects. CSV keeps the
raw payload JSON column and also adds flattened top-level payload_* columns for easier analysis.
Nested arrays or objects inside payloads remain JSON strings in CSV cells. For example, payload_result_clicks or payload_prompts may contain a JSON array.
Session-Level Export
Export events for a single session. In the Session Viewer, click "Export" and choose JSON or
CSV. The export includes all events for that session with full payloads, including raw
correlation fields such as capture_id, prompt_capture_id, and
resolved prompt_event_id when those are present.
Example JSON structure:
[
{
"event_type": "INPUT_SUBMIT",
"timestamp_utc": "2025-01-15T10:30:00.000Z",
"session_id": "abc-123",
"tab_id": "tab-1",
"page_id": "page-1",
"url": "https://chatgpt.com",
"payload": {
"field_role": "chat_prompt",
"service": "chatgpt",
"text": "Summarize this article.",
"selector": "#prompt-textarea",
"submit_method": "enter_key",
"capture_id": "cap_01JQ4FW5E0J8S2Y7TK3J5W9Q3V"
}
}
]Study-Level Export
Export all events across all sessions in a study. On the study detail page, click "Export Events".
Derived Session Export
Export parser results from the study detail page: go to the "Derived" tab and click "Export". This gives you structured parser output as JSON or CSV.
Derived exports are often the most useful for analysis — structured summaries rather than raw events. For example, a Google Search parser produces one row per search with the query, result count, and clicked results, rather than dozens of raw navigation and click events.
ChatGPT-derived exports also include conversation-level truth about truncation and response
counts. Nested prompt/response objects stay in the JSON payload, while top-level summary
fields such as payload_response_count and payload_any_response_truncated are flattened into CSV columns.
Example derived JSON structure:
[
{
"parser_id": "chatgpt_session_v1",
"type": "chatgpt_conversation",
"payload": {
"prompt_count": 1,
"response_count": 2,
"truncated_response_count": 1,
"any_response_truncated": true,
"prompts": [
{
"text": "Summarize this article.",
"timestamp": "2025-01-15T10:30:00.000Z",
"response": {
"text": "Here is the summary...",
"timestamp": "2025-01-15T10:30:12.000Z",
"char_count": 1532,
"truncated": true,
"response_event_count": 2,
"linkage_method": "prompt_capture_id"
}
}
]
}
}
]Working with Exports
Tips for loading exported data into common analysis tools.
Python (pandas)
import pandas as pd
import json
# JSON events
events = pd.read_json("session_events.json")
# Access nested payload fields
events["trigger"] = events["payload"].apply(
lambda p: p.get("trigger") if isinstance(p, dict) else None
)
# Filter to specific event types
navigations = events[events["event_type"] == "NAVIGATE"]R
library(jsonlite)
library(dplyr)
events <- fromJSON("session_events.json", flatten = TRUE)
# Filter and analyze
searches <- events %>%
filter(event_type == "INPUT_SUBMIT") %>%
filter(payload.field_role == "search_query")Excel
CSV exports open directly in Excel. For JSON, use Power Query: Data → Get Data → From File → From JSON. Nested payload fields are expanded into separate columns.