It sells without a photograph
They already sold without an image, which tells you exactly what a photograph is worth here. Not broken — just working with one hand tied.
The symptom
A product page with a grey placeholder where the photograph should be. Or a category listing where one tile in the grid is an empty box between two photographed products.
Unlike most findings, this one has already survived a test: people bought it anyway. Somebody arrived, saw no picture, and ordered regardless. That is the useful part.
What it costs
The cost here is not a lost sale you can point at. It is the gap between what the product does and what it would do — and the product itself tells you the size of that gap, because it has a sales history to compare against.
The direct, checkable consequences:
- Product feeds reject it. Google Merchant Center requires an image link on every item; an item without one is disapproved and leaves the feed. Most marketplaces behave the same way. So a product that sells without a photo on your own site is often not being offered anywhere else at all.
- The category grid loses rhythm. A blank tile between photographed products reads as an error in the page, and people skip past errors.
- There is nothing to share and nothing to pin. Social previews, comparison sites and image search all fall back to whatever else the page has, which is usually your logo.
The reason this is in the money section and not in media is the ordering: products that already sell are worth photographing first. A catalogue with four hundred missing images and a budget for forty photographs needs to know which forty.
How to check it yourself
WooCommerce stores the main image as _thumbnail_id. Products that sold and have none:
wp db query "SELECT p.ID, p.post_title, SUM(l.product_net_revenue) AS revenue
FROM wp_posts p
JOIN wp_wc_order_product_lookup l ON l.product_id = p.ID
LEFT JOIN wp_postmeta t ON t.post_id = p.ID AND t.meta_key = '_thumbnail_id'
WHERE p.post_type = 'product' AND p.post_status = 'publish'
AND l.date_created > DATE_SUB(NOW(), INTERVAL 12 MONTH)
AND (t.meta_value IS NULL OR t.meta_value = '' OR t.meta_value = '0')
GROUP BY p.ID ORDER BY revenue DESC"
One trap: a product can have a _thumbnail_id pointing at an attachment whose file no longer
exists. That looks fine to this query and broken to a visitor — it is a separate check,
the database row outlived the file.
How to fix it
- Photograph in revenue order. The query above already sorts that way, which is the entire point of running it instead of browsing the product list.
- Ask the supplier before booking a studio. Most distributors have usable product imagery and will send it; it is worth an email before it is worth a photographer.
- One honest photograph beats three stylised ones. Plain background, true colour, the thing at a recognisable scale. Styling comes later.
- Set the alternative text while you are there — the image is new, the description is in your head, and it is the cheapest moment it will ever be. See images with no alternative text.
- Do not use a shared placeholder as the main image. It satisfies this check and fails the customer, and the Pro add-on has a separate check for exactly that pattern.
When it is a false positive
- Services, digital goods and gift cards, where there is nothing to photograph. Legitimate; hide the finding once.
- Themes that fall back to a category image, so the page is never actually blank.
- Made-to-order goods described by specification rather than shown.
How Merchlint finds it
Merchlint reads _thumbnail_id for every published product and joins it against what the product
earned over the past twelve months, taken from WooCommerce’s own order lookup table. Products with
no sales history are not reported by this check — a product with no photo and no sales is a
different question, and mixing the two would bury the useful list under the long one.
The finding shows the revenue figure and the period it covers.
Confidence: F — fact from the database. The meta row holds an attachment id, or it does not.
Revenue is never added across currencies; a store selling in more than one gets a figure per currency, with the currency shown.
Disagrees with what you see in your store? Write to us — we read every message. contact@merchlint.com