How to Create, Update, and Delete Shopify Products, Variants, and Images from a Spreadsheet

How to Create, Update, and Delete Shopify Products, Variants, and Images from a Spreadsheet

eCommix – Google Sheets Sync lets you manage Shopify catalog changes in Google Sheets instead of editing products one by one in the admin. The key is using the right columns for each operation and understanding how the importer detects create, update, and delete.

This guide focuses on the minimum fields you need for products, variants, and images, plus row examples you can copy into your workflow.

Real use case: One spreadsheet for catalog onboarding and ongoing maintenance

A merchant imports a new supplier catalog, adds missing variants, fixes pricing on existing SKUs, and removes stale images, all from the same spreadsheet workflow. Instead of switching between different Shopify admin screens, the operations team exports current data, edits only the required rows, validates, and imports.

  • New products are created from rows with new handles and titles
  • Existing variants are updated using exported product and variant IDs
  • Old images are removed by blanking the image source field on exported rows

Use eCommix – Google Sheets Sync to export Shopify products to Google Sheets, bulk edit safely, validate changes, and import updates back to Shopify.

Learn more on ecommix.io

Install eCommix – Google Sheets Sync on Shopify

Before you start

  • Use the Product Fields, Variant Fields, or Product Images preset depending on what you are changing
  • For updates and deletes, export first so you have the Shopify IDs in your sheet
  • Run Validate before Import
  • Keep product, variant, and image deletes in small reviewed batches

[SCREENSHOT PLACEHOLDER]
sheet with Product Fields, Variant Fields, and Product Images presets highlighted

Products: required fields and examples

Product-level operations use columns such as Handle (Product), Id (Product), Title (Product), Vendor (Product), Status (Product), and other product fields.

Operation Required fields Why these fields matter
Create product Handle (Product), Title (Product) A new row with a handle and no product ID is treated as a new product. Add any other product fields you want to set on create.
Update product Id (Product) plus the product field(s) you want to change The importer uses the product ID to safely target the existing Shopify product.
Delete product Id (Product), blank Title (Product), and at least one other populated product column such as Status (Product) or Vendor (Product) Product delete is triggered by an exported row where title is cleared but the row still clearly contains product data.

Example: create product

Handle (Product) Title (Product) Vendor (Product) Status (Product)
linen-shirt Linen Shirt Northwind ACTIVE

Example: update product

Handle (Product) Id (Product) Title (Product) Vendor (Product)
linen-shirt gid://shopify/Product/1001 Linen Shirt Northwind Apparel

Example: delete product

Handle (Product) Id (Product) Title (Product) Status (Product)
linen-shirt gid://shopify/Product/1001 ACTIVE

Important: deleting a product removes the product and all its variants. Use this only when you really want the whole product gone.

Variants: required fields and examples

Variant operations rely on product-level context plus variant identifiers or option values. Common columns include Id (Product), Id (Variant), Option 1 Name (Product), Option 1 Value (Variant), SKU (Variant), and Price (Variant).

Operation Required fields Why these fields matter
Create variant for existing product Id (Product), variant option value column such as Option 1 Value (Variant), and the variant field(s) you want to set The importer needs the existing product ID to attach the new variant to the right product.
Create new product with variants Handle (Product), Title (Product), Option 1 Name (Product), and variant option value columns on the grouped rows This creates the product and its variants together in one grouped import.
Update variant Id (Product), Id (Variant), plus the variant field(s) you want to change The product ID and variant ID together make the update unambiguous.
Delete variant Id (Product), Id (Variant), and blank option value columns such as Option 1 Value (Variant) Variant delete is detected when an existing variant row keeps its IDs but its option values are cleared.

Example: create variant for an existing product

Handle (Product) Id (Product) Option 1 Name (Product) Option 1 Value (Variant) SKU (Variant) Price (Variant)
linen-shirt gid://shopify/Product/1001 Size XL LINEN-XL 69.00

Example: create a new product with two variants

Handle (Product) Title (Product) Option 1 Name (Product) Option 1 Value (Variant) SKU (Variant) Price (Variant)
ribbed-tank Ribbed Tank Size S TANK-S 34.00
ribbed-tank Size M TANK-M 34.00

