Skip to main content

Migration from Other Platforms

This guide helps you migrate surveys and data from other survey platforms to Cimigo Collect Platform.

🎯 Supported Platforms

We provide migration tools and guides for these popular platforms:


📋 Pre-Migration Checklist

Before starting your migration, ensure you have:

  • Export access to your current platform
  • Admin permissions on both platforms
  • Survey data backup (responses, settings, themes)
  • List of integrations that need to be recreated
  • Timeline planned for migration and testing
  • Team training scheduled for new platform

🔄 SurveyMonkey Migration

SurveyMonkey is one of our most common migration sources. We provide automated tools to streamline the process.

Step 1: Export from SurveyMonkey

  1. Export Survey Structure

    # Login to SurveyMonkey and go to each survey
    # Navigate to: Design Survey > Export > Export Survey Design
    # Choose format: CSV or Summary (PDF)
  2. Export Response Data

    # For each survey: Analyze Results > Export All
    # Choose format: Excel (.xlsx) - includes all response data
    # Options: Include open-ended responses, metadata
  3. Export Survey Settings

    • Survey logic and branching rules
    • Custom themes and branding
    • Collector settings and permissions

Step 2: Use Our Migration Tool

// Install our migration CLI tool
npm install -g @cimigo/migration-tool

// Authenticate with both platforms
cimigo-migrate auth --source surveymonkey --target cimigo

// Run migration
cimigo-migrate import \
--source surveymonkey \
--survey-file "./exported-survey.csv" \
--responses-file "./exported-responses.xlsx" \
--preserve-ids \
--dry-run

// Review the migration plan, then execute
cimigo-migrate import --execute

Step 3: Verify and Adjust

After migration, verify:

  • All questions imported correctly
  • Question types mapped appropriately
  • Logic and branching preserved
  • Response data integrity maintained
  • Custom themes applied

SurveyMonkey Question Type Mapping

SurveyMonkey TypeCimigo TypeNotes
Multiple Choice (Single)single_choiceDirect mapping
Multiple Choice (Multiple)multiple_choiceDirect mapping
Text BoxtextShort text input
Comment BoxtextareaLong text input
Rating ScaleratingStar or numeric rating
Likert ScalelikertAgreement/satisfaction scale
Matrix/Rating ScalematrixMultiple questions in grid
Date/TimedateDate picker
File Uploadfile_uploadDocument/image upload

📝 Typeform Migration

Typeform's conversational style translates well to our platform with some adjustments.

Step 1: Export from Typeform

# Using Typeform API (recommended)
curl -X GET "https://api.typeform.com/forms/{form_id}" \
-H "Authorization: Bearer YOUR_TOKEN" \
> typeform-export.json

# Or manual export from dashboard
# Go to: Connect > Webhooks > Export responses

Step 2: Convert Typeform Structure

// Use our Typeform converter
const { TypeformConverter } = require('@cimigo/migration-tool');

const converter = new TypeformConverter();
const cimigoSurvey = await converter.convert({
sourceFile: './typeform-export.json',
options: {
preserveLogic: true,
convertTheme: true,
mapQuestionTypes: true
}
});

console.log('Converted survey:', cimigoSurvey);

Step 3: Handle Typeform-Specific Features

Logic Jumps: Typeform's jump logic converts to our conditional logic:

// Typeform logic jump
{
"type": "jump",
"condition": "answer_equals",
"value": "yes",
"target": "question_5"
}

// Converts to Cimigo conditional logic
{
"conditions": [{
"question_id": "q1",
"operator": "equals",
"value": "yes",
"action": "show",
"target_question": "q5"
}]
}

Welcome/Thank You Screens: Convert to survey settings:

{
"welcome_screen": {
"title": "Welcome to our survey",
"description": "This will take about 5 minutes"
},
"thank_you_screen": {
"title": "Thank you!",
"description": "Your responses have been recorded"
}
}

📊 Google Forms Migration

Google Forms migration focuses on question structure and basic response data.

Step 1: Export Google Forms Data

# Method 1: Google Takeout (recommended)
# Go to: takeout.google.com
# Select: Drive > Include Google Forms
# Download and extract

# Method 2: Manual CSV export
# Open form > Responses tab > Create Spreadsheet
# Download as CSV from Google Sheets

