Philippine online retail does not fail SEO because the products are bad. It fails because the catalogue cannot decide which URL owns the query. Head terms such as "running shoes", "office chair" or "air fryer" belong on a category. A specific SKU belongs on a product URL. Faceted filters, tags and search-result URLs belong out of the index unless they are a real, demand-backed category. Mix those roles and Google will pick a random variant, a page-2 filter, or a competitor who made the choice on purpose.
We work this problem on Shopify, WooCommerce, Magento, BigCommerce and custom stacks. The platform changes the bugs. The decision does not. Category architecture first, then product templates, then the long tail that only a SKU can win. That order is also how revenue shows up, because the searches with volume and buying intent in this market are usually category searches, not 12-digit SKUs.
How Philippine Shoppers Actually Search
Search here is bilingual in practice even when the interface is English. People mix English product names with Filipino modifiers: price, sale, free shipping, original, authentic, Manila, Cebu, COD, same-day. Brand plus model sits next to generic category terms. Mobile is the default. Many sessions start on Google, hop to a marketplace tab, and come back if the brand site looks cheaper, faster or more trustworthy.
That mix changes the URL plan. A category has to rank for the generic term and still make sense for "sale" and "COD" questions without becoming a coupon farm. A product URL has to rank for the model, the variant, and the "original" or authenticity queries that marketplaces have trained people to ask. Trying to make one product URL rank for the whole category is how you bury the grid that can actually convert a browser who has not chosen a SKU yet.
Metro Manila demand is not the whole country. Shipping promises, warehouse location, and payment methods change whether a click is useful. A category that cannot say where you ship, whether cash on delivery exists, and how returns work will lose to a marketplace listing that answers those in the snippet. We put those facts on the category and the product template, not in a shipping FAQ that no ranking URL links to.
Seasonality is sharp: 11.11, 12.12, payday weekends, back-to-school, Christmas. Ranking a category in October is how you take December demand. Rewriting product titles the week of a sale is how you lose the history you needed. We plan the category copy and internal links before the sale calendar, not during it.
Categories Own The Head Terms
Category and collection URLs carry the commercial head terms. They deserve the first attention: a crawlable path from the homepage, a unique H1, copy that helps a buyer choose, a product grid that is not pushed below a novel, pagination that does not spawn duplicates, and internal links to child categories and the SKUs that should win.
Copy on a category is there to rank and to sort. Materials, sizes, use cases, price bands, and who the range is for. It should not bury the products. A 2,000-word essay above the fold on mobile is a conversion bug. A 40-word unique sentence and a manufacturer dump is a ranking bug. The useful middle is a short decision block, then the grid, then supporting detail and FAQs the SERP actually asks.
Child categories exist when demand exists. "Women's running shoes" is a category if people search it and you have the stock. "Red women's running shoes size 7 on sale" is a filter. We only mint a category when we can keep it in stock, unique, and linked. Empty categories are dead weight. Thin auto-generated collections from every tag are how Philippine WooCommerce stores drown.
Pagination, sort, and "view all" need a rule. Canonicals should point at the main category, not at page 2. Page 2 can be indexed if it is a real continuation and internally linked. Sort orders should not be indexed. We would rather have one strong category than twenty sorted copies fighting it.
That is the job described in ecommerce category pages that can rank: architecture, internal links, on-page copy that helps buyers, and clean pagination. Product work comes after the category can carry the head term.
Products Own The Long Tail
Once a shopper knows the model, the product URL should win. Unique titles with the brand, the model, and the attribute people search. Descriptions that are not the manufacturer paragraph every other seller pasted. Variant handling that does not create three indexed colours of the same dead page. Image filenames and alt text that name the product. Reviews and stock status that match reality.
Variants are the usual disaster. Colour and size as separate indexed URLs will split reviews and rankings. Colour as a selectable variant on one URL is usually cleaner. If a colour is a different product in the shopper's mind and has its own search volume, it can have its own URL, with a canonical plan you can explain. Accidental duplicates from "?variant=" or tag URLs should not be in the index.
Out of stock is a policy, not an afterthought. For a SKU you will replenish, keep the URL, show availability, and offer a related in-stock product. For a SKU you have killed, 301 to the parent category or the replacement, do not 404 a URL that had reviews. Philippine shoppers who land on a dead product and see no COD or no shipping estimate will not wait for a restock email.
Product schema belongs on product URLs: name, price, currency, availability, brand, SKU, and reviews when they are visible. Putting Product markup on a category because a plugin offered it is noise. Category markup and breadcrumb markup help the path. They do not replace a clean H1.
Facets, Tags And Search Urls
Faceted navigation is where ecommerce SEO in this market quietly dies. A filter for brand, size, price and colour can create thousands of URLs that look unique to a crawler and identical to a buyer. WooCommerce especially will index filtered and tagged paths if you let it. Shopify collections plus tags can do the same. Magento layered navigation is a classic crawl trap.
The rule is simple. If the combination is a real search people use and you will merchandize it, make it a category and link it. If it is a convenience filter, noindex it, canonical it back, or keep it behind parameters Google is told to ignore. Search-result URLs inside the site ("/search?q=") should not compete with categories.
Internal search logs are a gift. They tell you which filters deserve to become categories. If hundreds of people search "waterproof hiking bag" and you only have that as a filter on Bags, you are hiding a head term on a noindex URL. Promote it. If nobody searches "blue waterproof hiking bag under 1000 pesos except this one SKU", leave it as a filter.
Marketplace Gravity And Why The Site Still Matters
Shopee and Lazada will win a lot of generic product queries in the Philippines. That is not an argument for abandoning the brand site. It is an argument for being specific. Categories that explain a range, size guides, warranty, authenticity, spare parts, and bundled extras are work a marketplace listing will not do well. Product URLs that own the model plus "official" or "authorized" queries are how you steal back the shopper who does not want a grey import.
We do not pretend organic will beat a marketplace ad on every head term. We do measure whether the category URLs win the research query, whether the product URLs win the model query, and whether those sessions add to cart. Published store work we already show in public is Search Console growth on brand sites, not a claim that marketplaces disappeared.
International storefronts add hreflang and shipping reality. A .ph catalogue that ranks in the UK by accident is not a win. Country sites need their own categories, prices and availability. Copying a US collection URL and swapping currency is how you create duplicate clusters.
Technical Order Of Work
Ecommerce SEO starts on the template, because one fix multiplies. Index bloat from filters and tags. Duplicate variants. Thin or empty categories. Broken canonical logic. Slow category templates that hurt Core Web Vitals on mobile. Missing product schema. Internal links that bury money categories under blog posts.
We map demand first so effort lands on the URLs that can take revenue. That means a crawl, a Search Console page report, and a list of categories that already attract impressions but do not convert, products that rank for the category term and should not, and filters that are in the index by accident. Then we change robots, canonicals, templates and copy in that order. Rewriting SKU copy while page 2 of a filter is indexed is backwards.
Measurement has to follow the URL type. Category clicks and revenue. Product clicks and revenue. Branded versus non-branded. Device, because mobile grids hide copy that desktop reports still celebrate. Add-to-cart and purchase events, or we will not call traffic a win. Where tracking is missing, we say the reporting is incomplete.
What We Need From The Catalogue
If the store cannot say which categories are real, which SKUs are going away, and which filters are allowed to exist, we will spend the first month just stopping the index from rotting. Send a crawl if you have one. Send Search Console. Send the collection list you actually merchandize.
The decision you want from us is not "do we do ecommerce SEO". It is which URL owns which query in this market. Categories for the head commercial terms. Products for the models and the long tail. Filters out of the way. When that split is clean, copy and links have somewhere to sit.
If the catalogue is already live and organic revenue is flat, send the storefront and the categories you care about. We will tell you whether the head terms are landing on a collection, a random SKU, or a filter Google should never have seen.