This tutorial assumes you already know how One-Way Import works and how to configure it. If not, please review the How to Import Data from Google Sheets into Shopify tutorial first.
One-Way Import reads a spreadsheet you already have and writes it into Shopify. Your columns can be named anything - Product Name, SUPPLIER_TITLE, descripcion - because in the Format Data step you map each of your columns to the Shopify field it means. This guide is a reference for the product-level fields you can map to, and the format each one expects in the cell.
Product-level fields describe the product as a whole: its title, description, vendor, tags, status, and SEO. For fields that differ per variant - price, SKU, barcode, weight - see Importing Product Variant Fields from Google Sheets. For images, see Importing Product Images from Google Sheets.
Info. Only the columns you map are touched. Any column you leave unmapped or explicitly set to Ignore Column is neither read nor written, so notes, formulas, and internal working columns in your sheet stay exactly as they are. A mapped column that is blank on a given row is also skipped for that row - One-Way Import never clears a value in Shopify by leaving a cell empty.
1. How a row is matched to a product
Before any field is written, eCommix has to decide which product a row refers to - and whether that product already exists. It works through your mapped identifier columns in this order:
- Id (Product) - An exact match. Accepts either a bare numeric ID (
8471234567890) or a full global ID (gid://shopify/Product/8471234567890). - SKU (Variant) or Barcode (Variant) - Looks up the variant, and takes its parent product.
- Handle (Product) - Looks up the product by handle. A handle is exact, so this is the most reliable identifier after the ID.
- Title (Product) - Last resort. Titles are not unique in Shopify, so this is a guess; see the warning below.
If one of those resolves to an existing product, the row updates it. If none of them do, and the row has a Handle (Product) or Title (Product), the row creates a new product. If a row has none of these identifiers at all, it is skipped with SKIPPED: Missing product or variant identifier in the STATUS column.
Warning. Matching on Title (Product) alone is risky in a store with near-identical titles. eCommix guards against the worst case: if a title matches a product whose options do not include the option names your row uses, the row fails with a message telling you to add a Handle (Product) or Id (Product) column rather than silently updating the wrong product. Map a handle or ID whenever you can.
2. Identifier fields
| Field | Format | Example |
|---|---|---|
| Id (Product) | Numeric ID or full gid:// global ID | 8471234567890 |
| Handle (Product) | URL-friendly slug: lowercase, words joined by hyphens. Must be unique in your store when creating. | merino-wool-beanie |
| Title (Product) | Plain text | Merino Wool Beanie |
When you are creating products, Handle (Product) is worth mapping even if your source sheet does not have one: it gives every row a stable, exact identifier, so re-running the same import updates the products it created the first time instead of creating duplicates.
3. Descriptive fields
| Field | Format | Example |
|---|---|---|
| Body HTML (Product) | The product description. HTML is accepted and rendered as-is; plain text also works. | <p>Soft, itch-free merino.</p> |
| Vendor (Product) | Plain text | Northwind Knitwear |
| Type (Product) | Plain text - your own free-form product type | Hat |
| Category (Product) | A Shopify taxonomy category. Accepts the category name or a full gid://shopify/TaxonomyCategory/... ID. | Hats |
| Tags (Product) | Comma-separated list. Spaces around commas are trimmed. | winter, wool, gift |
| Collections (Product) | Comma-separated list of collection handles (not titles). | winter-2026, gifts-under-50 |
Info. Category (Product) is resolved against Shopify's product taxonomy. If the name you provide does not match a taxonomy category, the category is simply left unset rather than failing the row - so check the result in Shopify if you are relying on it.
Collections (Product) adds the product to the collections you list. It does not remove the product from collections you leave out, and it only accepts handles -
winter-2026, notWinter 2026.
4. Status, visibility, and SEO
| Field | Format | Example |
|---|---|---|
| Status (Product) | One of ACTIVE, DRAFT, or ARCHIVED | ACTIVE |
| Gift Card (Product) | Boolean - TRUE, YES, or 1 for true; anything else is false. Only applies when creating a product. | FALSE |
| Template Suffix (Product) | The theme template suffix, without the product. prefix | wholesale |
| SEO Title (Product) | Plain text | Merino Wool Beanie | Northwind |
| SEO Description (Product) | Plain text | Itch-free merino beanie, made in New Zealand. |
Boolean columns are forgiving about case, so true, True, and TRUE all work. Because anything unrecognised counts as false, prefer writing TRUE/FALSE explicitly rather than leaving a cell blank when you mean false - a blank cell is skipped entirely, which is not the same as setting the value to false.
5. Option names
Option names are product-level even though option values are per-variant, so they live in the product columns:
- Option 1 Name (Product), Option 2 Name (Product), Option 3 Name (Product) - e.g. Color, Size, Material.
To create a product, eCommix requires Option 1 Name (Product) together with Option 1 Value (Variant). A product with no real options should use Shopify's convention: option name Title with value Default Title.
You only need to fill the option name on the first row of each product. eCommix carries option names down to the rest of the rows in the same product group automatically, matching the Shopify CSV convention - so a supplier sheet that only names the option once still imports correctly. A name you do write on a later row is never overwritten.
6. Rows that share a product
Rows are grouped into products by Handle (Product), then Title (Product), then Id (Product) - so every row carrying the same handle is understood as one product with several variants.
Within a group, product-level fields are applied only from the first row. If you fill in Vendor (Product) or Tags (Product) on the second and third rows of the same product, those values are ignored - the product is written once, from the first row that resolves it. This is what you want in practice: it means a supplier sheet that repeats the vendor on every variant row does not fire three redundant updates at Shopify.
The practical rule for laying out your sheet:
- Repeat the Handle (Product) on every row of the group.
- Fill product-level fields - Title, Vendor, Tags, Status, SEO, option names - on the first row of the group.
- Fill variant-level fields - option values, SKU, price - on every row.
7. Metafields and other dynamic columns
Beyond the built-in product fields, you can map columns to product metafields, sales channel publication, and region catalog visibility. These appear in the field picker alongside the standard fields, grouped by resource, and are written after the product itself is saved.
Like the other product-level fields, these are applied from the first row of each product group only.
8. Validate before importing
Always run Validate first. It reads your sheet and checks every row against Shopify without writing anything to your store, then reports the outcome per row in the STATUS column. After a real import, the same column shows what happened:
PRODUCT CREATED- a new product was created.PRODUCT UPDATED- an existing product was matched and updated.PRODUCT/VARIANT CREATEDorPRODUCT/VARIANT UPDATED- both levels were written from that row.... WITH WARNINGS: ...- the row was written, but something needs your attention; the warning text follows the colon.SKIPPED: Missing product or variant identifier...- no identifier column was filled on that row.
FAQ
Do my spreadsheet column names have to match Shopify's field names?
No. One-Way Import works from your own header row - you map each of your columns to a Shopify field in the Format Data step. The field names in this guide are the Shopify-side targets you map to, not names your sheet has to use. If your headers happen to be close, Map automatically will match most of them for you in one click.
What happens if I leave a mapped cell blank?
Nothing is written for that field on that row. One-Way Import treats a blank cell as "no value supplied", not as "clear this value" - so an empty cell can never wipe data in your store. To clear a field, edit it in the Shopify admin.
Can I create products and update products in the same sheet?
Yes. eCommix decides per row: if the row's identifiers match an existing product it updates it, and if they do not, it creates a new one. A mixed sheet of new and existing products imports in a single run, and the STATUS column tells you which rows did what.
Why were my Vendor and Tags ignored on some rows?
Because those rows are continuation rows of a product that was already written. Product-level fields are applied only from the first row of each product group, so fill them on the first row of the group and leave them blank - or leave them repeated but unused - on the rest.
How do I set product options for a product with no variants?
Use Shopify's default convention: Option 1 Name (Product) set to Title and Option 1 Value (Variant) set to Default Title. Both are required to create a product, even one that has only a single variant.
