Import a CSV, Excel or JSON file
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 asreviewer.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:
| Export | Recognised by the columns | Text from | Date from |
|---|---|---|---|
| Google Play Console reviews | Package Name, Review Submit Date and Time, Star Rating, Review Text | Review Text | Review Submit Date and Time |
Google reviews, Google Takeout reviews.json | reviewer.displayName, starRating, createTime | comment | createTime |
| Typeform | Submit Date (UTC), Network ID | guessed, see below | Submit Date (UTC) |
| Tally | Submission ID, Respondent ID, Submitted at | guessed, see below | Submitted at |
| Google Forms | Timestamp | guessed, see below | Timestamp |
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.
Dates
A date has to be in this form, with the time and the time zone optional:
| Example | Read as |
|---|---|
2026-10-08 | 8 October 2026, 00:00 UTC |
2026-10-08 09:14 or 2026-10-08T09:14:00 | 09:14 UTC |
2026-10-08T09:14:00Z | 09:14 UTC |
2026-10-08T09:14:00+02:00 | 07: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.
| Reason | What to do |
|---|---|
| The text is empty | Check that the text column is the right one |
| The text is longer than 10,000 characters | Shorten or split it, then import that row again |
| The date is not a date | Change it to one of the forms under Dates |
| The date is in the future | Fix 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:
| Question | The cell has to be | Notes |
|---|---|---|
| Open | Up to 2,000 characters | |
| Rating | A whole number in the question's scale | |
| Single choice | The label of one option | Case and surrounding spaces are ignored |
| Multiple choice | Labels of options, separated by a comma, a semicolon or a new line | Several 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:
| Reason | What 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.
Feedback you already have
Put reviews, support e-mails and form exports into a general source by pasting, importing a file or sending them through the API, and see how their dates decide where they are counted.
Send through the API
Send support e-mails, chats or reviews into a general source as they arrive, with copy-paste setups for n8n, Zapier, Make and cURL, a dry run, and every error explained.