RawQuotes
API Reference
Responses and insights

Import a CSV, Excel or JSON file

Import an export from Google Play, Typeform, Tally, Google Forms or Google reviews, or your own spreadsheet, into a general source, and why a row is skipped.

Import a CSV, Excel or JSON file

You import a file into a general source from the panel. Each row of the file becomes one item. Before anything is saved, RawQuotes shows a preview: how many rows are ready, which ones are skipped and why, the date range, and the analyzed answers (AO) they use. Importing sends the same file again, so what you saw in the preview is what gets saved.

Files RawQuotes reads

  • CSV with commas or semicolons between columns, and a header row first.
  • Excel (.xlsx). Only the first sheet is read, and its row 1 is the header row. A date that Excel stores as a date is read as a date, in UTC. A formula is read as its last calculated value.
  • JSON with a list of objects, or an object whose first list holds them, such as {"reviews": [...]}. Nested fields become columns named with a dot, such as reviewer.displayName.
  • UTF-8 or UTF-16 for CSV and JSON. The encoding is read from the byte order mark at the start of the file; a file without one is read as UTF-8. An Excel file has no such choice, and the comma or semicolon between columns applies to CSV only.
  • Up to 10 MB per file. Split a bigger export and import the parts one at a time.

How many rows one import can carry depends on your plan; see Plans and billing.

Which columns are used

An item has a text and, optionally, a date. Every other column is left out.

RawQuotes recognises some exports by their column names and picks the columns for you:

ExportRecognised by the columnsText fromDate from
Google Play Console reviewsPackage Name, Review Submit Date and Time, Star Rating, Review TextReview TextReview Submit Date and Time
Google reviews, Google Takeout reviews.jsonreviewer.displayName, starRating, createTimecommentcreateTime
TypeformSubmit Date (UTC), Network IDguessed, see belowSubmit Date (UTC)
TallySubmission ID, Respondent ID, Submitted atguessed, see belowSubmitted at
Google FormsTimestampguessed, see belowTimestamp

For any other file, and for the text of a form export, RawQuotes guesses: the text is the column with the longest values in the first 50 rows, and the date is the first column whose name contains "date", "time", "created" or "submitted". Check the guess before you import, and pick other columns if it is wrong.

Recognition goes by column names only. If your export's columns differ from the table, the file is read as your own spreadsheet and you pick the columns yourself. A Google Play review with a rating but no text is skipped as empty.

Dates

A date has to be in this form, with the time and the time zone optional:

ExampleRead as
2026-10-088 October 2026, 00:00 UTC
2026-10-08 09:14 or 2026-10-08T09:14:0009:14 UTC
2026-10-08T09:14:00Z09:14 UTC
2026-10-08T09:14:00+02:0007:14 UTC

Any other form, such as 30/11/2026 or Nov 30, 2026, is skipped as a date that can't be read. The one exception is the Google Forms Timestamp, such as 2026/10/08 9:14:00 AM GMT+2, which RawQuotes converts itself. A row with an empty date cell gets the moment of the import. How a date decides the period an item is counted in: Dates decide where an item is counted.

Why a row is skipped

The preview lists every skipped row with its row number as a spreadsheet shows it: the header is row 1, so the first data row is row 2. Blank lines are not imported but still count in the numbering. In a JSON file the number is the object's position in the list, from 1.

ReasonWhat to do
The text is emptyCheck that the text column is the right one
The text is longer than 10,000 charactersShorten or split it, then import that row again
The date is not a dateChange it to one of the forms under Dates
The date is in the futureFix the date, or leave the cell empty to use the moment of the import

Every other row is imported.

When the whole file is refused

Nothing is imported, and the panel says why, when:

  • the file is over 10 MB,
  • the file is not a CSV, JSON or Excel (.xlsx) file with a header row (CSV and JSON in UTF-8 or UTF-16),
  • the file has more rows than your plan imports at a time,
  • the chosen columns are not in the file,
  • the rows would take your account past this month's responses limit.

The preview shows this month's responses with the new rows added, so you see the last one coming before you click import.

Import a form export into a survey

A file that holds a form export with several questions can also be imported into an existing survey. On the survey, choose Add response ▾ → Import a file. The file is read as above, and the preview works the same way.

Each column of the file is mapped to a question of the survey's current version. Open, rating, single choice and multiple choice questions can be mapped. A column whose header equals the question text, ignoring case and surrounding spaces, is matched to that question for you; map the rest yourself. If a header repeats in the file, the repeats are named "(2)", "(3)" and so on.

Each row becomes one response, and a cell is read by the type of its question:

QuestionThe cell has to beNotes
OpenUp to 2,000 characters
RatingA whole number in the question's scale
Single choiceThe label of one optionCase and surrounding spaces are ignored
Multiple choiceLabels of options, separated by a comma, a semicolon or a new lineSeveral columns can fill one multiple-choice question

An empty cell leaves that question unanswered. If any cell does not fit its question, the whole row is rejected, not imported in part, and the preview lists it with its reason:

ReasonWhat to do
The rating is not a whole number in the question's scale (item.rating_invalid)Fix the cell, or leave it empty
The choice is not an option of the question (item.option_unknown)Use the exact option label
The answer is longer than 2,000 characters (item.text_too_long)Shorten it, then import that row again
Every mapped cell in the row is empty (item.text_empty)Check that the right columns are mapped

An import never adds questions to the survey. A column without a matching question is left out.

Imported rows count toward the survey's views, so the response rate stays sensible.

Copyright © 2026