Fills empty SEO title (from product title, trimmed to 60 chars) and SEO description (from description, trimmed to 160 chars) without overwriting existing values.
async def run(ctx): for product in await ctx.shopify.query(ACTIVE_PRODUCTS): seo = product.seo
How do you bulk-fix empty SEO titles and meta descriptions on Shopify?
To bulk-fix empty SEO titles and meta descriptions on Shopify, this template fills each missing SEO title from the product title, trimmed to 60 characters, and each missing meta description from the product description, stripped to plain text and trimmed to 160. Values an editor already wrote are never touched, so a careful product page keeps its hand-crafted snippet while the neglected two thousand around it finally get one. Blank fields fall back to whatever Google assembles on its own, and what Google assembles is rarely what you would have written.
Catalogs accumulate hundreds of blanks because imports and quick launches skip the SEO card every time. The backfill covers the whole catalog in one pass and re-runs safely as new products arrive. Each run lists every field it would fill with the exact text, so you review the snippets before the search engines do.
Last updated August 24, 2026
If you run a sharper version of this template, or something it inspired, send it in. We review every application and publish the good ones, credited to you or your agency.
AI writes real Python or TypeScript, a dry run rehearses it, you approve, it deploys.
Free plan · no card · 🇪🇺 EU data residency