Deck Docs
AgentsWorkflows

Migrate surveys

Move survey exports from other survey tools into Deck as CSV uploads, and confirm that Deck processed every row.

This page is an agent-readable workflow for Deck. Humans can follow along. Coding agents should treat the steps as the source of truth.

Migrate surveys — agent workflow

  • Use it when: the user says "import our Typeform results", "move our Qualtrics or SurveyMonkey history into Deck" or "bring our old NPS survey into Deck".
  • Outcome: each survey export is a CSV upload in Deck with the status COMPLETED, and the user knows what Deck found in it.
  • Needs: Deck MCP and the Deck web app. The user uploads the file in Manage → CSV Uploads, because no MCP tool imports feedback. Free text answers use credits. A file can be at most 10 MB. NPS through MCP needs the Starter plan or higher.

1. Probe Deck MCP

Call get_user_context. This must be a real tool call.

  • 401 Unauthorized: tell the user to connect Deck MCP in this client (Settings → Connections). Stop.
  • No Deck tools: fetch and follow https://docs.getdeck.io/docs/agents/getting-started/prompts/ai-pm.md. Stop this workflow until the tools work.
  • More than one Deck organization: call select_organization, ask which one to use, and pass its org_id on every later call.

2. Check what Deck already has

Make these calls in parallel:

  • list_sources with import_source set to CSV: read file_name, csv_type, status and total_rows of each upload. Do not upload the same export again.
  • explore_integrations with integration_type: "POSTHOG": PostHog surveys sync through the native integration. For PostHog, follow Connect feedback stack instead.
  • get_overview: record Deck's data counts before the import.

3. Pick the CSV type

Ask the user for each export file and the tool that made it. Then pick one Deck type:

ExportDeck CSV typeFormat
Full survey from Qualtrics, SurveyMonkey, Typeform or Google FormsSurveyOne row for each respondent, one column for each question. Keep the native export. Deck detects the platform.
NPS score listNPSOne row for each response. score (0-10) is required. reason, respondent_email, respondent_name and response_date are optional.
Open comments onlyFeedbackOne row for each comment. content is required.

See CSV Import for every field.

4. Prepare the file

You can do these checks on the user's local file:

  • Do not change the respondents' words. Do not translate, summarize or fix answers.
  • Keep the email columns. Deck uses them to link each row to a contact.
  • A file larger than 10 MB: split it by rows. Put the full header block at the top of each part. Qualtrics uses 3 header rows and SurveyMonkey uses 2.
  • A large export: suggest a test file of 20-50 rows first.
  • Do not reshape a native survey export into the flat format.

5. Check credits

For a large file or a survey with many free text questions, follow Credits readiness check first. The upload wizard shows the credit cost of a Survey upload before the user submits. Structured answers (NPS, rating, yes or no, select) use 0 credits.

6. Hand off the upload

Give the user these steps:

  1. In the Deck web app, open Manage → CSV Uploads and click Upload CSV.
  2. Select the type from step 3.
  3. Survey: check the column roles (Question, Metadata or Skip) and the question types. Read the credit counter.
  4. Other types: check the column mapping.
  5. Review the invalid rows, then submit.

Wait until the user says that the upload is submitted.

7. Track processing

  1. Call list_sources with import_source set to CSV. Find the new upload. Read status, total_rows, processed_rows and failed_rows.
  2. While status is PENDING or PROCESSING, wait about 10 seconds and call again. Stop after 5 checks and tell the user that processing continues in the background.
  3. Call list_sources with the upload_id to see each row and its status.
  4. PARTIALLY_COMPLETED or FAILED: the user can click Retry Failed in the upload detail view. Retried rows use credits again.
  5. CREDIT_BLOCKED: follow Credits readiness check.

8. Show what Deck found

Make these calls in parallel:

  • get_overview: report Deck's data counts after the import.
  • explore_themes with sort: "insight_count": Deck's largest themes after the import.
  • explore_nps (Starter plan or higher), for an NPS upload or a survey with an NPS question: the score and the breakdown.

For an NPS or Feedback upload, call read_transcript with the feedback_id of one row to show what Deck extracted. Survey rows have no feedback_id.

A large import can add new themes. To clean them up, follow Review the theme taxonomy.

Rules

  • No MCP tool uploads a CSV. The user uploads it in the Deck web app.
  • Never invent, edit or merge survey answers.
  • Only the user deletes an upload, in Manage → CSV Uploads. A delete is permanent and Deck does not refund the credits.
  • Quote Deck's numbers. Do not compute your own. Let the upload wizard compute the credit cost.
  • This workflow only reads. Do not call write tools.

Done when

  • Each export is an upload with the status COMPLETED, or the user knows the blocker and the next step.
  • The user has Deck's row counts for each upload and Deck's top themes after the import.