Importing Files
The Files import adds assets to your store's media library (Content → Files) from a CSV/Excel file, a Google Sheet, or directly from another connected store. You provide a public URL for each file and Shopify downloads and hosts its own copy — the same mechanism product and article images use. Files have no handle, so they're matched by filename: re-importing the same file updates its alt text instead of creating a duplicate.
For the wizard itself — uploading, mapping, dry runs, schedules — see Importing into EcomSolo.
Columns
| Column | Notes |
|---|---|
| File URL | A publicly reachable URL to the asset (image, video, PDF, …). Required to create a file — Shopify pulls the bytes from here. |
| Alt text | Accessibility / SEO description. This is the field a re-import updates. |
| Filename | The name to store the file under, and the match key. Leave it blank and it's derived from the URL's last path segment (e.g. .../wow-banner.jpg → wow-banner.jpg). |
| Content type | IMAGE, VIDEO, EXTERNAL_VIDEO, MODEL_3D, or FILE (generic). Leave blank to infer from the file extension. |
| On duplicate filename | What happens if a file with the same filename already exists on a create: REPLACE (default — no duplicate), APPEND_UUID (keep both), or RAISE_ERROR. |
Common export headers map automatically: URL / Image Src / Source → File
URL, Alt → Alt text, File Name → Filename.
How files are matched
Every row is matched to an existing file by filename on the target store. What happens on a match depends on the operation you pick for the run:
| Operation | On an existing filename | On a new filename |
|---|---|---|
| Upsert (default) | Updates its alt text | Creates it from the File URL |
| Create | Fails the row | Creates it from the File URL |
| Update | Updates its alt text | Fails the row |
| Merge | Updates its alt text | Fails the row |
| Delete | Deletes it | Skips the row |
Matching first checks EcomSolo's synced file list, then falls back to a live
Shopify lookup — so re-runs and store-to-store targets recognize existing files
even before the next sync. On a create, the On duplicate filename option
(default REPLACE) prevents duplicates if a same-named file slips past the
lookup.
Deleting files
Choose the Delete operation to remove files. A delete file needs only the Filename (the identity column) of each file to remove — no URL. Deletes are permission-gated (file write access) and irreversible, so the dry run always shows the count first. A filename that no longer exists is quietly skipped, so re-running the same delete file is safe (idempotent).
Importing from another store
On the wizard's Source step, pick From another store to copy files from a connected store — each source file's hosted URL is handed to the target, which downloads its own copy, carrying alt text and filename. Matched by filename, so re-runs update alt in place. Combined with a schedule this becomes a recurring one-way file sync.
Results and freshness
Files are created/updated in Shopify immediately and EcomSolo's Files dashboard refreshes within seconds of the run. One caveat: files process asynchronously, so a brand-new image that's still processing when the run finishes may show without its preview/dimensions until the next sync fills them in — the file itself (name + alt) appears right away.
Sample file
A ready-to-run example ships as files-sample.csv:
File URL,Alt text,Filename
https://picsum.photos/seed/wowbanner/1600/600.jpg,Wow storewide banner,wow-banner.jpg
https://picsum.photos/seed/wowlookbook/1200/1200.jpg,Wow spring lookbook cover,wow-lookbook.jpg
https://picsum.photos/seed/wowicon/512/512.jpg,Wow app icon,wow-icon.jpg
Dry run: will create 3 (or update for filenames that already exist). Re-run the same file and it becomes update 3 — the alt text is refreshed, no duplicates.
Troubleshooting
| Error in the report | What it means / what to do |
|---|---|
row requires a Filename or a File URL | A row needs either an explicit filename or a URL to derive one from. |
row would create a new file but has no File URL | Creating a file needs a public source URL. |
| URL / download errors | The URL must be publicly reachable and point at a real file. URLs behind a login, or links to a web page rather than the file itself, are rejected by Shopify at run time. |
… access scope / missing permission | The store isn't connected with file write access — reconnect it from its settings, then re-run. |
FAQ
Will re-importing create duplicates? No — rows match by filename and default
to REPLACE, so re-runs update the alt text in place.
Can I import videos or PDFs? Yes — set Content type to VIDEO or
FILE (or leave it blank to infer from the extension).
Can I delete files? Yes — run the file with the Delete operation and a column of filenames. It's permission-gated and irreversible, and missing filenames are skipped. See Deleting files.