CSV Import
Import existing feedback data from CSV files into Deck for AI analysis and visualization
CSV Import
CSV Import lets you bring historical feedback data into Deck in bulk. Upload a CSV file, map your columns to the right fields, and Deck processes each row through the same AI pipeline used for live integrations — extracting themes, generating insights, and making your data available in dashboards.
Supported Feedback Types
You can import five types of feedback via CSV:
| Type | Format | Required Fields | Optional Fields |
|---|---|---|---|
| NPS | Flat (one row per response) | score (0–10) | reason, respondent_email, respondent_name, response_date |
| User Interview | Flat | transcript | interview_date, interviewee_name, interviewee_email |
| CS Ticket | Flat | subject, body | requester_email, requester_name, created_date, status, priority |
| Feedback | Flat | content | source, respondent_email, respondent_name, submitted_date |
| Survey | Pivoted (one row per respondent, questions as columns) | At least one question column | respondent_email, respondent_name |
Survey imports use a different file format than other types — see Survey CSV Format below.
Downloading a Template
Before preparing your data, you can download a pre-formatted CSV template for any feedback type. Templates include all supported column headers with two example rows so you can see the expected format.
From Manage → CSV Uploads, click Upload CSV, select your feedback type, and use the Download Template link on the upload step.
Survey CSV Format
Survey imports use a pivoted (wide) format — each column is a survey question, and each row represents one respondent's answers. This is the native export format from all major survey platforms.
Supported platforms
Deck automatically detects your survey platform from the file structure:
| Platform | Detection method |
|---|---|
| Qualtrics | 3-row header block (question text, import ID, display order) |
| SurveyMonkey | 2-row header block (question / sub-question) |
| Typeform | Single header row with boolean Yes/No column groups |
| Google Forms | Single header row; plain column names |
| Unknown | Single header row; generic heuristics |
Platform detection is shown as a badge on the Preview step. If the wrong platform is detected, you can continue — column classification in the next step gives you full control.
Question types
Deck infers the type of each question from your answer data:
| Type | Description | Credit cost |
|---|---|---|
| NPS | 0–10 numeric scale with "How likely…" label | 0 |
| Rating Scale | Numeric 1–5 or 1–7 scale | 0 |
| Yes / No | Binary yes/no answers | 0 |
| Multi-select | Respondent selected multiple options | 0 |
| Single-select | One option chosen from a list | 0 |
| Free Text | Open-ended text response | Uses AI processing credits |
Structured answer types (everything except Free Text) are stored directly without LLM processing and cost 0 credits. Free Text answers are processed by the AI analysis pipeline and use credits based on the amount of text processed.
Downloading the survey template
The survey template (deck-survey-template.csv) uses the pivoted format with example questions for every supported type, including a tips row that Deck automatically strips. Download it from the upload wizard's Preview step.
How to Import a CSV
For all types except Survey, the wizard guides you through four steps: Upload → Preview → Map → Review.
For Survey uploads, the wizard uses a six-step flow: Upload → Preview → Classify → Question Types → Review → Submit.
1. Prepare your file
Export your feedback data from your existing tool (survey platform, CRM, helpdesk, etc.) as a CSV. Column names do not need to match Deck's field names exactly — you'll map them in step 3.
Maximum file size is 10 MB.
2. Upload your file
Go to Manage → CSV Uploads in your workspace and click Upload CSV. Drop your file into the upload area or click to browse.
Deck automatically detects the feedback type from your column headers where possible. You can confirm or change the detected type before continuing.
3. Preview
The Preview step shows you the first rows of your parsed file so you can confirm the data looks correct.
For Survey uploads, Deck parses the pivoted structure at this step and shows you a platform detection badge (e.g., "Qualtrics detected"). Continue to proceed to column classification.
4. Classify columns (Survey only)
This step appears only for Survey uploads. Deck shows every column from your file alongside 2–3 sample answers and its auto-detected role:
| Role | Meaning |
|---|---|
| Question | A survey question — will be analyzed |
| Metadata | Contact info (email, name, date) — used to link respondents, not analyzed |
| Skip | Column will be ignored |
You can change the role for any column using the dropdown. Skipped columns are collapsed into a separate section so you can un-skip them if needed.
5. Question types (Survey only)
After classifying, Deck shows each question column with its inferred type (NPS, Rating Scale, Yes/No, etc.) and 2–3 sample answers. A live credit counter shows your estimated cost using the formula:
Respondents × Free Text questions = credits
You can override the detected type for any question using the dropdown. The credit counter updates in real time as you change types.
4 / 6. Map columns (non-Survey)
For NPS, User Interview, CS Ticket, and Feedback uploads, Deck displays your CSV columns alongside the required and optional fields for the selected type.
Deck auto-maps columns it recognizes by common names (e.g., a column named email or customer_email is automatically mapped to Respondent Email). You can override any auto-mapped field.
5 / 7. Review validation results
After mapping (or after Question Types for surveys), Deck validates every row. You'll see a summary of:
- Valid rows — ready for processing
- Invalid rows — listed with the specific validation error
- Duplicate rows removed — exact duplicates are automatically excluded
For Survey uploads, Deck skips column-level validation and instead shows a summary of respondents and the credit cost formula.
6 / 8. Submit and credit handling
For non-Survey uploads, submit any file with valid rows. Deck applies credit policy when the upload is created, so the final usage can vary based on the amount of text analyzed by Deck's AI pipeline.
For Survey uploads, only Free Text questions consume credits. Structured questions are stored without AI processing.
A survey with only structured questions (NPS, Rating Scale, etc.) costs 0 credits.
If overages are disabled and the upload is larger than your current processing budget, Deck queues the rows it can process now and saves the rest as waiting for credits. If no rows can be processed, the upload is saved but processing does not start until credits are available.
Confirm and submit. Deck queues the upload immediately and begins processing in the background.
Tracking Progress
Once submitted, your upload appears in the Manage → CSV Uploads table with a live status badge:
| Status | Meaning |
|---|---|
| Pending | Queued, processing not yet started |
| Processing | Rows are being processed by the AI pipeline |
| Completed | All rows processed successfully |
| Partially Completed | Some rows succeeded, some permanently failed |
| Waiting for Credits | Some or all rows were saved but cannot process until credits are available |
| Failed | The upload encountered a critical failure |
Click any row in the table to open the detail view, which shows a progress bar, row counts, and error messages for failed rows.
The page refreshes automatically every 10 seconds while an upload is active, so you don't need to manually reload.
When an import finishes (on any page in your workspace), a toast notification appears confirming how many rows were processed — and linking directly to the upload detail view.
Retrying Failed Rows
If any rows fail permanently (after 3 internal retry attempts), you can retry them from the detail view using the Retry Failed button. This re-queues only the failed rows for another processing attempt.
Retried rows consume credits just like the original submission.
Rows waiting for credits are different from failed rows. They are held because of credit limits, not because the row content failed validation or processing. In the current version, there is no manual resume button in the CSV wizard; Deck can process more waiting rows after credits are available.
How Deck Processes Your Data
Once submitted, Deck processes your CSV rows through the same AI pipeline as live integrations:
- Contact matching — If a row includes an email address, Deck attempts to link it to an existing contact in your workspace (from CRM integrations).
- AI analysis — Each row is analyzed by the appropriate AI agent for its feedback type.
- Persistence — Results are written to the correct tables alongside your other feedback data.
- Theme and insight linking — Themes are auto-created or matched to existing ones; insights are linked to relevant themes.
- Cache refresh — Your dashboards and visualizations update to include the new data.
Processing is sequential within your organization (one upload at a time) to ensure consistent credit accounting and avoid data conflicts.
If your workspace still has onboarding sample data, Deck removes that sample data before importing CSV rows. If sample cleanup cannot complete, the CSV import is stopped and can be retried.
Deleting an Upload
You can permanently delete a completed or failed CSV upload along with all the data Deck created from it — responses, insights, and themes.
To delete an upload:
- Go to Manage → CSV Uploads.
- Click the ⋯ (more) menu on the row you want to remove.
- Select Delete and confirm the dialog.
A few things to know:
- Active uploads cannot be deleted. The Delete option is disabled for uploads with a Pending or Processing status. Wait for the upload to finish before deleting it.
- The deletion is permanent. All responses, insights, and theme associations created by that upload are removed. This action cannot be undone.
- Credits are not refunded. Deleting an upload does not restore the credits consumed when it was processed.
- Survey uploads show a deletion preview. Before you confirm, the dialog shows exactly how many survey responses, answers, and insights will be deleted so you know the full scope of the operation.
Best Practices
- Start with a small test file — Import 20–50 rows first to verify your column mapping produces the expected results before uploading thousands of rows.
- Include email addresses — Rows with respondent or requester emails are linked to your existing contacts, making your data more useful in filtered views.
- Clean up invalid rows before uploading — The validation step tells you exactly which rows fail and why. Fix them in your source file for a cleaner import.
- One upload at a time — Uploads are processed sequentially per organization. You can submit multiple uploads, but they will queue behind each other.