What Shopify’s native bulk editor can and cannot do
The bulk editor is genuinely good at what it covers. Select products from the product list, click Edit products, add columns, and you get a spreadsheet-style grid you can tab through. For price changes, inventory corrections, or flipping fifty products from draft to active, it is the fastest tool available.
Its blind spots are consistent and well documented. Images are absent from the column picker on every plan — so are SEO title, meta description, URL handle, SKU, vendor, and most metafields. Two more constraints bite at scale:
- No undo. Changes commit the moment focus leaves a cell. There is no confirmation step and no rollback.
- 50 products per page. Editing beyond fifty products means repeating the whole selection-and-edit cycle page by page.
Beyond the editor, the platform itself sets hard ceilings worth knowing before you plan any bulk job: individual image files cap at 20MB, and a single product can hold a maximum of 250 images.
The bulk editor's lack of undo applies to every field, not just the risky ones. Duplicate the products you intend to touch, or export a CSV backup first — it is the only rollback you get.
The three ways merchants actually bulk update images
Since the native editor is out, every real workflow reduces to one of three approaches. They are not equivalent, and the right choice depends far more on catalog size and variant complexity than on budget.
| Method | Good for | Breaks when |
|---|---|---|
| CSV import/export | Swapping image URLs, setting alt text, reordering position | Variant image assignment, products with many rows |
| Third-party bulk app | Compression, resizing, filename and alt-text rules | Anything requiring judgement per image |
| Manual admin work | Under ~30 SKUs, one-off fixes | Immediately past that, on wall-clock time |
| Direct API connection | Editing and publishing in one pass | Requires an app that supports write access |
CSV. Export your products, edit the Image Src, Image Position, and Image Alt Text columns, re-import. This works, and it is free. The trap is the CSV's row model: a product with multiple images and multiple variants spreads across many rows, and the relationship between an image row and a variant is expressed through the Variant Image column rather than the image rows themselves. Get that wrong on re-import and you scramble which photo shows for which colorway across the whole catalog.
Bulk apps. The Shopify App Store has a solid category of image apps that handle mechanical transformations — compress everything under a size threshold, resize to a fixed square, rename files from a template, generate alt text from the product title. These are excellent for rules that apply uniformly. They cannot help when the answer differs per image, which is most retouching work.
Manual. Perfectly reasonable for a small catalog. The break point arrives faster than people expect, because the cost is not the editing — it is the round trip.
The round trip is the real cost
Ask a merchant how long it takes to update a product image and they will estimate the editing time. That is rarely the expensive part. The expensive part is the loop around it.
A single image update in a typical setup looks like this: find the SKU in the admin, download the current image, open it in an editor, make the change, export at the right size, go back to the admin, find the product again, delete the old image, upload the new one, drag it back into the correct gallery position, retype the alt text, save. Eleven steps, and only one of them is the actual edit.
Multiply by a 400-SKU catalog with four images each and the arithmetic stops being about editing skill. A refresh that sounds like a week of retouching becomes a month of downloading, uploading, and re-dragging thumbnails into order. This is why catalog refreshes get postponed indefinitely at exactly the stores that need them most — the ones with several years of accumulated, inconsistent imagery.
It is also why the bulk-edit question is usually framed wrong. Merchants ask for a faster editor. What removes the bottleneck is removing the round trip: connecting the tool that edits the image directly to the store that holds it, so the finished file never touches a downloads folder.
What a connected workflow removes
A direct store connection changes the shape of the job rather than the speed of any one step. Instead of exporting files and re-importing them, the tool reads your product catalog, you work on the images in place, and finished images are written back to the product record.
Download / re-upload loop
- Locate SKU in admin, download each image
- Edit locally, export at target size
- Re-find the product, delete old media
- Upload, drag into position, retype alt text
- Filenames drift from any naming convention
- No record of which SKUs are done
Connected workflow
- Search or browse store products in the tool
- Edit, review, approve
- Push back to the product record directly
- Filename, alt text, and gallery position set on write
- Naming convention applied consistently
- Connection status visible; revoke any time
The three fields set on write-back are worth calling out, because they are the ones merchants most often lose track of during bulk work:
- Filename — the only durable place a naming convention lives once the file is on Shopify's CDN.
- Alt text — required for accessibility, read by image search, and blank on the majority of catalogs we see.
- Position — controls gallery order, which controls what a shopper sees first and what appears as the thumbnail in collection listings.
Retouchable's Shopify integration works this way: you install it through Shopify's standard OAuth flow, browse or search your store's products from inside the app, and push finished images straight back to the product with those three fields set. Nothing is downloaded and nothing is re-uploaded by hand.
Permissions, and what a store connection can actually touch
Any app that writes images to your products needs write access to products, and merchants are right to ask what that means in practice. The honest answer is that Shopify's permission scopes are broader than most apps' actual behaviour, so the scope name alone does not tell you much — you have to read what the app says it does.
| Scope | What it grants |
|---|---|
read_products | List and search products, variants, and existing media |
write_products | Create and modify product media, including filename, alt text, and position |
What those two scopes do not include is equally important: no access to orders, no access to customer records, no access to payment or payout data, no ability to change prices or inventory, and no theme access. An image app asking for customer or order scopes should prompt a question.
Does it list scopes beyond products? Does it state what happens to your images on uninstall? Can you see and revoke the connection from your Shopify admin's Apps page at any time? Any app worth installing answers all three plainly.
On uninstall, Shopify fires mandatory compliance webhooks and a well-behaved app deletes the store's data on receipt. That is the mechanism behind "your data is removed when you disconnect" — worth confirming an app implements it rather than assuming.
Sequencing a catalog-wide image update
Bulk image work fails more often from sequencing than from tooling. A catalog refresh that starts with the highest-effort SKUs stalls before it reaches the ones that generate revenue. Order the work by traffic, not by product ID.
A workable sequence for a catalog of any size:
- Export a CSV backup first. Whatever method you use, this is your rollback. The bulk editor has no undo and neither does a bad import.
- Audit before you edit. Pull the current image count, dimensions, and alt-text coverage per product. You will usually find a cluster of SKUs with one image and no alt text — that cluster is the highest-return work in the catalog.
- Fix the mechanical issues in bulk. Compression, dimensions, and filename conventions are rule-based. Use a bulk app or a script; do not do these by hand.
- Standardise the hero shot across your top sellers. Consistent framing, background, and crop across the products that appear together in a collection grid is the change shoppers actually notice.
- Set position deliberately. Decide the gallery order once — hero, detail, scale reference, in-use — and apply it uniformly rather than leaving it as upload order.
- Work the long tail last, in batches. Ten SKUs a week finishes a 500-product catalog in a year without ever blocking anything else.
For more on auditing what you already have, see our product image catalog audit checklist. If your problem is consistency rather than volume, consistent product photo backgrounds covers the specific case of unifying imagery shot across different sessions. And if you are still deciding what your baseline should be, our Shopify product image optimization guide sets out the sizes and formats to standardise on.