> ## 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.

# Quickstart Guide

> Migrate your first Webflow collection to Sanity in 10 minutes with this step-by-step quickstart guide.

This guide is the condensed path to your first migration. For canonical, detailed behavior and edge cases, use the [Migration Guide steps](/migration/step-1-export).

## Before You Begin

Make sure you have:

* A Webflow collection to export
* A Sanity project with dataset (or ready to create one)
* A Sanity API token with Editor permissions
* A ContentWrap account

<Card title="Need setup help?" icon="list-check" href="/prerequisites">
  See prerequisites for detailed requirements
</Card>

## Step 1: Export from Webflow

<Steps>
  <Step title="Open Webflow CMS">
    Navigate to your Webflow project and click **CMS** → **Collections**
  </Step>

  <Step title="Select a collection">
    Choose a collection to migrate
  </Step>

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

<Warning>
  **Don't edit the CSV!** Keep all columns and headers exactly as Webflow exports them, especially `Collection ID`, `Item ID`, and `Locale ID`.
</Warning>

## Step 2: Upload to MigrateKit

<Steps>
  <Step title="Sign in">
    Go to [app.contentwrap.io](https://app.contentwrap.io) and sign in
  </Step>

  <Step title="Open MigrateKit">
    Click **MigrateKit** in the sidebar or navigate to `/migratekit`
  </Step>

  <Step title="Upload your CSV">
    Drag and drop your Webflow CSV or click to browse
  </Step>
</Steps>

<Check>
  MigrateKit automatically detects your Webflow structure and shows a preview
</Check>

## Step 3: Map Fields

Define how Webflow content becomes Sanity documents:

<Steps>
  <Step title="Name your document type">
    Enter a Sanity-compatible name (e.g., `blogPost`, `article`, `product`)

    <Tip>
      Use camelCase with no spaces: `blogPost` ✓ not `Blog Post` ✗
    </Tip>
  </Step>

  <Step title="Map your fields">
    For each Webflow column, select a Sanity field type:

    | Webflow Column | Sanity Type    | Notes               |
    | -------------- | -------------- | ------------------- |
    | Name/Title     | `string`       | Plain text          |
    | Post Body      | `portableText` | HTML auto-converts  |
    | Main Image     | `image`        | Downloads & uploads |
    | Slug           | `slug`         | URL-friendly ID     |
    | Published Date | `datetime`     | ISO date format     |
  </Step>

  <Step title="Skip system fields">
    Don't map: `Collection ID`, `Item ID`, `Locale ID` (ContentWrap uses these internally)
  </Step>
</Steps>

<Info>
  MigrateKit auto-suggests mappings based on column names and data types. Review and adjust as needed.
</Info>

## Step 4: Connect Sanity

<Steps>
  <Step title="Enter project details">
    You'll need three things:

    * **Project ID** - Found in your Sanity dashboard
    * **Dataset** - Usually `production` or `development`
    * **API Token** - Must have **Editor** permissions
  </Step>

  <Step title="Test connection">
    Click **Test Connection** to verify credentials
  </Step>
</Steps>

<Tip>
  **First migration?** Use a test dataset like `development` to safely try the migration before importing to production.
</Tip>

## Step 5: Import

<Steps>
  <Step title="Review the preview">
    Check sample documents to ensure:

    * Field mappings look correct
    * Portable Text renders properly
    * Images are referenced
  </Step>

  <Step title="Start import">
    Click **Import to Sanity**

    <Info>
      All documents import as **drafts**—your published content stays safe
    </Info>
  </Step>

  <Step title="Monitor progress">
    Watch the real-time progress:

    * Documents created
    * Assets uploaded
    * Warnings or errors
  </Step>
</Steps>

## Step 6: Verify in Sanity

<Steps>
  <Step title="Open Sanity Studio">
    Navigate to your Sanity Studio (usually `yourproject.sanity.studio`)
  </Step>

  <Step title="Check drafts">
    Review migrated documents in the drafts section

    * Check content accuracy
    * Verify formatting
    * Confirm images loaded
  </Step>

  <Step title="Publish when ready">
    Publish documents individually or in bulk
  </Step>
</Steps>

## What's Next?

<CardGroup cols={2}>
  <Card title="Full Migration Guide" icon="map" href="/migration/overview">
    Complete walkthrough with advanced options
  </Card>

  <Card title="Troubleshooting" icon="wrench" href="/troubleshooting/common-issues">
    Common issues and how to fix them
  </Card>

  <Card title="Understanding Portable Text" icon="code" href="/concepts/portable-text">
    How HTML converts to Portable Text
  </Card>
</CardGroup>

## Need Help?

<AccordionGroup>
  <Accordion title="The CSV upload failed">
    Check that your file:

    * Is a valid CSV (not XLSX or other format)
    * Has all original Webflow columns
    * Isn't corrupted or edited in Excel

    See [CSV troubleshooting](/troubleshooting/common-issues#csv-issues) for more help.
  </Accordion>

  <Accordion title="Portable Text looks wrong">
    This usually happens with complex HTML. MigrateKit converts most common tags, but some structures may need manual cleanup in Sanity.

    Learn more: [HTML Conversion](/concepts/html-conversion)
  </Accordion>

  <Accordion title="Images didn't upload">
    Image upload failures typically occur due to:

    * Invalid image URLs in your CSV
    * Network timeouts for large files
    * Sanity asset quota limits

    The import report shows which assets failed—you can re-upload them manually.
  </Accordion>

  <Accordion title="Some rows failed to import">
    Check the error messages for specific issues:

    * Required fields with missing values
    * Invalid data types (text in number fields)
    * Malformed dates or slugs

    Fix the issues and re-import just those rows.
  </Accordion>
</AccordionGroup>

<Card title="Contact Support" icon="envelope" href="mailto:support@contentwrap.io">
  Still stuck? Email us at [support@contentwrap.io](mailto:support@contentwrap.io)
</Card>
