From ecom
Guides bulk data operations via the Matrixify app: import/export products, variants, metafields, collections, customers, menus in CSV/Excel. Covers MERGE vs REPLACE, blank cell pitfalls, and undo strategies.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ecom:shopify-matrixifyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The bulk-data workhorse of the catalog-cleanup suite. Matrixify moves store data
The bulk-data workhorse of the catalog-cleanup suite. Matrixify moves store data in and out as spreadsheets, so it is how you touch thousands of records at once instead of one at a time in the admin. Almost every destructive mistake here comes from one of two misunderstandings: what a blank cell means, and what omitting a row means. Internalize the safety doctrine below before you touch a production catalog.
Canonical docs: matrixify.app/documentation. This skill is the operational playbook the docs don't spell out.
Matrixify runs inside the store, not through the Admin API. You do the work in two places:
No token lives in this skill. To verify a write landed, re-export the affected records and inspect the cells, or read them back through the Admin API: the storefront is CDN-cached and lies about freshness.
Read this section twice. Every rule here was learned by someone breaking a live store.
Metafield: custom.care [multi_line_text_field] column and a product's cell
is empty, the import writes empty, wiping the existing metafield. Same for
any field: blank Body HTML clears the description, blank Vendor errors out.
Only include columns you intend to change. The fix is column omission,
not blank cells. Absent column = untouched; present-but-blank column =
deleted.Command to MERGE
does not by itself govern tags, images, or variants. Those have their own
command columns (Tags Command, Image Command, Variant Command), each of
which defaults to MERGE when absent (per the
matrixify.app docs).
MERGE is the safe default, but state it anyway: always pair a Tags column
with an explicit Tags Command so the intent (add vs. REPLACE the exact list
vs. DELETE listed) is unambiguous on the sheet rather than relying on the
default.Matrixify decides which rows belong to the same record by matching, in priority order: ID (Shopify numeric), then Handle if ID is blank, then Title if both are blank. Prefer ID or Handle; Title matching is fragile.
Rows for one record must be adjacent. When the ID/Handle/Title in a row
differs from the row above, Matrixify treats it as a new record. A multi-variant
product with its variant rows scattered across the file gets split into broken
fragments. Always sort the file by Handle (or ID) so every record's rows sit
together. A row is treated as a variant row when any Variant … or Option …
column is filled; a row is treated as an image row when Image Src is filled.
Set per row in the Command column.
| Command | Behavior |
|---|---|
| (empty) | MERGE (except Orders/Draft Orders → NEW) |
| NEW | Create; fails if the ID/Handle already exists |
| MERGE | Update if present, create if not. Safe default. |
| UPDATE | Update existing only; fails if not found |
| REPLACE | Delete and recreate from file data only. Destructive. |
| DELETE | Delete the record; fails if not found |
| IGNORE | Skip the row entirely (keep context rows in your sheet) |
Nested data has its own command columns, same verbs, scoped to the nested set:
When you write a CSV in code instead of editing Excel by hand:
Command to MERGE; pair any Tags column with an explicit
Tags Command.products-update.csv,
redirects.csv. A file named data.csv may not be recognized as Products.Metafield: namespace.key [type]; set the
metafield definition in Settings → Custom Data before importing, or the
values land "without definition."Add a tag to products without wiping existing tags (note: no other product columns, so nothing else is touched):
"Handle","Tags","Tags Command"
"summer-hat","clearance","MERGE"
"winter-hat","clearance","MERGE"
Set one product metafield across many rows (definition must already exist):
"Handle","Metafield: custom.care_instructions [multi_line_text_field]"
"linen-shirt","Machine wash cold. Line dry."
"wool-scarf","Hand wash only. Lay flat to dry."
Bulk 301 redirects after a URL restructure (one entity, two columns):
"Path","Target"
"/collections/old-name","/collections/new-name"
"/products/discontinued-item","/collections/replacements"
Last verified: 2026-07-05. The Matrixify sheet format is app-versioned: the vendor adds columns and adjusts behavior across releases, so treat any specific column name or default here as needing confirmation against the current matrixify.app documentation before you rely on it. Read-only re-verification a stranger can run:
This skill captures operational lessons the vendor docs don't stress; it is not a replacement for them.
npx claudepluginhub kgelster/awesome-ecom-skills --plugin ecomCreates and manages Shopify products via GraphQL Admin API or CSV imports. Bulk import/update variants, inventory, images, assign to collections.
Migrate e-commerce data to Shopify using bulk operations, product imports, and strangler fig pattern. Use for replatforming, importing product catalogs, or migrating customer/order data.
Transforms product data from CSV, Excel, Shopify into Saleor config.yml via format detection, interactive column mapping, transformation, and validation for bulk imports.