Getting started

The quick start gets you through one import. This page explains the model underneath it, so you can plan a real migration rather than following steps.

What ImportKit is for

Shopify can import products and customers from a CSV out of the box. What it can't import is the custom data layer — the metafields and metaobjects you define to hold everything Shopify's built-in fields don't cover. Normally you build those one at a time in the admin, then fill them in product by product.

ImportKit imports that layer. Five content types:

TypeOne row is…Typical use
Metafield definitions one field definition Setting up 30 product fields without 30 trips through the admin.
Metafield values one value on one resource Filling in a care guide on 400 products from a supplier sheet.
Metaobject definitions one custom content type, with all its fields Creating an “Author” or “Size chart” structure.
Metaobject entries one entry of a definition Loading 200 store locations or 50 ingredients.
Blog articles one article Migrating a blog off WordPress, with metafields attached.

Definitions versus values

This is the single distinction worth getting straight, because two of the five import types are about each side of it.

A definition is the shape of the field.
“Products have a field called custom.care_guide, it holds multi-line text, and it shows up on the product page in the admin.” It exists once per store. You create these with metafield definitions.
A value is what's in that field on one resource.
“This particular t-shirt's custom.care_guide says Hand wash cold.” There's one per resource. You set these with metafield values.

The same split applies to metaobjects: metaobject definitions describe the structure (“an Author has a name, a bio and a photo”), and metaobject entries are the actual authors.

Order matters

Import definitions before values. A value import can succeed without a definition if you supply a type column, but you'll get a better-behaved store — pinned fields, validations, proper admin UI — if the definition goes in first.

Every import has the same four steps

  1. Choose a content type and target

    The content type decides which columns exist. Two types also need a target: blog articles need to know which blog, and metaobject entries need to know which definition. For metaobject entries the target actually changes the available columns, because they come from that definition's own fields.

  2. Upload a CSV

    ImportKit reads the header row and lists your columns with a few sample values from each. The file is read as a stream, so a large one doesn't have to fit in memory. File requirements →

  3. Map columns to fields

    Pick the Shopify field for each column, or set it to Ignore. Your header names don't need to match anything — mapping is always explicit. Ignored and unmapped columns are dropped before the import runs. Mapping in detail →

  4. Check, then import

    For every type except blog articles, a free read-only pre-import check gives every row a verdict and totals the credits needed. Then Start Import runs the job on our servers with live progress. Running an import →

Screenshot

The wizard's step indicator

All four steps visible with step 2 active, so the flow is obvious at a glance.

assets/screenshots/wizard-steps.png

Where things live in the app

PageWhat it's for
Home Your credit balance — available, purchased, used — and your five most recent imports with their status.
Import The four-step wizard. Also where the template and column-guide downloads live.
Credits Your balance and the four credit packs. Purchases are approved on Shopify's own charge screen.
Jobs Every import you've ever run. Active jobs show live progress; finished ones open to per-row results and a failures download.

How you pay

ImportKit is free to install, and everything up to the moment of writing is free: templates, uploads, mapping, and unlimited pre-import checks. Imports cost one credit per row written.

Credits and billing in full → · Pack prices →

What ImportKit can and can't touch

ImportKit deliberately doesn't ask for access to your customers or orders. That keeps the app out of Shopify's protected customer data review, and it means the app cannot read that data at all — but it also means customer and order metafields are out of reach.

Rows targeting them aren't silently dropped. They're reported individually with the exact missing permission, and the rest of the file still imports. The owner type dropdown on the mapping step only lists owner types your store's granted permissions actually cover, so you'll usually see this before you even build a file.

The full permissions reference →

What it deliberately won't do

Read this before planning a migration around it.

The rest of the deliberate limitations, with reasoning →

Testing safely

Because imports can't be reversed, the cheapest insurance is a dry run somewhere that doesn't matter.

  1. Use a development store. Install ImportKit there and run the real file. Credit purchases on development stores are test charges, so rehearsing costs nothing.
  2. Or split the file. Copy the header row and five data rows into a second file, import that into production, and check the result in the Shopify admin before running the rest.
  3. Always run the pre-import check. It costs nothing and catches invalid keys, unknown owner types, reserved namespaces, duplicate rows within the file and type conflicts with existing definitions.
  4. Start with conflict mode set to Skip. It's the default for a reason: the worst case is that nothing happens.

Checklist before a live import

Next