Step 2: Convert Google Forms Questions

// Google Forms question mapping
const questionTypeMap = {
'MULTIPLE_CHOICE': 'single_choice',
'CHECKBOX': 'multiple_choice',
'SHORT_ANSWER': 'text',
'PARAGRAPH': 'textarea',
'MULTIPLE_CHOICE_GRID': 'matrix',
'CHECKBOX_GRID': 'matrix',
'LINEAR_SCALE': 'rating',
'DATE': 'date',
'TIME': 'time',
'FILE_UPLOAD': 'file_upload'
};

// Convert form structure
function convertGoogleForm(formData) {
return {
title: formData.title,
description: formData.description,
questions: formData.items.map(item => ({
type: questionTypeMap[item.questionItem.question.choiceQuestion?.type] || 'text',
title: item.title,
required: item.questionItem.question.required,
options: item.questionItem.question.choiceQuestion?.options?.map(opt => opt.value)
}))
};
}

Step 3: Import Response Data

// Import CSV response data
const responses = await csvParser(responseFile);
const convertedResponses = responses.map(response => ({
submitted_at: new Date(response.Timestamp),
answers: Object.keys(response)
.filter(key => key !== 'Timestamp')
.map((question, index) => ({
question_id: `q${index + 1}`,
value: response[question]
}))
}));

🏢 Qualtrics Migration

Qualtrics enterprise migrations require careful planning due to advanced features.

Step 1: Qualtrics Export Process

# Using Qualtrics API (enterprise accounts)
curl -X POST "https://survey-platform.qualtrics.com/API/v3/surveys/{SurveyID}/export-responses" \
-H "X-API-TOKEN: YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"format": "json",
"compress": false,
"includeDisplayOrder": true
}'

Step 2: Advanced Feature Mapping

Blocks and Flow: Qualtrics blocks map to our sections:

// Qualtrics block structure
{
"SurveyElements": [
{
"Element": "BL",
"PrimaryAttribute": "Survey Blocks",
"SecondaryAttribute": "Default Question Block",
"Payload": {
"BlockElements": [
{"Type": "Question", "QuestionID": "QID1"}
]
}
}
]
}

// Converts to Cimigo sections
{
"sections": [
{
"id": "section_1",
"title": "Default Question Block",
"questions": ["q1"]
}
]
}

Advanced Logic: Qualtrics display/skip logic conversion:

// Qualtrics display logic
{
"DisplayLogic": {
"0": {
"LogicType": "Question",
"QuestionID": "QID1",
"QuestionIsInLoop": "no",
"ChoiceLocator": "q://QID1/SelectableChoice/1",
"Operator": "Selected"
}
}
}

// Converts to Cimigo conditional logic
{
"conditions": [{
"question_id": "q1",
"operator": "contains",
"value": "option_1",
"action": "show"
}]
}

Step 3: Professional Migration Services

For complex Qualtrics migrations, we offer professional services:

  • Migration Assessment - Analyze your current setup
  • Custom Logic Conversion - Advanced branching and piping
  • Data Validation - Ensure complete data integrity
  • Training and Handoff - Team training on new platform
  • Ongoing Support - Post-migration assistance

Contact our enterprise team: enterprise@cimigo.com


📧 Mailchimp Surveys Migration

Migrate email campaign surveys from Mailchimp to standalone surveys.

Step 1: Export Mailchimp Survey Data

// Using Mailchimp API
const mailchimp = require('@mailchimp/mailchimp_marketing');

mailchimp.setConfig({
apiKey: 'your-api-key',
server: 'us1' // your server prefix
});

// Get survey data
const survey = await mailchimp.reports.getSurveyReport(campaignId);
const responses = await mailchimp.reports.getSurveyResponses(campaignId);

Step 2: Convert to Standalone Survey

// Convert Mailchimp poll to Cimigo survey
function convertMailchimpPoll(poll) {
return {
title: poll.title,
questions: [{
type: 'single_choice',
title: poll.question,
options: poll.options.map(opt => opt.text),
required: true
}]
};
}

🏢 Microsoft Forms Migration

Migrate from Microsoft Forms (Office 365) to our platform.

Step 1: Export Microsoft Forms

# Manual export from forms.office.com
# Go to form > Responses > Open in Excel
# Download Excel file with responses

