Import Collections Tool for Shopify
🔧 Quick Info: Create, update, and delete Shopify collections — rules, manually added products, exclusions, and metafields — from a spreadsheet.
What it does
Import Collections reads a CSV or Excel file and applies it to your Shopify collections. Each group of rows (grouped by Handle) describes one collection: its core details on the first row, and one row per rule, manually added product, exclusion, or sub-collection reference below it.
For every group the tool:
- Updates the collection when the ID column is filled in, or when a collection with that handle already exists.
- Creates a new collection when the ID is blank and no collection has that handle — only if Create New Collections was turned on for the upload.
- Deletes the collection when the Command column says
DELETE.
Ready for Re-Import: The file format is exactly what Export Collections produces, so the easiest workflow is: export, edit the file, re-import. The import runs in the background and, if you turn email delivery on, emails you when it finishes; rows that fail come back in an error file you can fix and re-upload.
When to use it
- You exported your collections, bulk-edited rules or details in a spreadsheet, and want to push the changes back.
- You’re creating many collections at once — seasonal sets, brand pages, category landing pages.
- You’re copying collections to another store — the file references products by handle and SKU, so it works across stores.
- You need to clean up: delete a batch of old collections with a
DELETEcommand column.
Before you start
- Your Shopify store must be connected to your account.
- Your file needs a header row, and every row needs a Handle — the handle is what groups rows into collections.
- Products are referenced by handle or SKU — never by ID. Referenced products and collections must already exist in the store.
- Metafield columns require the matching metafield definition to already exist on the store.
- Rules replace, they don’t merge. If a group contains any rule/product rows, the collection’s sources are replaced with exactly what’s in the file. A group with only core fields (no rule rows) leaves the collection’s rules untouched.
Step-by-step
1 Open the Tool
Open the Import Collections tool.
2 Upload Collections
On the Upload Collections step, decide whether to allow Create New Collections (off by default — with it off, the import only updates existing collections), then upload your CSV or Excel file (or import from a URL).
3 Match to column
Once the file is read, a Match to column section appears. Columns from an Export Collections file are matched automatically; adjust anything that isn’t.
- Handle is required.
- Match every
Metafield: namespace.keycolumn you want imported under Metafields.
4 Email delivery
Continue to the email delivery step and choose whether you’d like an email when the import finishes — your account email is prefilled if you turn it on.
5 Submit
Submit. The import runs in the background as a job, so you can leave the page.
6 Watch for the email
If you turned email delivery on, watch for the email. If any collections failed, it includes an error file listing each failed collection with the reason — fix those rows and re-upload just that file.
File / field reference
The format is described in detail in Export Collections — the same columns, Row Types, and value formats apply. The rules below are specific to importing:
Create, update, delete
| Situation | What happens |
|---|---|
| ID filled in | Updates that collection. The Handle column becomes the collection’s handle (so you can rename a handle this way). Fails if the ID doesn’t exist. |
| ID blank, handle exists | Updates the collection with that handle. |
| ID blank, handle doesn’t exist | Creates a new collection — only when Create New Collections is turned on for the upload (it’s off by default; otherwise the collection is reported as an error). Title is required when creating. |
Command = DELETE |
Deletes the collection (matched by ID or handle). Other columns on the row are ignored. |
Blank cells vs. delete
- A blank core-field cell leaves that field untouched on an update.
- The literal word
deletein a cell clears the field (works for Description, Theme Template, Image Src, SEO Title, SEO Description). - Blank Published leaves the publish state alone;
yespublishes to your Online Store,nounpublishes. - Metafield cells: blank = untouched. (
deleteis not supported for metafield values — clear those in the Shopify admin.)
Rules and sources
- Source # groups rows into sources; if you leave it blank everything lands in source 1. Source Title is optional — a name is generated when blank.
- Match (
ANY/ALL) is read from the first rule row of the source; onExcluderows it sets the exclusion’s match. - Values Match defaults to
ANYwhen blank. - Target defaults to Shopify’s standard product-level matching; set
VARIANTSfor variant-level sources. - Exclusion rules support
productTag,productType,productVendor, andproductCategory— Shopify doesn’t allow other condition types as exclusions. - Exclude Collection rows: Shopify allows at most 5 excluded collections per source, and they can’t be combined with other exclusion rules.
- A Sub-Collection source can’t mix with rule or product rows — use a separate Source # for each.
- When Sort Order is
MANUAL, the order of the Product rows becomes the products’ manual order in the collection.
Product identifiers
On Product / Exclude Product rows, the Values cell accepts a product handle (red-hoodie) or a variant SKU (TOTE-1, 36167) — numeric SKUs work fine. Product IDs are not accepted.
Text values are looked up as a handle first, then as a SKU. Anything that matches neither fails that collection with a clear error instead of being silently ignored.
What a SKU means depends on the source’s Target: on a normal (PRODUCTS) source it simply identifies the product — the whole product joins the collection. On a VARIANTS-target source it pins that exact variant.
Troubleshooting / FAQ
“No product or variant matches […] (looked up as handle and SKU).”
The identifier in a Product row doesn’t exist in this store. Check for typos, or create the product first.
“No collection matches the handle […].”
A Sub-Collection or Exclude Collection row references a collection that doesn’t exist yet. Import or create the referenced collections first, then re-run the failed rows.
“Unsupported condition type …”
The row uses a condition this tool doesn’t support yet (usually something Shopify added recently, exported as a long technical name). Remove or replace that rule row; the rest of the file imports normally.
“No … metafield definition exists for [namespace.key] on this store.”
Metafield rules and metafield value columns need the definition to exist on the target store. Create the definition in Shopify (Settings → Custom data), then re-import.
My collection’s rules disappeared / changed more than I expected.
Rule rows replace the collection’s existing rules. If you only wanted to change core fields, leave the rule columns empty — a core-only group never touches rules.
A “Shareable Source” row failed on another store.
Shared sources belong to the store (and app) that created them, so their IDs don’t exist on other stores. Remove that row when importing into a different store and recreate the rules as normal Rule rows.
Where do my results go?
The job runs in the background and emails you when done (if email delivery was set to “Yes”). Failed collections are collected into an error file with the reason per collection — fix and re-upload just those rows.