Importing Collections

The Collections import creates and updates your store's collections from a CSV/Excel file, a Google Sheet, or directly from another connected store. It handles both kinds of collection:

  • Custom collections — you choose the products by hand (a product list).
  • Smart collections — Shopify auto-includes products that match your rules (e.g. tag equals summer).

Rows are matched by handle, so running the same file twice updates the same collections instead of creating duplicates.

For the wizard itself — uploading, mapping, dry runs, schedules — see Importing into EcomSolo.

Columns

Only Handle and Title are required; everything else is optional.

ColumnNotes
HandleThe collection's SEO handle (e.g. summer-sale). This is the identity used to match, create, and update collections.
TitleThe collection's display name.
DescriptionHtmlThe collection description, as HTML.
SortOrderHow products are ordered (e.g. manual, best-selling, alpha-asc).
TemplateSuffixThe theme template suffix used to render the collection.
ImageSrcA publicly reachable image URL for the collection image.
ImageAltTextAlt text for the collection image.
SeoTitle / SeoDescriptionSEO overrides.
AppliedDisjunctivelytrue = products match any rule (OR); false = all rules (AND). Smart collections only.
RulesSmart-collection rules as COLUMN:RELATION:CONDITION, multiple rules separated by |. Example: TAG:EQUALS:summer|TYPE:EQUALS:shirt.
ProductsCustom-collection membership — product handles separated by ;. Example: blue-hat;red-scarf.

Common export headers map automatically: Collection Handle → Handle, Body HTML → DescriptionHtml, Product Handles → Products, and so on.

Custom vs smart collections

A row is treated as smart when it has Rules, and custom otherwise:

  • Smart — the Rules (and AppliedDisjunctively) are applied and Shopify populates the collection automatically. Any Products on the row are ignored (Shopify manages membership).
  • Custom — the Products handles are resolved to products in the target store and set as the collection's manual membership. Rules are ignored.

You can't mix both on one collection — Shopify rejects setting rules on a collection that has a manual product list and vice-versa.

How collections are matched

Every row is matched to an existing collection by handle in the target store:

  • If a collection with that handle exists, it is updated.
  • If none exists, a new one is created.

The dry run shows the create/update split before anything is written. The default operation is Upsert; Create only, Update only, Merge (partial update — only the columns in your file are touched) and Delete all match by handle the same way. See Choosing the operation for how each one behaves.

Product membership (custom collections)

Membership is set by product handle, resolved against the target store:

  • Each handle in the Products column is looked up in the target store's product index and added to the collection.
  • A product that isn't in the target store yet is skipped (the rest are still added) — import your Products first so membership resolves fully.

Importing from another store

On the wizard's Source step, pick From another store to copy collections from a connected store — no file needed. Attributes and smart-collection rules come across as-is; custom-collection membership is carried by resolving the source products' handles on the target (products missing on the target are skipped). Combined with a schedule this becomes a recurring one-way collection sync.

Deleting collections

Pick the Delete operation in Step 1 (permission-gated) and upload a file with just the Handle column — each handle is matched exactly like an update:

Handle
summer-sale
all-shirts

A ready-to-run copy lives at features/importing/examples/collections-delete-sample.csv. The dry run shows a red "Will delete N" count; a handle that matches nothing is skipped (so re-running the same delete file is safe). Deleting a collection removes it from Shopify permanently — this cannot be undone. Products in the collection are not affected.

Results and freshness

Collections you create or update take effect in Shopify immediately, and EcomSolo's Collections dashboard refreshes within seconds of the run.

Sample file

A ready-to-run sample covering every case lives at features/importing/examples/collections-sample.csv:

Handle,Title,DescriptionHtml,SortOrder,TemplateSuffix,ImageSrc,ImageAltText,SeoTitle,SeoDescription,AppliedDisjunctively,Rules,Products
basics,Basics,,,,,,,,,,
summer-sale,Summer Sale,"<p>Hot deals, all summer.</p>",manual,,https://picsum.photos/seed/wowsummer/1200/800.jpg,Summer sale banner,Summer Sale,"Deals, all summer long",,,blue-hat;red-scarf
all-shirts,All Shirts,<p>Every shirt we stock.</p>,best-selling,,,,,,false,TYPE:EQUALS:shirt,
sale-or-clearance,On Sale,,alpha-asc,,,,,,true,TAG:EQUALS:sale|TAG:EQUALS:clearance,

Row by row: a minimal custom collection; a fully-populated custom collection with two products by handle; a smart collection with one rule (all products of type "shirt"); and a smart collection with two rules matched disjunctively (sale or clearance tag).

Troubleshooting

Error in the reportWhat it means / what to do
row requires a HandleEvery row needs the collection handle.
row requires a TitleEvery row needs a display name.
Cannot update rule set of a custom collectionYou supplied Rules for a handle that already exists as a custom collection (or vice-versa). Keep a collection's kind consistent.

FAQ

Will re-importing create duplicates? No — rows match by handle and the operation is an upsert, so re-runs update in place.

Some of my products didn't get added. Those products aren't in the target store yet. Import your Products first, then re-run the collections import.

Can I delete collections? Yes — pick the Delete operation and upload a file of handles. See Deleting collections. It's permission-gated and irreversible.