WooCommerce products without a main image

A product without a main image sells with a grey placeholder — in the shop grid, on its own page and in every feed that pulls from your catalog. CatalogLift finds every product missing one and points you to the exact record to fix in WooCommerce.

Images & media High severity Detection + evidence

Why a missing main image costs you sales

The main image is the one field WooCommerce reuses everywhere. It is the thumbnail in category and search listings, the hero on the product page, the picture in the cart and the order email, the image in the Open Graph tags, and the photo your product feed sends out. When it is empty, all of those surfaces show a placeholder at the same time.

  • The listing looks broken. A grey placeholder in a grid of real photos reads as an unfinished or untrustworthy product, and shoppers scroll past it.
  • Feeds reject or demote it. Google Merchant Center and most marketplace feeds require an image link; products without one are disapproved or pushed down, whatever the price.
  • Search and social lose their preview. No main image means no image in rich results and no preview card when the product URL is shared, so the click that would have happened doesn't.
  • Nothing else on the page can compensate. A well written description and a clean SEO title still lose to a competitor's listing with a photo.

How to find products without a main image manually

WooCommerce stores the main image as the _thumbnail_id postmeta on the product. With WP-CLI, this query lists published products where that key is missing, empty, or points at an attachment that no longer exists:

wp db query "SELECT p.ID, p.post_title
FROM wp_posts p
LEFT JOIN wp_postmeta m
  ON m.post_id = p.ID AND m.meta_key = '_thumbnail_id'
LEFT JOIN wp_posts a
  ON a.ID = m.meta_value AND a.post_type = 'attachment'
WHERE p.post_type = 'product' AND p.post_status = 'publish'
  AND (m.meta_value IS NULL OR m.meta_value = '' OR m.meta_value = '0'
       OR a.ID IS NULL)
ORDER BY p.ID
LIMIT 50;"

Adjust the table prefix if yours isn't wp_. Add p.post_status IN ('publish', 'draft', 'private') if you want to catch products before they go live.

This gets you a list — with the usual gaps. It doesn't tell you whether the attachment row still has a file on disk, only that a row exists. It shows IDs, so someone still has to open each product to see what it is and which photo belongs to it. And it answers once: the next CSV import or product created in a hurry has no image again, and nobody knows until a shopper sees the placeholder.

How CatalogLift finds it

Every scan walks the synced catalog and checks each current product for a primary image record that still points at a real attachment in your store. Gallery images don't count, and a primary slot left behind by an image that has since gone stale doesn't count either — the product needs a live main image or it is flagged. Each finding names the product as evidence, at high severity, alongside everything else the scan surfaced.

This is a detection-and-evidence check. The photo lives in your media library and only you have it, so CatalogLift never uploads or drafts an image: the finding links you straight to the product, tells you to set the image in the Product image box in WooCommerce and save, and the next scan confirms it is gone. Because CatalogLift keeps watching, a future import that creates products without photos becomes a fresh finding instead of a placeholder a shopper discovers first.

Fair questions, straight answers.

What is the main image of a WooCommerce product?

It is the single photo set in the Product image box on the edit screen, stored as the _thumbnail_id postmeta. WooCommerce uses it in the shop grid, on the product page, in the cart, in feeds and as the social share image. Gallery images do not replace it.

Does CatalogLift upload or generate the missing photo?

No. The photo lives in your store's media library and only you have it. CatalogLift finds every product without a main image, links you straight to it, and the next scan confirms the image is in place once you have set it in WooCommerce.

Does a gallery image or a variation image count?

Not for this check. CatalogLift looks specifically for a current primary image that points at a real attachment in the store. A product with gallery images but no product image is still flagged.

Why is this rated high severity?

Because it fails the product on every surface at once: the listing shows a placeholder, the product page has no photo, and the item is rejected or demoted in shopping feeds. It is one of the few catalog gaps a shopper notices immediately.

See it on your own catalog.

Create a free account, connect your WooCommerce store and this check runs on your real products, along with the rest.

No card required. The free plan never writes to WooCommerce.