Importing Product Images from Google Sheets - eCommix
TutorialOne-Way Import

Importing Product Images from Google Sheets

Learn how to import Shopify product and variant images from your own Google Sheets spreadsheet, including multiple images per product.

Hernán Demczuk
Hernán Demczuk
Author
8 min read

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, so your columns can be named anything - in the Format Data step you map each of your columns to the Shopify field it means. This guide covers the image fields you can map to, how to attach several images to one product, and how variant images differ from product images.

For the other field groups, see Importing Product Fields from Google Sheets and Importing Product Variant Fields from Google Sheets.

1. Images come from public URLs

eCommix does not upload image files from your computer. Every image column holds a publicly accessible URL, and Shopify fetches the file from that URL itself.

That means the URL has to be reachable by Shopify's servers, not just by you in your browser:

Because Shopify does the fetching, a broken or unreachable URL surfaces as a warning on the row rather than as a spreadsheet error - the rest of the row still imports.

2. The image fields

FieldFormatExample
Src (Image)A public image URL. Accepts several URLs separated by commas.https://cdn.example.com/beanie-front.jpg
Src (Image) 1Src (Image) 5Additional public image URLs, one per columnhttps://cdn.example.com/beanie-side.jpg
Alt Text (Image)Plain text - accessibility descriptionCharcoal merino beanie, front view
Id (Image)Numeric media ID or full gid://shopify/MediaImage/... global ID33850994262190
Image Src (Variant)A public image URL for a single variant's featured imagehttps://cdn.example.com/beanie-charcoal.jpg

3. Adding several images to one product

There are two ways to give a product multiple images, and you can combine them.

Comma-separated URLs in one column

Put several URLs in a single Src (Image) cell, separated by commas. Spaces around the commas are trimmed:

Handle (Product)Src (Image)
merino-wool-beaniehttps://cdn.example.com/front.jpg, https://cdn.example.com/side.jpg, https://cdn.example.com/worn.jpg

Numbered image columns

If your source sheet already has one image per column - which supplier exports very often do - map them to Src (Image) 1 through Src (Image) 5:

Handle (Product)Src (Image)Src (Image) 1Src (Image) 2
merino-wool-beaniehttps://cdn.example.com/front.jpghttps://cdn.example.com/side.jpghttps://cdn.example.com/worn.jpg

Images are added in the order they are read: Src (Image) first - including everything after its commas - then Src (Image) 1 through 5. The order you lay the columns out in your sheet is the order the images end up in on the product, so put your main image first.

Duplicate URLs are removed automatically. If the same URL appears in Src (Image) and again in Src (Image) 3, the image is added once.

Info. Alt Text (Image) applies to the first image created from the row. When a row adds several images at once, the remaining images are created without alt text, which you can then fill in from the Shopify admin.

4. Product images are applied once per product

Rows are grouped into products by Handle (Product), then Title (Product), then Id (Product). Product images - like other product-level data - are applied only from the first row of each group.

This matters for multi-variant sheets. In a layout like this, only the first row's images are imported:

Handle (Product)Option 1 Value (Variant)Src (Image)
merino-wool-beanieCharcoalhttps://cdn.example.com/front.jpg
merino-wool-beanieNavyhttps://cdn.example.com/navy.jpg ← ignored
merino-wool-beanieRusthttps://cdn.example.com/rust.jpg ← ignored

The behaviour is deliberate: it stops a supplier sheet that repeats the same gallery on every variant row from adding the same three images nine times. But if what you actually wanted was a different image per variant, that is a variant image, not a product image - map Image Src (Variant) instead.

5. Variant images

Map Image Src (Variant) to set a single variant's featured image. Unlike product images, this is applied on every row, so each variant row can carry its own image:

Handle (Product)Option 1 Value (Variant)Image Src (Variant)
merino-wool-beanieCharcoalhttps://cdn.example.com/charcoal.jpg
merino-wool-beanieNavyhttps://cdn.example.com/navy.jpg
merino-wool-beanieRusthttps://cdn.example.com/rust.jpg

The image is added to the product's media and set as that variant's featured image, so it is what shoppers see when they pick that option on the storefront. Setting a variant image replaces whatever featured image that variant had before.

A variant image needs both the product and the variant to resolve. If the row could not identify one of them, you will see a No product or variant ID for variant image update warning.

6. Updating an existing image

To change an image already in Shopify rather than add a new one, map Id (Image) and fill it with that image's media ID. The row then updates that image - its source, its alt text, or both - instead of creating another one.

The ID column accepts either a bare numeric ID or a full gid://shopify/MediaImage/... global ID, so IDs copied from a legacy export or typed by hand both work.

Info. When a row has an Id (Image), that is what the row acts on - the numbered Src (Image) 1-5 columns are not used to create extra images on that same row. Use ID-bearing rows to update specific images, and ID-free rows to add new ones.

7. One-Way Import never deletes images

If you map Src (Image) and leave it blank on a row that has an Id (Image), nothing is deleted. The row reports a warning - blank Src (Image) ignored. One-way import never deletes images - and moves on.

This is a safety property, not a limitation to work around: an accidentally cleared column, a formula returning empty, or a shifted row can no longer wipe a product's gallery. To remove an image, delete it in the Shopify admin.

8. Position

Position (Image) is available in the field picker for image ordering. In practice, the reliable way to control image order in One-Way Import is the order your source columns are read: Src (Image) and its comma-separated URLs first, then Src (Image) 1 through 5. Put the image you want as the product's main image first.

9. Validate before importing

Run Validate first, then check the STATUS column in your sheet. Image problems almost always surface as warnings appended to an otherwise successful row, in the form PRODUCT UPDATED WITH WARNINGS: Image https://...: <reason>.

Common warnings and what they mean:

FAQ

Can I upload image files from my computer?

No. Shopify fetches each image from the URL in your sheet, so the files need to be hosted somewhere publicly reachable first - your own CDN, a supplier's image server, or any host that serves the file directly.

A Drive sharing link opens an HTML preview page rather than serving the image file, so Shopify has nothing to fetch. Use a direct-file URL, or host the images somewhere that returns the image itself.

How do I add more than six images to a product?

Use commas. The Src (Image) column accepts any number of comma-separated URLs, and you can still use Src (Image) 1-5 on top of that - so a single row can carry as many images as you need.

Why were images on my second and third variant rows ignored?

Product images are applied only from the first row of each product group, so repeating a gallery on every variant row does not add it repeatedly. If you want a different image per variant, map Image Src (Variant) instead - that field is applied on every row.

How do I remove an image from a product?

From the Shopify admin. One-Way Import never deletes images: a blank source cell is ignored rather than treated as a deletion, so an empty column cannot wipe your product galleries.

Can I set alt text for every image on a row?

Alt text applies to the first image created from that row. When one row adds several images, the rest are created without alt text - add it in the Shopify admin, or split the images across rows if alt text on each one matters to you.

Related articles

More guides in this category if you want to keep going deeper on the same workflow.

Ready to manage your Shopify store with Google Sheets?

Install eCommix free and start syncing your products, orders, and inventory in minutes.

Install Free on Shopify →