Revuloop's import wizard takes a CSV export from almost any survey tool (SurveyMonkey, Typeform, Google Forms, Qualtrics, Excel, or a homegrown system) and turns it into a Revuloop survey with your full response history backfilled. Original timestamps are preserved, so your trend charts pick up where the old platform left off.
You'll find the wizard at Settings → Import Data (URL: /org/[your-org-slug]/settings/import). You need the Owner or Admin role in your organization.
Coming from Delighted? Use the dedicated Delighted flow in the same wizard; it maps Delighted's JSON export automatically. See "Migrate from Delighted to Revuloop" for the end-to-end guide.
What the import creates
- A new survey, built from your CSV's columns, created as a private draft. It is never launched or made public, so you can run analytics on the imported history without collecting new responses. Launch it yourself if you want to keep collecting.
- One response per CSV row, with the original started/completed timestamps if your file has them.
- Optionally, contacts: respondent emails can be upserted into your contact list as part of the same run.
Step 1: Export a CSV from your current tool
You need one file with a header row, one row per response, and one column per question:
- SurveyMonkey: Analyze results → Save As → Export file → All individual responses → CSV.
- Typeform: Results → Responses → Download → CSV.
- Google Forms: Responses → ⋮ → Download responses (.csv).
- Qualtrics: Data & Analysis → Export & Import → Export Data → CSV. Qualtrics writes a multi-row header, and the wizard handles it automatically.
Any other flat spreadsheet works too. Maximum file size is 25MB. If your export is bigger, split it into multiple files; imports are idempotent, so running the wizard once per file is safe.
Step 2: Upload
Open Settings → Import Data, choose CSV / Spreadsheet, and drag your file in. The wizard parses it in your browser and auto-detects the layout (including the Qualtrics multi-row header and SurveyMonkey's grouped columns), then guesses what each column is.
Step 3: Confirm the column mapping
This is the heart of the wizard: a visual table with one row per CSV column, showing sample values from your file. For each column the wizard has guessed a role, and you can change any of them:
- Question: becomes a survey question. The question type (NPS, rating, text, email, date, choice, …) is inferred from the data; adjust the type and the question title inline.
- Respondent email: attaches the email to each response, and enables the contacts import toggle.
- Started at / Completed at: the original response timestamps. Map these to keep your history's dates; unmapped imports fall back to the import date.
- Response ID: the old platform's response identifier, used as the idempotency key so re-runs never duplicate. If you don't have one, the wizard uses the row's position in the file as a stable key.
- Metadata: kept on the response as metadata rather than becoming a question.
- Skip: drop the column entirely.
On the same screen you set the survey title (defaults to the file name), pick a workspace (if your org uses them), and choose two options:
- Suppress webhooks during import *(recommended, on by default)*: keeps your subscribers from being flooded with backfilled response events.
- Also import respondent emails as contacts *(on by default when an email column is mapped)*: upserts a Contact per unique email; re-runs won't create duplicates.
Nothing is imported until you confirm.
Step 4: Run the import
- Up to 100 responses → the import runs synchronously with per-batch progress. Takes a few seconds.
- More than 100 responses → the wizard uploads your rows in chunks to a background job and polls progress every couple of seconds. You can safely close the tab: the import continues server-side and retries automatically.
After the import
- The survey is in DRAFT status on purpose. Review it, then click Launch only if you want to collect new responses. Imported responses are visible regardless of status.
- Open the survey's Analytics tab. Static stats are ready immediately, and you can generate the AI overview for themes, segments, and an executive summary.
- Re-uploading the same file is always safe: rows that are already imported are skipped, and the success screen shows the counts.
Troubleshooting
"We couldn't identify any answer columns in this file." The wizard expects responses one-per-row with questions as columns. If your export is transposed (one row per question), re-export in the standard layout or pivot it in a spreadsheet first.
The file is over 25MB. Split it into smaller files and run the wizard once per file. The idempotency key means overlapping files won't create duplicates.
Some rows were skipped. Expected when re-uploading a file that was partially or fully imported before: already-imported rows are skipped, not duplicated.
The contacts toggle is greyed out. Map one column as Respondent email first, and the toggle enables automatically.
Timestamps show the import date instead of the original date. The started/completed columns weren't mapped. Re-run the import with them mapped as Started at / Completed at; existing rows are skipped, but if you want the timestamps corrected on already-imported rows, delete the draft survey and re-run the full import.
Would you rather not do any of this yourself? Ask about our free white-glove migration and we'll do the whole move with you on a call.