# Or use Microsoft Graph API
curl -X GET "https://graph.microsoft.com/v1.0/me/drive/items/{form-id}" \
-H "Authorization: Bearer {access-token}"

Step 2: Question Type Conversion

const msFormsMapping = {
'choice': 'single_choice',
'multipleChoice': 'multiple_choice',
'text': 'text',
'longText': 'textarea',
'date': 'date',
'time': 'time',
'rating': 'rating',
'likert': 'likert',
'ranking': 'matrix',
'fileUpload': 'file_upload'
};

🔧 Custom Migration

For platforms not directly supported, use our generic import tools.

CSV Import Format

question_id,question_type,question_title,question_required,question_options,logic_conditions
q1,single_choice,"How satisfied are you?",true,"Very Satisfied|Satisfied|Neutral|Dissatisfied",""
q2,text,"Any additional comments?",false,"","q1:equals:Dissatisfied"
q3,rating,"Rate our service",true,"1-5","q1:not_equals:Very Satisfied"

JSON Import Schema

{
"survey": {
"title": "Customer Satisfaction Survey",
"description": "Help us improve our service",
"questions": [
{
"id": "q1",
"type": "single_choice",
"title": "How satisfied are you with our service?",
"required": true,
"options": [
{"id": "opt1", "text": "Very Satisfied"},
{"id": "opt2", "text": "Satisfied"},
{"id": "opt3", "text": "Neutral"},
{"id": "opt4", "text": "Dissatisfied"}
]
}
],
"logic": [
{
"question_id": "q2",
"conditions": [{
"source_question": "q1",
"operator": "equals",
"value": "opt4",
"action": "show"
}]
}
]
},
"responses": [
{
"id": "resp1",
"submitted_at": "2024-01-15T10:30:00Z",
"answers": [
{"question_id": "q1", "value": "opt2"},
{"question_id": "q2", "value": "Great service overall!"}
]
}
]
}

API Import Process

// Import survey structure
const surveyResponse = await fetch('/api/v1/surveys/import', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
},
body: JSON.stringify({
source: 'custom',
format: 'json',
data: surveyData,
options: {
preserve_ids: true,
validate_logic: true,
import_responses: true
}
})
});

// Import response data (if separate)
const responsesResponse = await fetch('/api/v1/surveys/{survey-id}/responses/import', {
method: 'POST',
headers: {
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
},
body: JSON.stringify({
format: 'json',
responses: responseData
})
});

✅ Post-Migration Validation

After completing your migration, validate the results:

1. Survey Structure Validation

// Verify survey structure
const validation = await fetch(`/api/v1/surveys/${surveyId}/validate`);
const results = await validation.json();

console.log('Validation results:', results);
// Check for:
// - All questions imported correctly
// - Logic conditions working
// - Required fields preserved
// - Question types mapped properly

2. Response Data Integrity

// Verify response data
const originalCount = originalResponses.length;
const importedCount = await fetch(`/api/v1/surveys/${surveyId}/responses/count`);

console.log(`Original responses: ${originalCount}`);
console.log(`Imported responses: ${importedCount}`);

// Spot check random responses
const sampleResponses = await fetch(`/api/v1/surveys/${surveyId}/responses?limit=10&random=true`);

3. Functionality Testing

  • Preview survey - Test all questions render correctly
  • Logic testing - Verify conditional logic works
  • Mobile testing - Check responsive behavior
  • Theme validation - Confirm branding applied correctly
  • Integration testing - Test webhooks and API endpoints

🆘 Migration Support

Need help with your migration? We're here to assist:

Self-Service Resources

  • Migration Video Guides - Step-by-step walkthroughs (coming soon)
  • Community Forum - Get help from other users
  • GitHub Issues - Report migration bugs

Professional Services

  • Migration Assessment - Free evaluation of your migration needs
  • White-Glove Migration - We handle the entire process for you
  • Custom Development - Build specific migration tools for your platform
  • Training and Support - Team training on the new platform

Contact Information

  • Email: migration-support@cimigo.com
  • Chat: Available in your dashboard (bottom-right corner)
  • Phone: Enterprise customers receive dedicated phone support

Ready to migrate? Contact our migration support team at migration-support@cimigo.com to get a customized migration plan for your specific needs.