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
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: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)
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
Next Step
Once fields are mapped and validated:Step 3: Connect Sanity
Link your Sanity project with API credentials