Frequently asked questions
The questions that come up most, and the reasoning behind the answers — including the things ImportKit deliberately won't do.
Getting started
Do I need to understand metafields to use this?
Not much. Download the template for the type you want and it arrives with a correct header row plus worked example rows, each demonstrating a different situation. Change the values, keep the headers, import it. The quick start walks through a real import in about five minutes.
If “definition” versus “value” is new to you, two paragraphs here will save you a lot of confusion.
What can ImportKit actually import?
Five things: metafield definitions, metafield values, metaobject definitions, metaobject entries and blog articles. Compared side by side →
Not products, collections, customers, orders, themes or files. Products have Shopify's own CSV importer; ImportKit covers the custom data layer around them.
Does it work with Excel or Google Sheets files?
Upload CSVs. Excel, Sheets, Numbers and LibreOffice all export one in a couple of clicks — here's the route through each, including the encoding setting that matters.
Do my column names have to match anything?
No. Mapping is explicit — you pick the Shopify field for each column from a dropdown. Any export from anywhere works without renaming a thing, and extra columns are harmless. More →
How do I test safely?
Install on a Shopify development store and run the real files there. Credit purchases on development stores are test charges, so a full rehearsal costs nothing. Failing that, import a five-row sample into production and check it in the admin before running the rest.
Safety and mistakes
Can I undo an import?
No. ImportKit never deletes anything, which also means it can't reverse itself. Undoing an import is manual work in the Shopify admin.
That's a deliberate design decision rather than a missing feature. An app with delete access that can bulk-remove data from a CSV is a much more dangerous thing to install than one that can only add and update. The trade we made instead is the free pre-import check — read every row's verdict before anything is written, as many times as you like.
What happens if I import the same file twice?
For definitions, metaobject entries and metafield values, ImportKit recognises what already exists and applies your conflict mode: skip it, update it, or report it as an error. Skipped rows aren't charged, so a re-run of an already-imported file costs nothing.
Blog articles are the exception. Articles aren't uniquely keyed, so a second run creates them again. Only run an article file once.
Will it overwrite data I already have?
Only if you choose Update mode. The default is Skip, which leaves existing data completely alone.
Even in Update mode, some things are never rewritten: a metafield definition's type, and a metaobject definition's existing fields. Those are immutable in Shopify and rewriting them from a spreadsheet would be destructive in a way that can't be undone.
What if I get a mapping wrong?
The check catches most of it for free — a name in the key column fails key validation, a mis-mapped owner type fails on every row. Going back a step costs nothing, and nothing is written until you press Start Import.
Can a blank cell delete an existing value?
No. Blank cells are skipped rather than written, so a blank can't clear a value. That's a safety choice: it means an export with gaps can't quietly wipe data. To empty a metafield, delete it in the Shopify admin.
Credits and billing
How much does it cost?
Free to install. One credit per row written, with credits sold in one-time packs from 50 for $1.99. Pricing → · How credits work →
Is there a free trial or free credits?
No free credits, but everything up to the moment of writing is free and unmetered — templates, uploads, mapping, and unlimited pre-import checks. So you can validate an entire file before spending anything. First pack is $1.99.
Do credits expire?
No. They stay on your store's balance indefinitely, and survive an uninstall-and-reinstall on the same store.
Am I charged for rows that fail?
No. Rows that error, skip, conflict or get interrupted are refunded automatically. A credit is reserved just before each row is sent and released the moment the outcome is known, so an import that fails entirely costs nothing.
How do I know what an import will cost before running it?
Run the pre-import check. It reports “N of M rows will be written”, and N is the credit cost. It's free and re-runnable after every edit.
What if I run out of credits mid-import?
The import stops cleanly at your balance and says so. Nothing was written that couldn't be paid for. Buy a pack, then press Retry — it resumes from the first unprocessed row and never re-charges rows that already succeeded.
Per store or per organisation?
Per store. Credits belong to the store that bought them and aren't transferable, so agencies buy credits on each client store. The charge lands on that store's Shopify invoice.
Files and limits
How big a file can I import?
Up to 50 GB and 1,000,000 rows per import, and we can raise that on request. The pre-import check reads the whole file at once, so it caps at 50,000 rows or 32 MB — above that the check is skipped but the import still works, with conflict handling applied per row exactly as usual. All limits →
How long does an import take?
Rows go to Shopify one at a time, so expect thousands of rows to take minutes rather than seconds. Serial processing is deliberate — Shopify's API throttles hard enough that parallel writes end up slower, and one-at-a-time keeps every row's outcome unambiguous.
Do I have to keep the browser tab open?
No. Imports run as background jobs on our servers. Close the tab and check progress later under Jobs.
Can I cancel a running import?
Yes. It stops between rows, keeps everything already imported, and charges only for those rows. Retry resumes from where it stopped. Cancellation is checked every few rows rather than instantly.
Can I schedule imports, or sync automatically?
No. Every import is started by you, deliberately. There's no scheduler and no automatic sync — which also means nothing writes to your store while you aren't looking.
Permissions and data
Why does it ask for so many permissions?
Shopify gates metafield definitions by the owner resource's own permission, not by a metafield permission. To let you define a metafield on a market, the app needs market write access — even though it never reads or changes a market. That's why permissions for discounts, locations and checkout customisations appear on a CSV importer. The full list, with reasons →
Can it import customer or order metafields?
No, and that's on purpose. ImportKit doesn't request customer or order permissions, which keeps it out of Shopify's protected customer data review and means it cannot read that data at all.
Rows targeting those owner types aren't silently dropped — they're reported individually with the exact missing permission, and the rest of the file still imports.
Is my uploaded file stored?
The file itself is never written to disk — it's read as a stream as it arrives. The values from the columns you mapped are stored alongside the job record, so you can review per-row results and resume an interrupted import. Columns you ignored or left unmapped are dropped before that and never stored. Full detail →
What happens to my data if I uninstall?
Your session and access token are deleted immediately, so all API access ends. Import history and credits are kept at that point in case you reinstall, and everything is deleted when Shopify sends a shop redaction request — or sooner if you ask. Retention →
Does ImportKit use analytics or tracking?
No analytics, no advertising, no session recording, no third-party trackers, and no error-reporting service. The only cookies are the ones Shopify's embedded app authentication requires.
Things ImportKit deliberately won't do
Each of these is a decision, not a gap. Better to know now than mid-migration.
- Delete anything, or roll back an import
- An app that can bulk-delete from a CSV is far more dangerous than one that can only add and update. The pre-import check exists to carry the weight instead.
- Touch customers, orders, draft orders or gift cards
- Requesting those permissions would mean holding access to your customers in order to support a handful of metafield owner types. Bad trade for an importer.
- Create the resources you're tagging
- A metafield value needs a product, page or collection that already exists. Creating products from a values file would make a typo in a handle silently produce a new product.
- De-duplicate blog articles
- Shopify doesn't treat articles as uniquely keyed, so ImportKit can't reliably distinguish “this article again” from “a new article with a similar title”. Guessing would be worse than saying so.
- Let you set an article's status
- Imported articles are always published. There's no draft column.
- Change a metafield's type
- Shopify makes types immutable, because existing values are stored in that shape.
- Rewrite a metaobject definition's existing fields
- Field types are immutable and entries hold data in them. Update mode adds new fields and warns about mismatches instead.
- Upload files
-
A
file_referencemust point at something already in your Shopify files. Blog article featured images are the exception, since Shopify fetches those from a URL itself. - Guess at an ambiguous reference
- Two variants sharing a SKU is an error, not a coin flip. A page handle with no documented lookup is refused rather than approximated.
- Silently retry a row whose outcome is unknown
- An interrupted row is marked uncertain, refunded, and surfaced for you to check — never quietly re-sent, which could duplicate your data, and never quietly dropped, which could lose it.
Something else?
Email support@importkit.app with your store domain and, if it's about a specific import, the job number from the URL when you open it in Jobs. The error message reference covers every message the app can produce, which answers most questions faster than we can.