The shop page and a category share one heading
Both say Sale or All products. Both rank for the same query. Neither has a unique job. We split them, or we noindex one. Leaving both live is how the catalog looks empty.
WooCommerce SEO
WooCommerce lives on WordPress. Products are posts. The shop is a page. Categories, tags, and attributes can each make archives. Plugins can add more URLs on top. We hold the product slug. We say which archives may be real pages. We stop leftover image URLs and filter plugins from ranking as the shop.
Position
A Woo store is not a flat list of SKUs. It is a product post type, a shop page, category archives, optional tags, attributes, and whatever the last plugin decided to publish. Search intent has to show up in the HTML a crawler gets. A logged-in block editor is not that HTML.
Posts, pages, and CMS plugin fights belong on WordPress SEO. A product slug, a shop archive, and a Woo filter stay here. An image attachment that is not a product goes back to that page once we close the shop leak.
Open WordPress SEOEcommerce SEO writes which product and filter classes may be documents on any stack. Stay here when the leak is a Woo permalink, a Woo plugin, or the shop page fighting a category. Open that page when the rule would still be true off WordPress.
Open ecommerce SEOShopify uses theme output, apps, collection handles, and Markets. This page assumes WooCommerce on WordPress. A move onto or off Woo is migration work, not a theme lecture here.
Open Shopify SEOMagento SEO owns that platform's rewrites and store views. Woo product slugs and WordPress plugins are a different job. Open Magento SEO if that is the stack you run.
Open Magento SEOWe start with the product slug. Then we look at the shop page versus product categories. Then we look at plugins that print URLs, robots, or schema. WordPress blogs and leftover media that are not commerce stay on WordPress SEO. Catalog rules that would be true on any platform stay on ecommerce SEO. Shopify keeps its own page.
We will not change the whole permalink pattern to chase a nicer looking URL. We will not index every color and size because a filter plugin can. We will not run Yoast and Rank Math as two speakers on the same product. If the stack is Magento, open that page.
When this fits
This page fits when WordPress is publishing shop URLs nobody listed on purpose. Product slugs, the shop page, category archives, attributes, or plugins. If you needed a catalog rule that travels, a blog pass, or Shopify theme work, start there instead.
Both say Sale or All products. Both rank for the same query. Neither has a unique job. We split them, or we noindex one. Leaving both live is how the catalog looks empty.
Layered navigation, FacetWP, or a similar plugin now indexes size, color, and price copies. Search Console is full of parameters. The money categories are not. We write which archives may stay. The rest stay tools.
Settings, Permalinks, or a product slug edit moved paths. Ads and reviews still hit the old URL. We treat that as a same-week redirect job. A title change is not a reason to move the slug.
WordPress left media URLs in the index. They reuse the product name. Crawl hits the photo page, not the buy page. We close that leak here. Other leftover CMS objects still belong on WordPress SEO.
Process
Slug, then template, then plugins, then archives. Each step ends with a note you can keep in wp-admin. The last step is not a Magento rewrite. It is a yes-or-no list for shop URLs WordPress already publishes.
We map how products, the shop page, and categories are addressed today. Pretty permalinks, trailing slashes, leftover ?p= IDs, attachment paths, and redirects already in place. This step is not copy. It is whether a crawler can keep a stable product URL. A wp-admin preview is not a fetch.
Outcome A dated map of live product and shop URL patterns, including leaks.
We name the unique blocks merchandising can keep on product and category templates. Specs you sell. Fit. Materials. Care. Not a keyword paragraph above a grid. Keyword targeting is one job per money template. Keyword density in the short description is not a Woo score. Variations get a written rule: parent page, or a real buying URL.
Outcome Template blocks merchandising can maintain, plus a variation rule.
We list plugins that emit URLs, robots, canonicals, or JSON-LD. Woo core already prints product facts. An SEO plugin may add a second Product graph. We pick one speaker. Topical relevance is not a reason to let a filter plugin publish every combination. We will not write a Yoast versus Rank Math essay. We will say which plugin may speak.
Outcome A plugin list that says what may publish URLs, and what must stop.
We write yes or no for the shop page, product categories, tags, and attributes. Semantic keywords belong only when they are still the same shopping job. Internal search and sort parameters stay tools. Coverage on the yes list is the watch. A ranking report for every tag is not.
Outcome An archive list the navigation and filters can follow.
Deliverables
You leave with a path map, a variation rule, a plugin speaker, and an archive yes-or-no list. You do not leave with a Shopify theme pass, a Magento rewrite, or a ranking date.
Product, shop, category, attachment, and leftover parameter URLs you actually publish. Dated. A screenshot from last season is not this map.
When a variation is its own page, and when it stays on the parent. Indexing every SKU Woo can generate is not a rule.
Which system may print Product JSON-LD. Woo core, Yoast, Rank Math, or another add-on. Two graphs on one path are named and stopped.
Shop page, categories, tags, and attributes. Navigation should match. A tag that exists only to complete a box in wp-admin is named.
Paths that already moved, plus the redirect that should have shipped the same week. A title tidy is not a reason to skip the log.
Benefits
Each has a job, or one is closed. Shoppers and crawlers stop landing on two empty grids.
Editors can rewrite a heading. The URL stays. When a slug must move, the redirect ships in the same week.
Woo and the SEO plugin stop arguing. Extractors get one name, one price, one stock state.
Attachment pages leave the product index. Crawl goes back to the page that can sell.
Methodology
This works when one person can freeze Permalinks, and one person can refuse a new plugin. If both are missing, we are browsing the plugin directory. We are not holding a shop.
We start with the products that must work this month, the plugins already on, and the person who can edit a slug. If any of those is missing, we name it first. We do not spend the week touring other SEO specialties.
We fetch published HTML. We do not trust the editor while you are logged in. Does this category match a real assortment people search for? Is an attribute archive worth keeping, or should it stay noindex?
You may rename the roles below. You may not leave plugin installs implied. An implied FacetWP or layered-nav setting is how a shop grows tens of thousands of thin URLs overnight.
First working session
The first hour is the last slug change, the last plugin, and what Search Console already shows. It is not a tour of the WordPress plugin directory.
We ask which products and categories have to work now. Index everything Woo made is not an answer until those templates are listed. If two live categories share one unique paragraph, we merge or rewrite before we touch titles. If the real question is catalog classes that would be true off WordPress, that is ecommerce SEO. If the store is mid-cutover, that is migration SEO.
Then we fetch published HTML, robots, and a sample of plugin URLs. We compare that to coverage and to the last permalink change. The gap is usually the job. A Gutenberg layout that looks finished while you are logged in is not evidence.
We leave with a first list or a stop. A list names the template, the plugin, and who may install the next one. A stop names what is missing: wp-admin, a merch owner, or a store that is actually moving platforms. Both are outcomes. A pile of SEO plugin names is not.
AI search
Clean product HTML can help later extraction. This page cannot sell AI Overviews, a shopping-chat mention, or LLM visibility as a score.
People ask whether Yoast Woo, Rank Math, or another add-on will land products in Google AI Overviews (AIO). If the product body is manufacturer paste, or if attribute archives have exploded, generative search has nothing honest to lift, or too many near copies. That is ours to tidy. If the shop already tells the truth and models still invent SKUs you do not sell, that is an AI search audit. A program across search UIs is AI SEO.
AI search needs a page it can fetch. A custom field the template never prints does not help. We do not sell Overview presence.
We check brand and product names in the published HTML. That is entity optimization as a shop input. It is not a Knowledge Graph project from this page.
LLM visibility needs a sentence a model can quote, then measurement on LLM SEO. Unique product HTML can make a SKU look real. It does not sample answers. Extra synonyms in a category intro are not that work.
Schema
JSON-LD helps a machine read a product the page already states. This work stops Woo and an SEO plugin from injecting two blocks. It is not a schema campaign as the whole job.
If WooCommerce and an SEO plugin both inject Product markup, we pick one. Valid types still need facts that match the HTML you publish.
We refuse FAQ blocks that exist only to host more terms. A real fit or care question can live on the product template. Stuffing is not a module.
Markup will not force generative search to cite the SKU. A paid Shopping placement is a different job. Eligibility is not a purchased mention.
Who we work with
Someone has to refuse the next URL generator. We work with that person. We do not replace them with a second WordPress retainer.
Ships slugs, templates, and plugin settings. Rechecks after a theme update. They print the unique spec. They do not need to become writers overnight.
Names real categories and whether a product slug may move. Holds the archive list when a campaign wants every attribute indexed.
Can keep going once URL generators are honest. If they try to run this as Merchant Center only, two jobs collide. Paid Shopping still belongs on shopping ads.
Questions
No. The shop page is a WordPress page that lists products. A product category is a taxonomy archive. They can share a heading and fight. We give each one a job, or we close one. Mixing them is how both stay thin.
No. A category people actually shop can be a page. A color or size archive that only repeats the grid usually should not. Tags that exist to fill a box in wp-admin are not documents. We write a yes or no list. We do not index every term Woo can make.
That move can rewrite every product path at once. Ads, reviews, and old links still hit the old slug. Do not do it to tidy a title. If it already happened, we need the old pattern, the new pattern, and redirects in the same week. Waiting a month is how Shopping ads land on 404s.
Only when the variation is a real buying page with its own facts. A swatch that changes a photo on the parent should not compete with that parent. Woo can expose variation links. That does not mean each one should index. We write the rule from the catalog, not from a slogan to index every SKU.
No. Yoast, Rank Math, or a schema add-on cannot buy a place in Google AI Overviews (AIO). Honest product HTML can help AI search later. It does not sell a generative-search mention or an LLM visibility score. If the shop already tells the truth and a model still invents a SKU you do not sell, that work sits on an AI search audit and on LLM SEO.
After the last slug change
Send the shop URL, a wp-admin login we can use, and the last plugin that went live. We will say if the leak is attachment URLs, a filter archive, a slug that moved, or a second Product graph. Then we name the next edit.
Slugs held. Archives chosen. One schema speaker.