Upload Your CSV
1
Access MigrateKit
Navigate to MigrateKit in your ContentWrap dashboard (app.contentwrap.io) or visit
/migratekit2
Upload your file
Drag and drop your CSV or click to browse
MigrateKit detects Webflow format and shows a preview
3
Review the preview
Verify:
- Total rows matches expectations
- All columns are detected
- Sample data looks correct
Understanding the Mapping Interface
The mapping screen has two panels:Left: Sanity Schema
Define your Sanity structure:
- Document type name
- Field names and types
- Required field settings
Right: Webflow Data
Your CSV from Webflow:
- Column names
- Sample data
- Detected data types
Name Your Document Type
First, choose a name for your Sanity document type:- Good Names
- Invalid Names
blogPostarticleauthorproduct
Use camelCase: lowercase start, capitalize subsequent words, no spaces or hyphens
Map Your Fields
Connect each Webflow column to a Sanity field:Auto-Mapping
MigrateKit suggests mappings based on:- Column names (e.g.,
Name→title) - Data types detected in your CSV
- Common Webflow patterns
Manual Mapping
For each Webflow column:1
Select the column
Click a Webflow column on the right to see sample data
2
Create or select a Sanity field
On the left, click + Add Field or select an existing field
3
Configure the field
Set:
- Field name: Sanity field name (e.g.,
content,heroImage) - Field type: Choose from Sanity types
- Required: Whether field must have a value
Quick Field Type Reference
| Webflow Column Type | Sanity Field Type | Notes |
|---|---|---|
| Name, Title | string | Short text |
| Rich Text, Body | portableText | HTML auto-converts |
| Main Image | image | Single image |
| Slug | slug | URL-friendly ID |
| Published Date | datetime | With time |
| Price, Count | number | Numeric values |
| Featured, Active | boolean | True/false |
| Website | url | Web URLs |
See Field Types Reference for a complete list with examples
Field Configuration Options
Required Fields
Mark fields as required if they must have a value:Important: If a required field has empty values in some CSV rows, those rows will fail to import
Field Renaming
Use different names in Sanity than Webflow:| Webflow | → | Sanity | Why |
|---|---|---|---|
| Name | → | title | More semantic |
| Post Body | → | content | Cleaner |
| Main Image | → | heroImage | More descriptive |
Fields to Skip
Don’t map these Webflow columns (MigrateKit uses them internally):Collection IDItem IDLocale ID
Created On(Sanity creates_createdAt)Updated On(Sanity creates_updatedAt)Published On(Sanity creates_publishedAt)
You CAN map these to custom fields if you want to preserve original Webflow dates
Special Field Types
Portable Text (Rich Content)
Portable Text (Rich Content)
Use for: Webflow rich text fields with HTMLMigrateKit automatically converts:
- Headings (H1-H6)
- Paragraphs and line breaks
- Bold, italic, underline
- Lists (ordered and unordered)
- Links
- Embedded images
Image Fields
Image Fields
Use for: Webflow image columnsDuring import, MigrateKit:
- Downloads images from Webflow CDN
- Checks for duplicates (reuses if exists)
- Uploads to your Sanity project
- Creates proper image references
Slug Fields
Slug Fields
Use for: Webflow slug columnMigrateKit:
- Sanitizes values (removes special characters)
- Formats for Sanity’s slug type (
{current: "value"}) - Preserves URL-friendly format
Arrays
Arrays
Use for: Comma-separated values (tags, categories, multiple images)Map to
array and specify item type:- Array of strings
- Array of images
- Array of numbers
Validation
MigrateKit validates your mappings before import:Schema Validation
Schema Validation
- Document type name is valid
- No duplicate field names
- Field types match data
- Required fields are mapped
Data Validation
Data Validation
- Values can convert to target types
- Required fields have data
- Dates are parseable
- Numbers are numeric
- URLs are valid
Preview
Preview
Review sample transformed documents:
- First 3-5 documents shown
- Check Portable Text rendering
- Verify image references
- Confirm data looks correct
Common Validation Issues
“Field type mismatch”Data doesn’t match chosen type (e.g., text in a number field).Fix: Change field type or clean data in CSV.
“Required field has empty values”Some rows missing data for a required field.Fix: Make field optional, fill missing values, or skip those rows.
“Invalid Portable Text”HTML couldn’t be converted properly.Fix: Check HTML for malformed tags or unsupported structures. See Troubleshooting.
Next Step
Once fields are mapped and validated:Step 3: Connect Sanity
Link your Sanity project with API credentials