The unified Collections data type covers every kind of collection on your store: rule-based (smart), hand-picked (manual), and collections that combine both. It supports Shopify's newer collection features - excluded products, membership pulled in from other collections, and rules that target individual variants - that the legacy Smart Collection and Manual Collection formats cannot represent.
A collection's membership is defined by one or more sources. Each source can add products by rules, by hand-picked products or variants, or by pulling in the contents of other collections. Most collections have a single source, and a file without any Source columns works exactly like a legacy Smart or Manual collection file.
Sample Files
Download sample spreadsheets to see the structure for importing collection data:
Mixed Sources Collections - Shows a collection combining tag rules with an exclusion, a hand-picked product, and hand-picked variants, plus a second collection that pulls it in as a sub-collection alongside its own rules
General
ID
Description | Example Value |
Shopify collection identifier |
|
If present, the ID will be used to group multiple rows together into a single collection. When importing, the ID will be used to find the existing collection on the store. If no match is found, the app will fall back to the Handle, and then the Title.
Handle
Description | Example Value |
URL-friendly identifier |
|
The handle is the URL-friendly version of the collection title used in the collection's URL. If the ID is not present, the handle is used for grouping multiple rows together into a single collection and finding an existing collection on the store.
Command
Description | Example Value |
Action to perform |
|
NEW: Create a new collection (will skip if collection already exists)
MERGE: Update existing collection or create if not found
UPDATE: Update existing collection (will skip if collection doesn't exist)
REPLACE: Update the collection in place, wiping its sources and recreating them from the file
DELETE: Remove the collection from the store
IGNORE: Skip this collection during import
With MERGE and UPDATE, sources are handled incrementally: only the sources named in the file are touched (see Source Command), and sources not named in the file are left alone. With REPLACE, the file is the source of truth - every source is recreated from the file. In all cases, sources owned by other apps are never modified, and a file with no source or rule data at all (for example, a title-only update) leaves the collection's existing sources untouched.
Title
Description | Example Value |
Collection name |
|
The main title of the collection that will be displayed to customers. If neither ID nor Handle is present, the title is used for grouping multiple rows together into a single collection. A title is required when creating a new collection.
Body HTML
Description | Example Value |
Collection description |
|
The main description of the collection in HTML format. You can include plain text or formatted HTML with images, videos, links, and tables.
Sort Order
Description | Example Value |
Product sorting method |
|
Alphabet (ALPHA_ASC): A-Z by title
Alphabet Descending (ALPHA_DESC): Z-A by title
Best Selling (BEST_SELLING): Sort by sales volume
Created (CREATED): Oldest products first
Created Descending (CREATED_DESC): Newest products first
Manual (MANUAL): Custom ordering
Most Relevant (MOST_RELEVANT): Shopify's relevance-based sorting
Price (PRICE_ASC): Lowest price first
Price Descending (PRICE_DESC): Highest price first
The sort order applies to the whole collection, across all of its sources. Note that when a collection uses Manual sorting, products that newly match a rule are appended to the end of the manual order.
Template Suffix
Description | Example Value |
Alternative template name |
|
Allows you to use a custom template for displaying this specific collection. Work with your developer to create new templates in your theme.
Updated At
Description | Example Value |
Last modification time - Export only |
|
The timestamp when the collection was last modified. This field is export-only and cannot be imported. ISO-formatted timestamps are also supported.
Published
Description | Example Value |
Visibility |
|
TRUE: Collection is published and visible to customers
FALSE: Collection is unpublished and hidden from customers
Published At
Description | Example Value |
Publication time - Export only |
|
The timestamp when the collection was published. This field is export-only and cannot be imported. ISO-formatted timestamps are also supported.
Published Scope
Description | Example Value |
Publication scope |
|
global: Published on both Online Store and Point of Sale channels
web: Published only on Online Store channel
Row
Description | Example Value |
Row number - Export only |
|
Used when a collection spans multiple rows (e.g., when including multiple rules or products). This field is export-only.
Top Row
Description | Example Value |
Main collection row - Export only |
|
TRUE: This is the primary row for the collection
FALSE: This is a secondary row (e.g., for rules or products)
This field is export-only.
Image Src
Description | Example Value |
Collection image URL |
|
The URL of the featured image that represents the collection. The image must be publicly accessible.
Image Width
Description | Example Value |
Image width - Export only |
|
The width of the collection's featured image in pixels. This field is export-only and cannot be imported.
Image Height
Description | Example Value |
Image height - Export only |
|
The height of the collection's featured image in pixels. This field is export-only and cannot be imported.
Image Alt Text
Description | Example Value |
Image alternative text |
|
Alternative text for accessibility and SEO purposes.
Products Count
Description | Example Value |
Total products - Export only |
|
The total number of products currently in the collection. This field is export-only and automatically calculated by Shopify.
Collection Type
Description | Example Value |
Legacy classification - Export only |
|
Smart: The collection is fully representable as a legacy Smart collection - a single source that only uses rules the old format supports
Manual: The collection is fully representable as a legacy Manual collection - a single source that only uses hand-picked products (or no membership definition at all)
Mixed: Only the unified Collections type can represent this collection: multiple sources, rules and hand-picked products in one source, exclusions, variant targeting, sub-collections, app-managed sources, or rules the old format doesn't support
These labels match the legacy export types exactly: a Smart collections export contains precisely the collections labeled Smart, and likewise for Manual.
This field is computed on export to help you orient around the old Smart/Manual split. It is export-only and ignored on import - the source rows are always the source of truth.
Sources
A source is one part of a collection's membership. Each source has its own rules, hand-picked products, or referenced collections, and a collection's products are the combination of all its sources.
The Source column groups the rows of one collection into sources: rows that share the same Source value belong to the same source. If your file has no source columns, all of the collection's rows form a single source - this is how legacy Smart and Manual collection files behave.
Source
Description | Example Value |
Source name |
|
The name of the source. It groups the collection's rows into sources and is stored as the source's title in Shopify. Source names do not need to be unique across collections. If left blank, all rows form a single source titled Untitled Source.
Source Description
Description | Example Value |
Optional source description |
|
An optional description of the source. Only needs to be set on the source's first row.
Source ID
Description | Example Value |
Shopify source identifier |
|
The identifier of the source in Shopify. On export, the numeric identifier is written on the source's first row.
On import, the Source ID identifies which existing source the rows refer to. It is matched against the collection's sources; if nothing matches, the app falls back to matching the Source title. It is required when Source Target is Shared - there it identifies the app-owned source to link.
Source Command
Description | Example Value |
Action to perform on source |
|
MERGE: Update the source if it can be identified (by
Source IDorSourcetitle), or create it if not. This is the default when the value is blank.UPDATE: Update the source; the row fails if no existing source matches
REPLACE: Replace the source's rules and hand-picked products with the file's data; the row fails if no existing source matches
DELETE: Remove just this source from the collection, leaving its sibling sources intact. For a Shared source, this unlinks it.
IGNORE: Leave this source untouched
Source commands apply when the collection-level Command is MERGE or UPDATE. Imports are incremental: sources not named in the file are left alone, and removing a source always requires an explicit DELETE. When the source can be identified, MERGE, UPDATE, and REPLACE all replace that source's rules and hand-picked products wholesale with the file's data - there is no additive mode.
If the collection Command is REPLACE, source commands are ignored: all of the collection's sources are recreated fresh from the file.
Files without Source / Source ID columns (such as legacy Smart or Manual collection files) target the collection's only source automatically. If the collection has more than one source, the import fails with an error instead of guessing - export the collection with the Collections data type to edit it.
Source Target
Description | Example Value |
What the source adds |
|
Products: The source adds whole products, by rules and/or hand-picked products. This is the default when the value is blank.
Variants: The source targets individual product variants. Use with variant rules (e.g. Variant Price) or hand-picked variants (
Product: Variant ID/Product: Variant SKU).Sub Collection: The source pulls in the products of other collections. Each row references one collection in
Rule: Condition.Shared: The source is owned by another app and shared across collections. Identified by
Source ID; its rules are managed by the owning app and cannot be edited from the file.
Only needs to be set on the source's first row. If a row hand-picks a variant while the target is Products, the source is automatically imported as a Variants source.
Must Match
Description | Example Value |
Rule matching logic |
|
all conditions: A product is added by this source only if all of the source's rules are TRUE
any condition: A product is added by this source if at least one of the source's rules is TRUE
Applies per source (each source has its own matching logic). If no value is provided, the default is all conditions.
Rule: Product Column
Description | Example Value |
Product field to evaluate |
|
Title: Product title
Type: Product type
Category: Product category
Vendor: Product vendor
Variant Title: Product variant title
Variant Compare At Price: Variant compare at price
Variant Weight: Variant weight
Variant Inventory: Variant inventory quantity
Variant Price: Variant price
Tag: Product tag
Is Price Reduced: Product is on sale (compare at price is set and greater than price)
Status: Product status (
Active,Draft, orArchived). Include rules only.Collection: Collection membership. With
Rule: Modeset to Exclude, products in the referenced collection are excluded. Sub Collection sources leave this column blank.Metafield: Product metafield (use format
Metafield: namespace.key)Variant Metafield: Product variant metafield (use format
Variant Metafield: namespace.key)
Metafield rules require a metafield definition to exist for the namespace and key on your store.
When Rule: Mode is Exclude, only Tag, Type, Vendor, Category, and Collection rules are supported.
Rule: Relation
Description | Example Value |
Comparison method |
|
Greater Than (GREATER_THAN): Field value is greater than the condition value
Less Than (LESS_THAN): Field value is less than the condition value
Equals (EQUALS): Field equals the condition value
Not Equals (NOT_EQUALS): Field does not equal the condition value
Starts With (STARTS_WITH): Field value starts with the condition value
Ends With (ENDS_WITH): Field value ends with the condition value
Contains (CONTAINS): Field value contains the condition value
Not Contains (NOT_CONTAINS): Field value does not contain the condition value
Is Empty (IS_NOT_SET): Field has no value (only for Variant Compare At Price)
Is Not Empty (IS_SET): Field has a value (only for Variant Compare At Price)
Tag rules support the Equals and Not Equals relations.
Rule: Condition
Description | Example Value |
Value to compare against |
|
The value that the product field will be compared against. If the condition is empty the rule will be skipped.
For Category rules, use the category ID as shown on export (e.g.
gid://shopify/TaxonomyCategory/aa-1-13-8).For Collection rules and Sub Collection sources, use the referenced collection's handle or numeric ID.
The Is Price Reduced column does not require a condition value.
Rule: Include Descendants
Description | Example Value |
Category rule includes subcategories |
|
TRUE: The Category rule also matches products in subcategories of the specified category
FALSE: The Category rule matches only products in the exact category
Only applies to Category rules.
Rule: Mode
Description | Example Value |
Include or exclude |
|
Include: The rule adds matching products to the source. This is the default when the value is blank.
Exclude: The rule removes matching products from the source, even if they match the include rules.
Exclude rules support the Tag, Type, Vendor, Category, and Collection columns. Hand-picked products can also be excluded by setting Rule: Mode to Exclude on a Product: ID / Product: Handle row.
Product: ID
Description | Example Value |
Product identifier |
|
The unique identifier of a hand-picked product in this source. Hand-picked products can be combined with rules in the same source.
Product: Handle
Description | Example Value |
Product URL handle |
|
The URL handle of a hand-picked product in this source. Used as an alternative way to identify products when Product ID is not available.
Product: Variant ID
Description | Example Value |
Variant identifier |
|
Hand-picks an individual product variant instead of the whole product. The owning product is found automatically, so Product: ID / Product: Handle can be left blank. Variant selections are only supported on the include side, and the source is imported as a Variants source.
Product: Variant SKU
Description | Example Value |
Variant SKU |
|
Hand-picks an individual product variant by its SKU, as an alternative to Product: Variant ID. The variant and its owning product are looked up by SKU.
Product: Position
Description | Example Value |
Display order in collection |
|
The position of a hand-picked product in the collection. Only applies when Sort Order is set to Manual - positions on collections with any other sort order are skipped.
Positions are relative sort weights rather than literal slots: positioned products are sorted by their values and moved to the front of the collection in that order. The position applies to the collection as a whole (Shopify keeps one manual order across all sources). On export, positions are filled in from the collection's current product order for the hand-picked rows.
Multiple Sources Example
Each source's rows are grouped by the Source column. Source-level values (Source Target, Must Match) only need to be set on the source's first row, and collection-level fields (Title, Command, etc.) only on the collection's first row.
For example, one collection with three sources - tag rules with an exclusion, hand-picked products, and the contents of another collection:
Handle | Title | Command | Source | Source Target | Must Match | Rule: Product Column | Rule: Relation | Rule: Condition | Rule: Mode | Product: Handle |
summer-sale | Summer Sale | MERGE | promo | Products | any condition | Tag | Equals | summer | Include | |
summer-sale | promo | Tag | Equals | clearance | Include | |||||
summer-sale | promo | Vendor | Equals | Acme | Exclude | |||||
summer-sale | editor-picks | Products | blue-shirt | |||||||
summer-sale | editor-picks | red-hat | ||||||||
summer-sale | from-shoes | Sub Collection | mens-shoes |
Sub-Collection Limitations
Sub-collections can only be nested one level deep - this is a Shopify limitation:
A collection that pulls its products from other collections cannot itself be referenced as a sub-collection.
A collection cannot reference itself as a sub-collection.
Rows in a Sub Collection source can only reference collections; rule and Product: columns are not allowed in that source.
Metafields and SEO
Metafields can be imported and exported with collections to store custom metadata, SEO information, and additional attributes.
For detailed information about working with metafields, see our Metafields guide.
SEO fields are special metafields:
SEO Title:
Metafield: title_tagSEO Description:
Metafield: description_tag
If no SEO title or description is provided, Shopify automatically generates them from the collection's title and description.
Sales Channels
Control publication status across individual sales channels by creating separate columns for each channel. This works similarly to Products, where you create one column per sales channel.
Use column names in the format Published: [Sales Channel Name] for example:
Published: Online StorePublished: POSPublished: Shop(for the Shop app)Published: FacebookPublished: Buy Button
Published
Description | Example Value |
Publication status for specific channel |
|
Control whether the collection is published on a specific sales channel.
TRUE: Collection is published and visible on the specified sales channel
FALSE: Collection is unpublished and hidden from the specified sales channel
Blank: No change to current publication status (skipped during import)
When importing, each sales channel can be controlled independently. If a column value is blank, that sales channel's publication status will remain unchanged during the import process.
This field has priority over the legacy "Published" and "Published Scope" fields. If you include both sets of fields, the sales channel columns will be used.
Export Filters
You can use these filters to limit which collections are exported:
handle: Filter by collection handleid: Filter by collection IDproduct_count: Filter by number of products in the collection (equals, not equals, greater than, less than)product_id: Filter collections containing specific productspublishable_status: Filter by status (published/unpublished)published_at: Filter by publish datetitle: Filter by collection titletype: Filter by the collection's type, matching the Collection Type column - Smart collections (rule-based), Manual collections (hand-picked), or Mixed (new-style) (collections using the newer features)updated_at: Filter by last update date
