Store content

Shopify Files: Export and Import

Last updated

Use the Files resource to export or import the images, documents, videos, and 3D models managed under Shopify Admin → Content → Files. EditEngine writes one row per file in a Matrixify-shaped CSV or XLSX spreadsheet.

You can use that sheet to audit file status and size, update a file name or alt text, add files from public URLs, replace supported file content, or delete files in bulk.

This guide follows the Matrixify Files sheet format and its bulk URL import tutorial. The spreadsheet is compatible, but the command details below describe EditEngine's current Advanced Import behavior. The most important difference is REPLACE: Matrixify documents delete-and-create behavior, while EditEngine replaces the source of an existing supported file in place.

Before you start

  • Use Advanced import, not Guided import, for a Files spreadsheet.
  • Keep one untouched, access-controlled export. Advanced imports do not have one-click undo.
  • Test one non-critical file before replacing content, renaming files, or importing a large set.
  • Make every HTTP or HTTPS source URL publicly reachable until Shopify finishes processing it.
  • Treat DELETE as permanent. A deleted file can break product media, theme content, metafields, and other references.
  • Do not place FTP or SFTP credentials in a shared spreadsheet. EditEngine can stage those links, but the cell itself contains the credentials.

Export needs Shopify's read_files scope. Import also needs write_files.

Step 1 — Export Files

Open EditEngine → Export, choose Files, and select CSV or Excel format.

Files selected as the EditEngine export resource

The export reads every supported Shopify File subtype through one resource and writes one Files worksheet:

  • IMAGE for Shopify media images
  • FILE for generic documents and other files
  • VIDEO for Shopify-hosted videos
  • MODEL_3D for 3D models

The count shown in the export panel is the store's total Files count. It is not reduced when you add filters; the generated file is filtered.

Step 2 — Choose the round-trip columns

EditEngine selects all 16 Files columns by default.

All Files export columns selected in EditEngine

ColumnRound-trip meaning
IDShopify's store-specific file ID. Keep it for the safest same-store update.
File NameSecondary identity and editable file name. When creating, EditEngine can derive it from Link.
CommandExports as MERGE; controls the import operation.
LinkPublic Shopify CDN URL on export, or a new source URL on import.
Alt TextEditable accessibility and SEO text. Mainly meaningful for visual media.
Created AtExport-only creation timestamp in the store's timezone.
TypeIMAGE, FILE, VIDEO, or MODEL_3D. Helps classify new imports.
Mime TypeExport-only MIME type when Shopify exposes one.
Width, HeightExport-only dimensions for images and videos.
DurationExport-only video duration in HH:MM:SS.
StatusExport-only processing state: Failed, Uploaded, Processing, or Ready.
ErrorsExport-only Shopify processing messages, joined with semicolons when there are several.
Size BytesExport-only original size in bytes.
Size MBExport-only decimal megabytes, rounded to three decimal places.
SizeExport-only human-readable decimal size such as 3.74 KB.

EditEngine always emits ID and File Name, even if they are removed from the visible selection, because they are the update keys. Keep all 16 columns in the untouched recovery copy. In the working copy, you can remove export-only columns that you do not need.

Step 3 — Filter to a safe working set

Use Add filter before exporting a large or risky batch.

The Files export filter panel with File Name selected

Available filter fields include File Name, ID, Created At, Updated At, Type, Size MB, Status, Original Upload Size, Alt Text, Product ID, and Used In.

Useful examples:

  • File Name contains .pdf
  • Type is Image, File, Video, or Model_3D
  • Status is Failed, Uploaded, Processing, or Ready
  • Created At is on or after a known date
  • Size MB is greater than a chosen limit
  • Product ID or Used In matches a known association

Multiple normal filters can match all conditions or any condition. Product ID and Used In association filters require all-condition matching. A free-text filter with no value matches everything, so remove unfinished filters instead of leaving them blank.

Step 4 — Understand file identity

EditEngine identifies a Files row in this order:

  1. ID
  2. exact File Name, matched case-insensitively
  3. the file name derived from Link

A full Shopify file GID is accepted. A numeric ID is also accepted; EditEngine checks the supported File subtypes when Type is not available.

Shopify's file-name search can return partial token matches. EditEngine narrows those results to one exact file name and fails if several exact matches remain. It does not silently choose one.

For a same-store update, keep ID. To rename an existing file, keep its ID and change File Name. If you remove ID and change File Name, EditEngine searches for the new name; under MERGE, a miss can create another file from Link instead of renaming the original.

Rows that repeat the same raw identity are combined only when their ID, File Name, Command, Link, Alt Text, and Type do not conflict. Conflicting duplicates fail. Rows that resolve to the same Shopify file are also rejected rather than touching one file twice in the same import.

Step 5 — Use MERGE for a normal round trip

MERGE is the exported and default command.

For an existing file, EditEngine can update File Name and non-blank Alt Text. An untouched exported Shopify CDN Link pointing back to the same file name is recognized as a round-trip link and is not re-uploaded.

ID,File Name,Command,Link,Alt Text,Type
33351235212327,red-shirt.jpg,MERGE,https://cdn.shopify.com/s/files/.../red-shirt.jpg,Red shirt on a hanger,IMAGE

If you put a different external Link on an existing MERGE or UPDATE row, EditEngine treats it as new content and asks Shopify to update the file source. That is a content replacement, not a harmless reference change.

If no file matches, MERGE creates one. Creation requires Link.

A blank Alt Text cell is a no-op in EditEngine's Files importer; it does not clear existing alt text. Use a tested Shopify-supported workflow if you need to remove alt text completely.

Step 6 — Create Files from URLs

