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:
- It must be a direct link to the image file - one that ends in
.jpg,.png,.webp, and so on. - It must not require a login, a session cookie, or an IP allowlist.
- A Google Drive or Dropbox sharing page URL will not work, because it serves an HTML preview page rather than the image file. Use a direct-file link, or host the images somewhere that serves them plainly.
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
| Field | Format | Example |
|---|---|---|
| Src (Image) | A public image URL. Accepts several URLs separated by commas. | https://cdn.example.com/beanie-front.jpg |
| Src (Image) 1 … Src (Image) 5 | Additional public image URLs, one per column | https://cdn.example.com/beanie-side.jpg |
| Alt Text (Image) | Plain text - accessibility description | Charcoal merino beanie, front view |
| Id (Image) | Numeric media ID or full gid://shopify/MediaImage/... global ID | 33850994262190 |
| Image Src (Variant) | A public image URL for a single variant's featured image | https://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-beanie | https://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) 1 | Src (Image) 2 |
|---|---|---|---|
| merino-wool-beanie | https://cdn.example.com/front.jpg | https://cdn.example.com/side.jpg | https://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-beanie | Charcoal | https://cdn.example.com/front.jpg |
| merino-wool-beanie | Navy | https://cdn.example.com/navy.jpg ← ignored |
| merino-wool-beanie | Rust | https://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-beanie | Charcoal | https://cdn.example.com/charcoal.jpg |
| merino-wool-beanie | Navy | https://cdn.example.com/navy.jpg |
| merino-wool-beanie | Rust | https://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:
Image <url>: ...- Shopify could not fetch or process that URL. Check that it is a direct, public link to an image file.No product ID for product image update- the row's identifiers did not resolve to a product, so there was nothing to attach the image to.No product or variant ID for variant image update- same, for a variant image row.blank Src (Image) ignored- the row has an image ID but an empty source; nothing was changed.
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.
Why does my Google Drive image link not work?
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.