A product image URL is the publicly accessible HTTPS web address in your ChatGPT Ads product feed that points to the main image OpenAI fetches to represent an item in shopping results. The term refers to the feed field OpenAI crawls, separate from the image file on your server and separate from the structured-data image on your product page.
If you sell through ChatGPT shopping, the image URL decides whether your product appears with a clear visual or gets filtered out of the unit. Serve an unreachable, low-resolution, or watermarked image and you lose placements to competitors whose feeds load clean, square product shots on every request.
In a ChatGPT Ads product feed, the product image URL is the image_url value you supply for each item, telling OpenAI where to retrieve the picture that represents that product. Every row in the feed carries one, and OpenAI must be able to fetch it successfully for the item to qualify for a shopping placement.
The field holds a single web address that must resolve over HTTPS to a JPEG or PNG file hosted on a publicly reachable server. The image it points to should show the product clearly, as a clean square shot with the item dominant, no watermarks, and no burnt-in badges. When a product has variants, each variant row points to a URL showing that specific color or configuration.
This field sits alongside other required feed attributes such as title, price, availability, and the product page URL, and it governs the visual half of your listing. It differs from the landing-page URL, which sends shoppers to your site, while on-page structured data supports discovery without replacing the feed. AirOps helps teams keep feed fields accurate and monitor how products surface across AI answer engines.
Resources: see how to build and optimize a ChatGPT Ads product feed.
A product image URL only works when every link in the chain holds, from where the file lives to the moment OpenAI renders it in an answer. The sequence runs in a fixed order, and a failure at any step keeps the picture out of the result.
Host the image: Put the product photo on a publicly reachable server or CDN and confirm it loads over HTTPS without a login or signed-token wall.
Add the URL: Place that web address in the image_url field of the matching product row in your ChatGPT Ads feed.
Submit the feed: Upload the feed over SFTP so OpenAI receives the row along with the image address.
Fetch and validate: OpenAI's crawler requests the URL, checks that it returns a valid JPEG or PNG, and ties the image to that item.
Render in results: When the product matches a shopper's conversation, the fetched image appears in the ChatGPT shopping unit.
A successfully fetched URL tells you the image is eligible to appear with your product. It does not promise the shopper sees that exact shot every time, since OpenAI decides placement based on the query.
Whether a product earns a place in ChatGPT shopping often comes down to data quality, and the image URL is the field shoppers actually see. Deciding to sell through AI answer engines means treating this address as part of your conversion path and not an afterthought buried in the feed.
Visual trust drives clicks: A clear, accurate image is what convinces a shopper to choose your listing over another in a crowded shopping unit.
Broken links delete placements: When the URL returns a 403, a 404, or an expired signed token, OpenAI cannot fetch the image and your product can drop out of the unit entirely.
Consistency compounds across the catalog: Uniform square shots with the product dominant make your whole feed read as professional, which supports eligibility and buyer confidence at scale.
SEO managers use the product image URL to make sure every feed row points to a crawlable, high-resolution image so products stay eligible for ChatGPT shopping results.
Growth marketers use the product image URL to test which primary shots earn more engagement in AI shopping units and roll the winners across the catalog.
Demand gen leads use the product image URL to keep feed imagery synced with live inventory so retired variants never appear in answers.
The image must load from a URL with no login, paywall, or expiring token, because OpenAI's crawler fetches the file directly and silently skips any address it cannot reach on the attempt.
Each purchasable variant needs its own image URL that matches the exact color or configuration named on that row, so the picture a shopper sees always reflects the specific item they can actually add to a cart and buy.
The address should stay constant over time and avoid regenerating on every feed export, so the image keeps rendering between uploads and OpenAI never has to chase a moving target that breaks mid-cycle.
Improve your product's visibility in ChatGPT shopping results with a reliable, high-resolution image.
Protect placements by eliminating broken or expired image links before OpenAI's crawler hits them.
Increase shopper confidence with clean square shots that show exactly what they will receive.
Reduce feed rejections by serving valid JPEG or PNG files over HTTPS.
Keep imagery accurate across variants so listings match live inventory.
Serve every image over HTTPS from a public URL, so OpenAI's crawler can fetch it without hitting an auth wall.
Use clean, square, high-resolution shots with the product dominant, because these read clearly in a compact shopping unit.
Keep each variant's URL pointed at the matching color or configuration, so shoppers see the exact item on that row.
Hold URLs stable across feed exports, so working images keep rendering and you avoid needless re-fetches.
Allow the OAI-SearchBot crawler through your CDN and firewall, so image requests do not return 403 errors.
Refresh the feed whenever media changes, so retired or updated shots never linger in answers.
Avoid leaning on temporary signed URLs or CDN links that rate-limit or expire. They load fine when you test them and then fail silently when OpenAI fetches at scale, pulling your product out of the unit with no error in your own dashboard.
AirOps: monitors how your products and pages surface across AI answer engines so you can catch when a feed image stops appearing in ChatGPT results.
Google Merchant Center: manages product feed data and image links you can adapt for AI shopping channels alongside Google Shopping.
Screaming Frog: crawls your image URLs in bulk to flag broken links, redirects, or non-200 responses before they reach a feed.
Audit your images: Pull your current product image URLs into a spreadsheet and open a sample to confirm each one loads publicly over HTTPS. You can do this today with no budget.
Fix broken links: Replace any URL that returns an error, requires a login, or uses an expiring token with a stable, public address.
Standardize the shots: Reprocess images to a consistent square format with the product dominant, no watermarks, and no burnt-in badges.
Map to feed rows: Place each corrected URL in the image_url field of the matching item or variant row in your ChatGPT Ads feed.
Submit and monitor: Upload the feed over SFTP, confirm OpenAI fetches each image successfully, and watch how your products render in shopping results.
A product image URL is the public web address in your ChatGPT Ads feed that OpenAI fetches to show your product's picture.
You implement it by placing a stable HTTPS link to a JPEG or PNG in each item's image_url field.
The main constraint is accessibility, since OpenAI silently drops any image it cannot crawl.
The main risk is expiring or rate-limited URLs that pass a manual test and then fail at fetch time.
The leverage is consistency, where clean, variant-accurate images across the whole catalog lift both eligibility and shopper trust.
They point to two different things and serve two different jobs. The product image URL is the direct address of an image file, a JPEG or PNG that OpenAI fetches to display your product visually. The product page URL is the landing page on your own site where a shopper goes to read more or buy. One feeds the picture in the shopping unit; the other feeds the click-through destination. Both are required fields in a ChatGPT Ads feed, and both must return valid responses, but confusing them is a common setup error. If you put a page URL in the image_url field, OpenAI cannot render an image and your listing looks incomplete. If you put an image file in the page URL field, shoppers land on a raw image instead of a product page. Keep each field pointed at the asset type it expects, and test both after every major feed change.
Update the product image URL whenever the underlying image changes. A fixed calendar schedule is unnecessary on its own. In practice, that means refreshing the field any time you swap a primary shot, launch a new variant, retire a product, or move images to a new host or CDN path. Because feeds are re-uploaded regularly, often daily over SFTP, the image URL naturally gets resubmitted with each snapshot, so the real task is keeping the stored value correct instead of touching it constantly. The one pattern to steer clear of is regenerating URLs on every export when the image has not changed, which forces needless re-fetches and can briefly break rendering. Set a stable address, change it only when the asset behind it genuinely changes, and let your normal feed cadence carry the current value to OpenAI. That keeps images live without adding manual work to your team's week.
Rendering varies because OpenAI decides, per query, whether and how to show a product, and a working image URL only makes you eligible. Several factors move the outcome. If the crawler could not fetch the image on the last feed pull, the picture is unavailable until the next successful fetch. If the query is ambiguous or your product is a weak match for the conversation, the shopping unit may surface other items instead. Image quality also plays a part, since a low-resolution or cluttered shot competes poorly against clean square images. Feed freshness matters too, because stale availability or a price mismatch between feed and landing page can suppress the whole listing, image included. So the same URL can appear for one shopper and not another even when nothing on your end changed. Fix fetchability and data accuracy first, then treat placement itself as something OpenAI controls.
You control the input while OpenAI controls the final display. What you can set directly is the image itself: which file the URL points to, its resolution, framing, format, and whether it loads reliably for the crawler. You can also decide how consistent your shots are across the catalog and keep variant images matched to the right rows. What you cannot dictate is exactly when OpenAI shows your image, at what size, or beside which competing products, because that is decided at answer time based on the shopper's query. The practical move is to make the controllable parts excellent and remove every reason for OpenAI to skip or down-rank your image. Serve a clean, square, high-resolution shot from a stable public URL, keep it synced to live inventory, and make sure the crawler is never blocked. Do that and you have done everything within your reach to influence the result.
A good product image URL is one OpenAI can fetch on every request and that returns a clean, high-resolution image of the product. Concretely, that means a public HTTPS address serving a valid JPEG or PNG, with no login, no expiring token, and no bot blocking that returns a 403. The image behind it should be square, show the product dominant and in focus, and carry no watermarks or burnt-in promotional badges. For variants, a good URL resolves to the exact color or configuration on that row. Stability is part of the standard too, so the address should stay the same between exports and rendering never breaks mid-cycle. There is no single pixel-count rule to quote, so treat consistency across the whole catalog as the real benchmark. If every row in your feed meets that bar, your imagery is in good shape for ChatGPT shopping.