The dashboard answers the question you asked. Each chart shows the shape of one question, sized to its question type, with a count and a filter. For most surveys, that is the whole answer.
For the surveys where it is not, the dashboard’s per-question framing is the limit. “How many people who scored manager support a 2 also said they were thinking of leaving?” is not a question one chart can answer. The dashboard’s filter handles the first half; the second half lives in a different column.
The CSV is where you go for the second half. This post walks through the file shape, what each column looks like for each question type, and the analyses it actually unlocks.
Getting the CSV
The Export button at the top right of the dashboard downloads the full response set. One row per response, one column per question. The file is plain CSV, comma-separated, UTF-8, with a header row of question text.
For non-anonymous surveys, the first two columns are the response timestamp (ISO 8601 with timezone) and the respondent’s Slack display name. Anonymous surveys omit the respondent column entirely. Not blank, gone. There is no version of the export that exposes who answered what, and there is no separate join key. The toggle is locked at publish for the same reason.
What each question type looks like
The column shape depends on the question type:
- Free text comes through as a quoted string with line breaks preserved. Open it in pandas or R for tokenisation; a spreadsheet works for skim-reads.
- Single-select answers are the literal option text you wrote. Pivot on the column directly.
- Multi-select answers are semicolon-separated within a single cell.
Three options picked shows up as
Option A; Option B; Option C. Most CSV readers handle this fine; if you want each option as its own Boolean column, a five-linepd.get_dummiescall gets you there. - NPS scores export as integers from 0 to 10. The NPS score itself is not in the CSV; compute it from the column (promoters % minus detractors %).
- Yes/No answers as the literal strings
YesorNo. - 5-point agree/disagree as integers 1 through 5 with no label, on the assumption you will relabel in your analysis tool.
The analyses the CSV unlocks
Three patterns come up often enough that the CSV pays for itself the first time you reach for it:
Cross-tabs. “How did the NPS detractors answer the workload
question?” The dashboard filters one question at a time. The CSV lets
you pivot one column against another. A single pandas line
(df.groupby('workload')['nps'].mean()) gives you the answer.
Cohort comparisons across runs. Each run of a recurring survey
exports separately. Concatenate the CSVs and add a run_date column
and you can plot any answer over time, broken out by any other answer.
The dashboard’s timeline view shows aggregates; the CSV lets you see
whether the aggregate shift was driven by one cohort or by everyone.
Open-text scan with structure. Free-text answers are the most common reason people open the CSV. The dashboard shows them as a list; the CSV lets you tag them by their adjacent structured answers (e.g. read every open-text reply where the workload question scored 2 or below). The cluster of replies you find that way is usually the most useful artefact the survey produces.
What the export does not do
Two limits worth knowing before you start.
There are no aggregations in the CSV. No NPS score, no means, no percentages. The dashboard computes those for display; the CSV is the honest, untransformed source. If the dashboard says the NPS is 32 and your calculation says 28, the CSV is the tiebreaker (and the answer is usually that one of you is including or excluding the “passive” group differently).
For anonymous surveys, there is no respondent column and no way to join responses across questions back to a person. This is the guarantee anonymity makes; the export honours it strictly. If you need per-respondent analysis, the survey needed to be non-anonymous from the start.
A starting point
For a one-off survey, the dashboard is almost always enough. For a recurring survey that you are taking seriously, the CSV is where the real analysis lives. Download it after every run, append it to a master file, and the cohort view that lets you see what is actually changing is two pandas commands away.