> ## Documentation Index
> Fetch the complete documentation index at: https://docs.contentwrap.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Step 2: Export from Webflow

> Learn how to properly export your Webflow CMS collection as a CSV file for migration to Sanity using ContentWrap.

## Export Your Collection

<Steps>
  <Step title="Navigate to CMS Collections">
    In Webflow Designer or Editor, click **CMS** → **Collections**
  </Step>

  <Step title="Select your collection">
    Click the collection you want to migrate
  </Step>

  <Step title="Export as CSV">
    Click the settings icon (⚙️) → **Export** → **CSV file**

    Webflow downloads a file named `Collection Name.csv`
  </Step>

  <Step title="Save the original">
    Store the file safely and **make a backup copy**
  </Step>
</Steps>

<Check>
  You should now have a CSV file with all your collection's content, including all fields and metadata.
</Check>

## Critical: Don't Edit These Columns

MigrateKit relies on Webflow's system fields to prevent duplicates and track content. **Never modify or delete:**

<Warning>
  **Required Webflow Columns**

  * `Collection ID` - Identifies the source collection
  * `Item ID` - Unique identifier for each item (used to prevent duplicates)
  * `Locale ID` - Language/locale information

  If these columns are missing or modified, ContentWrap cannot properly track and update documents.
</Warning>

### Don't Rename Headers

Keep all column headers exactly as Webflow exports them:

| ❌ Wrong        | ✅ Correct    |
| -------------- | ------------ |
| `Post Title`   | `Name`       |
| `Article Body` | `Post Body`  |
| `Hero`         | `Main Image` |

Renaming headers breaks MigrateKit's auto-mapping feature.

## Safe Modifications

You CAN make these changes without breaking the migration:

<AccordionGroup>
  <Accordion title="Delete Entire Rows">
    Remove rows for content you don't want to migrate:

    * Draft items
    * Test content
    * Archived posts

    <Tip>
      **Better approach:** Import everything and delete unwanted drafts in Sanity instead. This gives you more flexibility.
    </Tip>
  </Accordion>

  <Accordion title="Remove Empty Columns">
    Delete columns that are completely empty (no data in any row):

    * Blank columns added by spreadsheet software
    * Trailing empty columns

    <Warning>
      Only delete if **every single row** is empty in that column!
    </Warning>
  </Accordion>

  <Accordion title="Remove Trailing Blank Rows">
    Delete empty rows at the end of the file after all your data
  </Accordion>
</AccordionGroup>

## Understanding Webflow CSV Structure

Knowing how Webflow formats different field types helps you plan your Sanity mapping:

### Text Fields

Plain text exports as simple strings:

```csv theme={null}
Name,Slug
My Blog Post,my-blog-post
```

### Rich Text (HTML)

Rich content exports as HTML in quoted cells:

```csv theme={null}
Post Body
"<h2>Introduction</h2><p>This post has <strong>formatting</strong>.</p>"
```

ContentWrap automatically converts this to Portable Text during import.

### Images

Images export as Webflow CDN URLs:

```csv theme={null}
Main Image
https://uploads-ssl.webflow.com/123abc/456def-image.jpg
```

ContentWrap downloads these and uploads them to your Sanity project.

\###Multi-Image Fields

Multiple images are comma-separated:

```csv theme={null}
Gallery
"https://cdn.webflow.com/img1.jpg,https://cdn.webflow.com/img2.jpg"
```

### Dates

Dates export in ISO format:

```csv theme={null}
Published Date
2024-01-15T10:30:00.000Z
```

<Warning>
  **Excel will corrupt dates!** Excel auto-formats dates, changing `2024-01-15T10:30:00.000Z` to `1/15/2024`. This breaks the import.

  **Solution:** Use Google Sheets or open CSVs in a text editor. If you must use Excel, import as text.
</Warning>

### Booleans

Checkboxes export as text:

```csv theme={null}
Featured
true
```

MigrateKit converts `"true"`, `"yes"`, and `"1"` to `true`.

### Reference Fields

<Info>
  **Not Currently Supported**

  Reference fields export but can't be automatically imported. You'll need to manually recreate relationships in Sanity after migration.

  See [Limitations](/reference/limitations) for details.
</Info>

## Common Issues

<AccordionGroup>
  <Accordion title="Special characters look broken">
    **Problem:** Seeing `Ã©` instead of `é` or `â€™` instead of `'`.

    **Cause:** Encoding issue (not UTF-8).

    **Solution:**

    * Re-export from Webflow
    * MigrateKit handles UTF-8, UTF-16, and most encodings
    * If it persists, the source data in Webflow may be corrupted
  </Accordion>

  <Accordion title="Excel changed my data">
    **Problem:** Excel removed leading zeros, changed dates, or modified large numbers.

    **Solution:**

    * Don't open CSVs in Excel
    * Use Google Sheets or LibreOffice Calc
    * OR import in Excel as text: **Data** → **From Text/CSV** → set columns to **Text** format
  </Accordion>

  <Accordion title="CSV has weird line breaks">
    **Problem:** File looks broken in text editor with strange line endings.

    **Solution:** This is normal! CSVs can use different line ending formats (Windows vs. Mac vs. Unix). MigrateKit handles all formats correctly.
  </Accordion>

  <Accordion title="Commas in content break columns">
    **Problem:** Content with commas creates extra columns.

    **Solution:** This shouldn't happen—Webflow wraps fields containing commas in quotes. If you see this, the CSV may be corrupted. Re-export from Webflow.
  </Accordion>
</AccordionGroup>

## Pre-Upload Checklist

Before uploading to ContentWrap, verify:

* [ ] First row contains original Webflow headers (not renamed)
* [ ] `Collection ID`, `Item ID`, and `Locale ID` columns present
* [ ] No obviously corrupted data (garbled characters)
* [ ] Dates are properly formatted (if visible)
* [ ] Image URLs are complete (start with `https://`)
* [ ] File saved with `.csv` extension
* [ ] Backup copy created
