ShopifyImage namingCatalog operations

How to Organize Shopify Product Images by SKU

A practical naming system for Shopify product photos that uses SKUs without creating duplicate filenames or losing product and variant context.

By PlainKits Editorial Team

September 3, 2026

Updated September 3, 2026

PlainKits presets and custom file organization settings for a Shopify image export

SKU-based image names make ecommerce assets easier to match with inventory, marketplace listings, POS systems, and product spreadsheets. But using only the SKU is rarely enough. A product can have several images, some products have no SKU, and merchants sometimes reuse or change SKU values.

A reliable Shopify image naming system needs three things:

  1. A human- or system-readable product identifier.
  2. A stable suffix that prevents duplicate paths.
  3. A manifest that preserves the relationship between the exported file and the Shopify record.

For a flat marketplace or POS handoff, use:

{sku-or-product-handle}-{product-id}-{image-position}.{extension}

Example:

CTB-BLK-1026333752618-01.jpg
CTB-BLK-1026333752618-02.jpg
CTB-NAT-1026333752618-03.jpg

For a designer or internal asset library, use product folders as well:

{product-title}/
  {sku-or-product-handle}-{product-id}-{image-position}.{extension}

That produces a package such as:

summer-catalog.zip
├── canvas-tote-bag/
│   ├── CTB-BLK-1026333752618-01.jpg
│   ├── CTB-BLK-1026333752618-02.jpg
│   └── CTB-NAT-1026333752618-03.jpg
├── linen-shirt/
│   └── LS-NAVY-M-1026333811546-01.webp
└── manifest.csv

Keep the source extension. Renaming a .webp file to .jpg does not convert the file and can cause confusing failures in downstream tools.

Why SKU alone is not a safe filename

One SKU can have multiple product images

A variant may have a front view, detail view, lifestyle shot, packaging image, and size diagram. Saving all of them as CTB-BLK.jpg creates collisions. An image position or another stable unique suffix distinguishes the files.

Some Shopify products have an empty SKU

SKU is optional catalog data. A naming workflow should fall back to a product handle or another product identifier instead of creating blank or generic filenames.

SKUs can change

Teams may update SKUs during an ERP migration, inventory cleanup, or supplier change. If the SKU is the only identifier, an older archive becomes harder to reconcile. Including the Shopify product ID and a manifest preserves a stable reference.

A product image is not always variant-specific

Shopify product media can belong to the product generally, while a variant may reference a particular image. Do not infer that every product image belongs exclusively to the SKU used in its filename. The accompanying manifest should record the relationship captured at export time.

Build the naming convention around the next task

There is no universal best filename. Pick the smallest convention that makes the next workflow reliable.

WorkflowFolder structureSuggested filenameWhy
Marketplace or POS prepFlatSKU + stable suffixEasy matching in bulk tools
Designer handoffProduct titleOriginal name + stable suffixPreserves creative context
Bulk editingProduct titleProduct title + image indexEasy human review
Store image snapshotProduct titleOriginal name + stable suffixKeeps a recognizable archive
Social asset selectionFlatProduct handle + stable suffixReadable without deep folders

Marketplace and POS preparation still requires the destination's current image specifications and import rules. File naming alone does not resize, crop, validate, upload, or publish an image.

How PlainKits creates SKU-based image names

PlainKits Image Export includes a Marketplace / POS preset that creates a flat ZIP with SKU-based names. You can also choose a custom combination of folder structure and naming rule.

PlainKits purpose presets and file organization controls

The available filename inputs include:

  • Original filename
  • SKU
  • Barcode
  • Product title
  • Product handle
  • Shopify product ID
  • Variant title
  • Product title plus SKU
  • Vendor plus SKU
  • Collection
  • Creation date

The app normalizes unsafe path characters and adds the product ID and image position. If a SKU is blank, the product handle is used as the readable fallback. This prevents two downloaded images from silently overwriting each other.

To see the complete filtering and ZIP workflow, read How to export Shopify product images in bulk.

Keep manifest.csv as the source of truth

A readable filename helps humans, but it cannot safely contain every useful catalog field. PlainKits writes a manifest.csv row for each requested image with fields including:

  • Product ID, handle, title, status, type, and vendor
  • Variant ID, title, SKU, and barcode when available
  • Image ID, position, alt text, and collections
  • Original source URL
  • Exported filename
  • Download status

A simplified example:

product_handlevariant_skuimage_positionexported_filenamedownload_status
canvas-toteCTB-BLK1CTB-BLK-1026333752618-01.jpgsuccess
canvas-toteCTB-BLK2CTB-BLK-1026333752618-02.jpgsuccess
linen-shirtLS-NAVY-M1LS-NAVY-M-1026333811546-01.webpsuccess

If an image cannot be downloaded, it remains listed with a failed status while successfully processed files stay in the ZIP. That makes the handoff auditable instead of hiding missing files.

PlainKits ZIP folders with a traceable manifest

SKU image-naming checklist

  • Use a fallback for products or variants without an SKU.
  • Add image position or another unique suffix.
  • Preserve the real file extension.
  • Normalize slashes, spaces, and characters that are unsafe in file paths.
  • Keep the product ID somewhere in the filename or manifest.
  • Record failures rather than silently omitting them.
  • Treat the manifest as part of the delivery, not as an optional extra.
  • Test the pattern with several multi-image and multi-variant products before exporting the full catalog.

The result should be predictable for software, readable enough for people, and traceable back to Shopify after the files leave the store.

Related guides