For each new file, supply a direct source URL in Link. File Name and Alt Text are optional.

ID,File Name,Command,Link,Alt Text,Type
,summer-lookbook.pdf,NEW,https://example.com/files/summer-lookbook.pdf,,FILE
,red-shirt.jpg,NEW,https://example.com/images/red-shirt.jpg,Red linen shirt,IMAGE

The URL must point to the actual file rather than a web page that displays it. If File Name is blank, EditEngine derives the name from the URL path.

Type accepts IMAGE, FILE, VIDEO, or MODEL_3D. When Type is blank, EditEngine infers common formats from the file name or URL: JPEG, PNG, GIF, WebP, and SVG as images; MP4, MOV, and WebM as videos; GLB, GLTF, and USDZ as 3D models; and other recognizable extensions as generic files. Shopify still validates the uploaded content and its limits.

After create or content update, EditEngine waits for Shopify to reach a terminal processing result. Large media can remain Uploaded or Processing for a while. A failed processing state and its Shopify file error are reported in the import result.

Step 7 — Choose the right Command

CommandEditEngine behavior
MERGEUpdates a match or creates a file when no match exists. Creation requires Link. Default.
NEWCreates a file and fails if the ID, File Name, or Link-derived name already matches. Requires Link.
UPDATEUpdates an existing file and fails when no match exists. A different external Link requests a content update.
REPLACEReplaces the source of a matched supported file in place, preserving its Shopify ID and associations. Creates when absent. Requires Link.
DELETEDeletes the whole matched file and fails when no match exists.
IGNORESkips the row without changing Shopify.

EditEngine REPLACE differs from Matrixify REPLACE

Matrixify documents its Files REPLACE as deleting and recreating the file. EditEngine deliberately uses Shopify's in-place file update for an existing match. This preserves the existing file ID and associations instead of deleting the record first.

ID,File Name,Command,Link,Alt Text,Type
33351235212327,red-shirt.jpg,REPLACE,https://example.com/replacements/red-shirt.jpg,Updated red shirt,IMAGE

Shopify supports source replacement only for eligible file types and inputs. If Shopify rejects the request synchronously, EditEngine reports the error without first deleting the merchant's file. EditEngine also waits for Shopify's processing result after an accepted content update. Test one representative file type before a large replacement batch.

Use MERGE or UPDATE for metadata-only changes. Use REPLACE only when the Link is intentionally new content.

Step 8 — Prepare a cross-store Files import

Shopify file IDs belong to one store. To copy Files into another store:

  1. Clear the source ID values.
  2. Keep File Name, Link, Alt Text, and Type.
  3. Confirm every exported Link is still publicly reachable from Shopify.
  4. Use NEW when every row must be absent, or a carefully reviewed MERGE when matching destination names may be updated.
  5. Test one image, document, video, and 3D model that represents the formats you plan to move.
  6. Import the Files before importing metafields, metaobjects, products, or theme content that will reference them.

Remember that File Name is the fallback identity. If the destination already has the same exact name, MERGE updates that record and NEW fails. Rename intentionally or split collisions into a separate review file.

Step 9 — Upload through Advanced import

Open EditEngine → Import, select Advanced import, and upload the edited CSV or XLSX.

The EditEngine Advanced Import upload area for a Files spreadsheet

For XLSX, keep the worksheet named Files or File. A CSV has one logical sheet; keep standard Files headers and use a descriptive file name.

After analysis, verify:

  1. The detected resource is Files.
  2. The sheet and row count match the intended working file.
  3. read_files and write_files are granted.
  4. Every create or replacement row has a reachable Link.
  5. Existing same-store rows retain the correct ID.
  6. Cross-store rows do not contain source-store IDs.
  7. Every DELETE and content-changing Link is intentional.

Run the smallest test file first. Download the result and review Import Status and Import Comment for every failed row before importing more Files.

Step 10 — Verify the round trip

Do not treat a completed job status as the only verification:

  1. Open Shopify Admin → Content → Files and find every test file.
  2. Confirm File Name, Alt Text, Type, and preview or download behavior.
  3. For created or replaced content, wait until Shopify shows the file as Ready.
  4. Check any product, theme section, metafield, or metaobject that references an updated file.
  5. Create a fresh focused Files export and compare ID, File Name, Link, Status, Errors, and size with the intended result.
  6. Keep the result file beside the untouched pre-import export.

The untouched export is a manual recovery source, not an automatic rollback. A deleted file may need to be re-created from its Link, and any broken references may need separate repair.

Common mistakes

Using Guided import. Files use the Matrixify-shaped Advanced Import path.

Changing File Name after removing ID. EditEngine searches for the new name and can create a duplicate under MERGE. Keep ID when renaming.

Leaving an external Link on an update unintentionally. A non-round-trip Link can update the file's content. Remove Link for a metadata-only working file when you do not want content replaced.

Blanking Alt Text to clear it. Blank Alt Text is ignored for Files updates; it does not remove the existing value.

Assuming EditEngine REPLACE deletes and recreates. Unlike Matrixify's documented behavior, EditEngine updates an existing supported file in place and preserves its ID.

Keeping source IDs during a store migration. Clear them; Shopify IDs are store-specific.

Importing a webpage instead of a direct file URL. Link must resolve to the media or document Shopify should process.

Deleting a referenced file without an impact review. DELETE removes the file record and can leave storefront or custom-data references broken.

Assuming a completed import means media is ready. Review processing status and errors, then verify the file in Shopify and with a fresh export.


About EditEngine: EditEngine Bulk Product Editor helps Shopify merchants bulk edit, import, and export store data from spreadsheets. Install on Shopify →

Previous
Export and import Shopify redirects