Example: update variant

Handle (Product) Id (Product) Id (Variant) Option 1 Value (Variant) Price (Variant)
linen-shirt gid://shopify/Product/1001 gid://shopify/ProductVariant/2001 M 59.00

Example: delete variant

Handle (Product) Id (Product) Id (Variant) Option 1 Name (Product) Option 1 Value (Variant)
linen-shirt gid://shopify/Product/1001 gid://shopify/ProductVariant/2001 Size

Important: the variant delete pattern is based on exported rows. Keep the IDs, then clear the option value columns that identify the variant row.

[SCREENSHOT PLACEHOLDER]
variant rows showing create, update, and delete patterns in one grouped product section

Images: required fields and examples

Image operations usually use Id (Product), Id (Image), Src (Image), Position (Image), and Alt Text (Image).

Operation Required fields Why these fields matter
Create image for existing product Id (Product) and Src (Image) The product ID tells Shopify which product gets the new image, and the source URL is the image to import.
Create image for a new product Product create fields on the group plus Src (Image) The image can be created in the same grouped import as the new product.
Update image Id (Product), Id (Image), plus the image field(s) you want to change The importer needs both IDs to safely update an existing image record.
Delete image Id (Product), Id (Image), and blank Src (Image) Image delete is triggered when the image source is cleared on an exported image row.

Example: create image for an existing product

Handle (Product) Id (Product) Src (Image) Position (Image) Alt Text (Image)
linen-shirt gid://shopify/Product/1001 https://cdn.example.com/linen-shirt-front.jpg 1 Linen Shirt front view

Example: update image alt text

Handle (Product) Id (Product) Id (Image) Src (Image) Alt Text (Image)
linen-shirt gid://shopify/Product/1001 gid://shopify/ProductImage/3001 https://cdn.example.com/linen-shirt-front.jpg Linen Shirt front view on white background

Example: delete image

Handle (Product) Id (Product) Id (Image) Src (Image)
linen-shirt gid://shopify/Product/1001 gid://shopify/ProductImage/3001

If your source data puts multiple image URLs into one cell, you can also use a semicolon-separated image workflow, but the safest update and delete flows still start from an export so the image IDs are already present.

Quick reference: what usually requires an export first

Workflow Export first? Reason
Create new product No You can create from new rows with no Shopify IDs yet.
Create variant on existing product Recommended You need Id (Product) to attach the variant safely.
Create image on existing product Recommended You need Id (Product) to attach the image safely.
Update product Yes You need Id (Product).
Update variant Yes You need Id (Product) and Id (Variant).
Update image Yes You need Id (Product) and Id (Image).
Delete product Yes You need Id (Product) and an exported row structure.
Delete variant Yes You need Id (Product), Id (Variant), and the variant row already laid out.
Delete image Yes You need Id (Product) and Id (Image).

Recommended workflow in eCommix – Google Sheets Sync

  1. Export the relevant catalog data.
  2. Choose the preset that matches the scope: Product Fields, Variant Fields, or Product Images.
  3. Edit only the rows and columns you intend to change.
  4. Run Validate and read the STATUS column.
  5. Import only after the intended create, update, or delete messages look correct.

Common mistakes to avoid

  • Updating existing products without exporting first to get IDs
  • Trying to create a variant on an existing product without Id (Product)
  • Trying to update or delete images without Id (Image)
  • Blanking Title (Product) by accident on a product delete-capable row
  • Running deletes in large batches without review

Final tip

If you want the safest spreadsheet workflow, think of it this way: new rows create, exported IDs update, and blanking the delete trigger field on exported rows deletes. That mental model will help your team avoid most import mistakes.

Related Shopify Spreadsheet Guides

Continue with these related tutorials to build a complete bulk-edit workflow in Shopify:

Install eCommix – Google Sheets Sync

If you want to manage Shopify products, variants, and images from Google Sheets with validation before import, install eCommix – Google Sheets Sync and start with a small test batch first.

Install eCommix – Google Sheets Sync

Scroll to Top