Submit a ticket

Export your data for analysis

What is in the CSV, Excel workbook and PDF report, how scales are coded, and how to load the data into SPSS or R.

Surbee exports your responses in a format statistics packages expect: one row per respondent and one column per question. This article explains each format, every column, and how to get the file into SPSS or R.

How to export

  1. Open your survey's Insights page.
  2. Check the date range in the page bar. The export includes only responses in the selected range, so choose All time if you want everything.
  3. Click Export and choose a format:
    • Excel workbook: the responses plus a question summary, a codebook and the funnel, in one .xlsx file.
    • CSV: the responses only, in one .csv file.
    • PDF report: a formatted summary of the results to read or share.

Status filters in Results do not change the export. Every response in the date range is included, and you can filter on the Status column afterwards.

The response columns

The CSV and the Responses sheet of the workbook have the same columns. Each row is one respondent.

The first columns describe the response:

  • Response ID: a unique ID for the response.
  • Submitted at: the submission time, in ISO 8601 format (UTC).
  • Status: completed, partial, abandoned or declined. See below.
  • Duration (s): time spent on the survey, in seconds.
  • Score, Score % and Pass/Fail: quiz scoring. Blank unless your survey uses scoring.
  • Cipher score: Cipher's quality score from 0 to 100. Higher means more likely to be genuine.
  • Flagged: Yes if Cipher flagged the response, otherwise No.
  • Flag reasons: why Cipher flagged it, separated by semicolons.
  • Device, Browser and Timezone: the respondent's device type, browser details and timezone.
  • Source: where the respondent came from, or Direct.

After these come the answers, one column per question, in survey order. Question columns are numbered Q1, Q2 and so on, followed by the question text.

Status values

  • completed: answered every question.
  • partial: left some questions blank.
  • abandoned: answered less than a third of the questions.
  • declined: ended the survey through an End survey rule, for example by choosing I do not agree on a consent page. The row holds only the answers given up to that point.

Status counts answered questions, so a question a respondent never saw because of branching counts as blank.

Likert and Matrix questions

Each statement of a Likert question, and each row of a Matrix question, gets its own column, numbered Q4.1, Q4.2 and so on. The answer is coded as a number from 1 to the number of scale points, in the order the scale is shown. On a 5-point agreement scale, for example, 1 means Strongly disagree and 5 means Strongly agree.

In the CSV and the Responses sheet, the column header carries the question, the statement and the scale endpoints, so the coding is visible without the codebook. Blank means the statement was not answered.

A Matrix question that allows more than one answer per row keeps the answer labels, separated by semicolons, because a single code cannot hold several answers.

Repeating groups

A Repeating group question, where respondents add as many entries as they need, expands to one column per entry per field: for example Q3.1 Name, Q3.1 Role, Q3.2 Name, Q3.2 Role. The number of entries matches the most any respondent submitted, so there are no empty columns beyond that.

Other question types

Single-choice questions hold the chosen label. Checkboxes questions hold every chosen label, separated by commas. Ranking questions hold the items in the order the respondent ranked them. Text answers are exported as written.

The Excel workbook

The workbook has four sheets:

  • Responses: the response columns described above.
  • Question summary: one row per answer category for each question, with counts, percentages and a 95% confidence interval. Numeric questions get the mean, median, standard deviation and range. Likert and Matrix questions get counts for every statement and scale point.
  • Codebook: one row per variable, with the variable name (Q1, Q4.1 and so on), the question ID, the question text, the type, whether it is required, what the values mean (for example 1 = Strongly disagree | 2 = Disagree), how many respondents answered and skipped it, and its margin of error. Below the variables, Survey totals lists the rows in the export, responses collected, completion rate, median and mean duration, average Cipher score, flagged and straightlined counts, and the overall margin of error.
  • Funnel: for each question, how many people reached it, answered it and skipped it, with retention, drop-off and median seconds spent.

The PDF report

PDF report opens a formatted report in a new browser tab and brings up the print dialog. Choose Save as PDF as the destination to keep a copy. The report includes the headline numbers and every question's distribution, plus Surbee's AI summary and themes where available. Treat the AI-written parts as a starting point for your own reading of the data.

If nothing happens, your browser may have blocked the new tab. Allow pop-ups for Surbee and try again.

Excluding responses before analysis

Two columns make exclusions straightforward:

  • Status: drop declined to remove participants who did not consent or were screened out.
  • Flagged and Cipher score: drop responses where Flagged is Yes, or set your own threshold on Cipher score.

Decide your exclusion rules before you look at the results, and report them in your write-up. See Response quality in research studies.

Tips for R

The CSV is UTF-8 with a byte order mark, which keeps accented characters intact in Excel. Tell R about it when you read the file:

d <- read.csv("my-study-responses-2026-10-11.csv",
              fileEncoding = "UTF-8-BOM", check.names = FALSE)

clean <- subset(d, Flagged != "Yes" & Status != "declined")

check.names = FALSE keeps the column names exactly as exported, so refer to them with backticks or double brackets, for example d[["Cipher score"]].

To read the workbook instead, use the readxl package:

library(readxl)
d <- read_excel("my-study-insights-2026-10-11.xlsx", sheet = "Responses")
codebook <- read_excel("my-study-insights-2026-10-11.xlsx", sheet = "Codebook")

Tips for SPSS

  1. Choose File, then Import Data, then CSV Data, and pick the file.
  2. Make sure the first row is read as variable names.
  3. SPSS shortens long headers into variable names. Rename the question variables to their codebook names (Q1, Q4.1 and so on, written as Q4_1 since SPSS names cannot contain a dot) so they match the Codebook sheet.
  4. Add value labels for Likert and Matrix items from the codebook, for example:
VALUE LABELS Q4_1 TO Q4_8
  1 'Strongly disagree' 2 'Disagree' 3 'Neutral' 4 'Agree' 5 'Strongly agree'.
  1. Exclude responses with Data, then Select Cases, using a condition such as Flagged <> "Yes" AND Status <> "declined".

Was this article helpful?