What actually moves when you push an image to Shopify
A Shopify product image is not just a file. Every image attached to a product carries four pieces of metadata, and each one does a distinct job on the storefront and in search.
| Field | What it controls | Cost of getting it wrong |
|---|---|---|
| Image file | The pixels shown in the gallery and thumbnail | Obvious — but the least likely to be wrong |
| Filename | The image URL path; a weak but real SEO signal | IMG_4471.jpg tells Google nothing |
| Alt text | Screen readers, image search, broken-image fallback | Accessibility failure plus lost image search traffic |
| Position | Gallery order; position 1 is the featured image | Wrong hero image on every collection page and ad |
Position is the one merchants most often treat as an afterthought and most often regret. Shopify uses the image at position 1 as the product's featured image, which is what appears in collection grids, search results within the store, cart line items, and any sales channel that syndicates from the product feed. A manual upload appends to the end of the gallery by default, so the newly retouched hero shot lands at position 7 behind six older photos and changes nothing anyone sees.
If your process is "upload the new image, then remember to drag it to the front," you will forget on roughly the SKUs that matter. Set position explicitly at push time instead of fixing it afterwards.
The manual round trip versus a direct push
Count the steps honestly. A manual workflow for one finished image looks like this: export from the editor, find it in the downloads folder, rename it to something meaningful, open the Shopify admin, search for the product, open it, scroll to Media, upload, wait, click the image, type alt text, save, then drag the image to the correct position and save again.
Manual round trip
- Export, download, rename by hand
- Find the product in the admin
- Upload and wait for processing
- Open the image to add alt text
- Drag to reposition, save again
- No record of which export was approved
Direct push
- Pick the product from a searchable list
- Filename, alt text and position set once
- One call writes all four fields
- Storefront updates in seconds
- Link back to the product in the admin
- Push is logged against the image
At roughly ninety seconds of hands-on time per image for the manual route and under fifteen for a direct push, a 300-image seasonal refresh goes from about seven and a half hours of clicking to a little over an hour. That is not editing time saved — it is pure administrative overhead removed, the kind that no one budgets for and everyone pays.
The secondary benefit is provenance. When the push happens from the tool that produced the image, the store knows which generated asset became the live product photo. Manual uploads sever that link the moment the file hits the downloads folder, which is why catalogue audits so often end with "we think this one is current."
Connecting a store: what the permissions actually mean
A Shopify product image push workflow starts with an OAuth install, the same flow you have run for every other app in your admin. You are redirected to Shopify, shown the permissions being requested, and you approve or decline. Nothing is copied and pasted, and no password is shared.
For pushing images, two scopes are enough:
- read_products — so you can browse and search your catalogue from inside the editing tool and pick the right product without switching tabs.
- write_products — so a finished image can be attached to a product with its filename, alt text and position.
Note what is not on that list. No order data, no customer records, no payment information, no ability to change prices or inventory. If an image tool asks for read_orders or read_customers, ask why before approving; image work does not need it.
Shopify shows the full scope list on the permission screen. Read it. The scopes an app requests are the clearest signal you will get about what it intends to do with your store.
Disconnecting should be equally undramatic: revoke the connection and the stored token is destroyed, and uninstalling the app from the Shopify admin should trigger the same cleanup on the app's side. Images already pushed stay on your products — they belong to your store, not the tool that made them.
Setting position deliberately
Position is where a push workflow earns its keep, because it is the field a human is worst at handling consistently. Three patterns cover almost every real case.
Featured (position 1). Use this when the new image is the hero — the clean, retouched, correctly framed shot that should lead everywhere. Pushing to position 1 shifts every existing image down by one and immediately changes the thumbnail shown in collection grids, search, and any channel fed from your catalogue.
Append. Use this for supporting shots: detail crops, alternate angles, scale references, packaging. They belong in the gallery but should not displace a hero image that is already working.
Explicit slot. Use a specific number when your galleries follow a house order — hero, back, detail, on-model, packaging — and the new image belongs in a known place in that sequence. This is what makes a catalogue feel deliberate rather than accumulated.
Attention drops steeply after the first two images. That is the whole argument for treating position as a first-class field rather than something you sort out later: the difference between position 1 and position 4 is the difference between an image most shoppers see and one most never reach. For more on how gallery order affects click-through, see our guide to Shopify image metadata, alt text, filenames and order.
Filenames and alt text at push time
Both fields are cheap to set correctly at the moment of push and expensive to retrofit across a catalogue. Decide the pattern once and let the workflow apply it.
Filenames should be descriptive, lowercase, hyphenated, and stable: tan-leather-crossbody-bag-front.jpg, not final_v3_APPROVED.jpg. Include the product identity and the shot type. Avoid dates and version numbers — they age badly and end up embedded in a URL you cannot change without breaking caches.
Alt text describes the image to someone who cannot see it. Write the product and what is visible, in a natural sentence: "Tan leather crossbody bag, front view, adjustable strap." Do not stuff keywords, do not start with "image of," and do not repeat the product title verbatim across all seven gallery images — each one should describe what makes that shot different.
| Field | Weak | Strong |
|---|---|---|
| Filename | IMG_2291_final.jpg | tan-leather-crossbody-front.jpg |
| Alt text | bag bags leather bag buy | Tan leather crossbody bag, front view |
| Alt text (detail shot) | Tan leather crossbody bag | Close-up of brass buckle on tan leather strap |
Tools such as Retouchable set these alongside the image itself when pushing to a product, so the metadata decision happens once per image rather than as a separate cleanup project six months later.
Running a push workflow across a whole catalogue
Single pushes are easy. Catalogue-scale pushes need a small amount of discipline to avoid a mess.
Agree the gallery standard first. Write down the shot order every product should follow before you push anything. Without it, position decisions get made per-image by whoever is at the keyboard, and consistency evaporates.
Push in batches by product type, not alphabetically. All the bags, then all the footwear. Shot conventions differ by category, and batching by category keeps the person doing the work in one mental mode.
Expect rate limits, and let the tool handle them. Shopify's Admin API enforces a leaky-bucket rate limit per store; a burst of pushes will get throttled. A well-built integration honours the retry signal and paces itself, so a 200-image batch takes a few minutes rather than failing halfway through.
Spot-check the storefront, not the admin. The admin preview is not the storefront. After each batch, open two or three product pages as a shopper would and confirm the featured image and gallery order are what you intended.
If you only have time for one pass, push position-1 images across the whole catalogue before touching supporting shots. That is where nearly all the conversion impact sits.
If you are refreshing an existing catalogue rather than launching new products, our guide on bulk updating Shopify product images covers sequencing and rollback in more depth, and the broader Shopify product photography workflow covers what happens upstream of the push.
What to verify after the first push
Before you trust a push workflow with three hundred SKUs, run one product through it end to end and check five things.
- The image appears at the intended position. Load the product page as a logged-out visitor, not just in the admin.
- The featured image changed everywhere it should. Check a collection page and the store's own search results, which both pull from position 1.
- The filename survived. Right-click the image, copy its address, and confirm the path contains the name you set rather than a generated string.
- Alt text is present and specific. Inspect the element or use a screen reader; an empty alt attribute is a silent failure.
- Nothing else on the product changed. Title, price, inventory and description should be untouched. An image push should only write images.
Once one product passes all five, the workflow is safe to scale. Most of the failures merchants report with image automation come from skipping this single verification pass and discovering a systematic position error after two hundred products already have it.