Why a missing title holds products back
The product title is the one field everything else hangs from. The product page uses it as its heading, the permalink is generated from it, the SEO title falls back to it, and every product feed carries it as the item name. When it is empty, all of those inherit the hole at once.
- The product cannot rank. Search engines index a page with a blank heading, but with nothing to match a query against, it appears for nothing anyone types.
- Feeds reject the item. Google Merchant Center and marketplace feeds treat the title as a required attribute; a product without one is disapproved and simply does not appear.
- Shoppers see an unnamed card. In category grids and search results, an image with a price and no name reads as a broken store, and shoppers move on to the next one.
- Your team cannot find it either. Admin search, order line items and stock reports all lean on the title. An unnamed product is invisible in wp-admin until someone stumbles on it by ID.
How to find products without a title manually
The title lives in post_title on the posts table, so one
WP-CLI query lists every published product where it is empty:
wp db query "SELECT p.ID, p.post_name, m.meta_value AS sku FROM wp_posts p LEFT JOIN wp_postmeta m ON m.post_id = p.ID AND m.meta_key = '_sku' WHERE p.post_type = 'product' AND p.post_status = 'publish' AND TRIM(p.post_title) = '' ORDER BY p.ID;"
Adjust the table prefix if yours isn't wp_. The SKU column
is there so you can tell the rows apart, since the title cannot.
This finds the obvious cases and misses the rest. A title that is a
single , an empty <span> or
<p></p> left behind by an editor, or a
non-breaking space that TRIM() does not remove all pass
the check and stay unnamed on the storefront. And once you have the
list, each row still needs someone to open the product, work out what
it is from the SKU and description, and write a name — then run the
query again after the next import.
How CatalogLift finds and drafts it
On every scan, CatalogLift reads the title of each published product in the synced catalog and asks whether anything is actually there. It strips HTML tags, decodes entities and removes every whitespace character before deciding, so a title made of tags or spaces is treated as missing just like a truly empty one. Products that are not published are left alone. Each finding is raised at high severity and names the field and the reason as evidence, alongside everything else the scan surfaced.
Because writing the name is the expensive part, this check carries an AI proposal. CatalogLift drafts a title from what the product already knows about itself — SKU, brand, attributes, category and its descriptions — and never from thin air. The draft arrives as a before/after diff with its evidence and a confidence score. You approve, edit or skip it; nothing in your store changes until you approve, only an approved title is written to WooCommerce, and the next scan verifies it landed. Because CatalogLift keeps watching, an import that publishes another unnamed product becomes a fresh finding instead of a quiet regression.