How Shopify Handles URL Imports and How to Prepare Your Data File
Your product data may already live in a hosted file, such as a shared Google Sheet, a Google Drive or Dropbox link, a supplier feed or a file on an FTP server. Each time that file changes, you have to download it, save it as a CSV and upload it to Shopify again. Pointing Shopify at the file’s URL seems like the obvious shortcut, but a wrong assumption about how imports work can lead to a failed upload or overwritten product data.
This guide explains what Shopify supports when you import from a URL and how to prepare your file so it imports cleanly.
Can Shopify Import Products From a URL?
Only partly. Shopify’s built-in import can’t use a link to your product file as its source, but it does fetch product images from URLs listed inside your CSV. The answer depends on which of these you want Shopify to fetch.
The native import starts at Products > Import. There you click Add file, select a CSV from your computer, review the preview and import. The import has no field for a Google Sheets link, a cloud storage URL or a supplier feed address. As a result, it works only with a saved copy of your data, and each time your hosted file changes, you need to download the latest version and upload it again.
Image URLs work differently. When your CSV lists an image URL, Shopify downloads that image during the import and stores it in your store. The original links only need to work while the import runs.
To pull the product file itself from a URL, you need a third-party import app. These apps differ in the links and file locations they accept, so it helps to know when a URL import is worth setting up and how the workflow usually runs.
When a URL Import Is Worth Setting Up
A URL import pays off when the same file changes regularly and those changes need to reach your store again and again. If the file stays at a fixed link, such as a shared Google Sheet or a supplier feed updated at the same address, an app with scheduling can re-import it automatically. Recurring updates to prices, stock or catalog details then no longer depend on someone remembering to run them.
It also removes the download-edit-upload loop. You edit the hosted file, and the next import reads it directly from its link. Without local copies on your computer, you’re less likely to upload an outdated version.
For a one-off import, such as a single supplier batch, the native CSV upload remains a fine choice. Setting up an app in that case adds work without saving much time.
If you do need recurring imports, choose an app whose access requirements match where your file is hosted and whose template your file can follow. Both points are covered below.
How a URL-Based Import App Typically Works
An import app downloads your file from a link you provide and then processes it much like an uploaded file. Interfaces vary, but the workflow and the conditions the link must meet follow a common pattern.
First, host the file somewhere the app can reach. Common options include:
- A Google Sheet published to the web. In Google Sheets, go to File > Share > Publish to web, then copy the public link it generates.
- A Google Drive, Dropbox or SharePoint file shared with “anyone with the link.”
- An HTTP, FTP or SFTP path to the file on a server.
Once the file has a working link, the import usually runs in this order:
- Choose URL as the import source in the app and paste the link.
- Let the app fetch the file and detect its format.
- Optionally filter rows, for example by product status, or map your columns to Shopify fields.
- Preview the data the app is about to import.
- Run the import now, or save it on a schedule if the app supports scheduling. The app typically shows a log report of the results afterward.
The link must deliver a supported spreadsheet file type, such as a CSV. If it points to something else, such as an image, the app rejects it. Many shared and published links don’t end in a filename, so some apps identify the file type from the information the server sends with the download.
Access rules depend on the app, so check its documentation before using a private link. Some apps require a public link, while others also accept full FTP or SFTP paths or HTTP Basic authentication, which embeds a username and password in the URL (https://user:password@host/file.csv). Those credentials only unlock the import file itself. Image URLs inside the file generally still need to be publicly accessible, because the images are fetched separately.
Preparing Your File So It Imports Correctly
The same preparation rules apply whether your file lives in a Google Sheet, on a supplier’s server or on your computer. The rules below cover Shopify’s own product CSV format, which the native admin import uses. If your import app uses its own template instead, follow its column names, because a file built to Shopify’s layout may not map correctly in that app.
Headers, Required Columns, Encoding and File Size
The first row must contain the column headers exactly as Shopify specifies them. Header names are case-sensitive, so Handle works but handle doesn’t. Missing or mismatched headers cause the import to fail, often with the confusing message “Network error: Unexpected token < in JSON at position 0.”
Few columns are strictly required, and the requirements depend on what you’re doing:
- New products: only Title is required.
- Adding variants: the URL handle is also required, so Shopify knows which product the variant belongs to.
- Updating existing products: both the URL handle and Title are required.
Save the file as UTF-8 with LF line endings. A file saved in another encoding imports with unexpected characters in place of accented letters or symbols, and curly quotes trigger an “illegal quoting” error. Google Sheets saves in UTF-8 by default, but desktop spreadsheet programs may require you to choose UTF-8 explicitly.
Shopify’s native product import accepts files up to 15 MB. If a larger file returns an error or times out, split it into several files and import each one separately.
Overwrite Behavior, Variant Columns and What a CSV Can’t Change
The Overwrite products with matching handles option decides what happens when a row’s handle matches an existing product. If you leave it unselected, Shopify ignores those rows. If you select it, values in your file replace the existing values in the matching columns.
When overwriting, a blank cell in a non-required column replaces the existing value with a blank, while a column left out of the file keeps its existing values. To update only a few fields, include just those columns rather than a full export with gaps.
Variant columns need extra care. If you include a variant-dependent column, such as SKU or Weight, without the Option1 name and Option1 value columns, the import deletes the product’s variant options. Changing option values also replaces the existing variant IDs with new ones, which can break third-party apps or integrations that rely on the old IDs.
A CSV import can’t bulk-delete products or bulk-change their availability on other sales channels. Use bulk actions in the Shopify admin for those tasks.
Image URLs Inside the File
Shopify can fetch an image only if its URL is publicly accessible over HTTPS and isn’t password-protected. Where you host the images depends on where they are now:
- On your computer: upload them first to Content > Files in Shopify or to another host that provides public HTTPS links.
- On your previous platform: when migrating, you can reuse the existing image URLs if they meet the conditions above.
- From a Shopify export: exported Shopify CSVs already contain working image URLs.
Name image files carefully before uploading, because file names can’t be changed afterward. Shopify also doesn’t allow names ending in _thumb, _small or _medium.
To add more than one image to a product, give each additional image its own row and repeat the product’s handle in that row. Each product can have up to 250 images. Videos and 3D models can’t be imported through image URL columns.
Testing and Verifying Your Import
Do most of your checking before you start, because a native Shopify product import can’t be canceled once it begins. Shopify also keeps no import history, so the only way to review what a run changed is your store’s activity log.
Start with a small subset of your file rather than the full catalog. Pick a few products that represent the tricky parts of your data, such as products with variants or several images, then check them in the admin before importing the rest. Agencies and Shopify Partners running a large import for a merchant can test that subset in a development store first, so a mapping or overwrite mistake never reaches the live catalog.
After the upload, Shopify sends a confirmation email to the account’s email address. If the import fails, check the header names and UTF-8 encoding first.
A less obvious error is “Line is invalid (No details).” It usually means an existing option value has moved to a different option position, such as a value that used to sit under Option1 now listed under Option2. To fix it, import the file with a temporary option name, such as “Size.” with a trailing period, then import again with the correct name.
For app-based URL imports, run the import once manually, confirm that the preview maps every column correctly and read the log report afterward. Only then set up a recurring schedule, because a scheduled run repeats any mapping error each time it fetches the file.
Conclusion
Shopify’s native import reads product files you upload and fetches only the image URLs inside them, so pulling the file itself from a link requires an import app. Whichever route fits how often your data changes, a well-prepared file and a small test run are what make an import from URL in Shopify reliable. We hope this guide helps you set up imports that keep your catalog accurate without surprises.



