Technical SEO Checklist for Thai Ecommerce: Crawl, Canonical, Schema & Speed
A practical technical SEO checklist for Thai ecommerce sites — crawlability, canonical tags, structured data, Core Web Vitals, hreflang, and the platform-specific traps in Magento, Shopify and WooCommerce.
BangkokSync8 min read
Most SEO advice a store owner reads starts with keywords and content — write more, write better, target the right terms. That's real work, but it sits on top of a technical foundation that either lets Google find, crawl and understand a site properly, or quietly caps how well any of that content can ever rank. A well-written product page Google can't crawl properly ranks nowhere at all — and for an ecommerce site specifically, that's not just a ranking problem. It means product pages don't get indexed, the same product shows up as several competing URLs, price and stock never make it into the search result, and Google spends its crawl budget on filter pages that were never going to rank instead of the product pages that actually could.
Crawlability comes before content
Google can only rank what it can find and read. That starts with a clean
robots.txt that isn't accidentally blocking category or product pages, an
XML sitemap that's actually submitted in Search Console and kept current as
products change, and an internal link structure where every important page
is reachable in a few clicks from the homepage — not buried four filters
deep with no other page linking to it. Faceted navigation is the classic
ecommerce trap here: filter combinations can generate thousands of
near-duplicate URLs that waste crawl budget on pages that will never rank
for anything, at the expense of the pages that actually could.
Check Google's own view of the site directly. Search Console's URL Inspection tool will tell you, for any given product page, whether Google has actually indexed it and why not if it hasn't — the single fastest way to confirm crawlability is real rather than assumed. Coverage reports there also surface pages Google has quietly stopped bothering to crawl, which is usually the first sign of a crawl-budget problem before it shows up anywhere else.
Product variant URLs need one clear owner
A single product with size and colour options can easily produce a dozen URLs — one per variant combination — depending on how the platform's theme handles selection state in the URL. If each variant is a fully separate, indexable URL with near-identical content, that's the same self-competition problem as faceted navigation, just at the product level instead of the category level. The fix is usually a canonical tag pointing every variant back to one parent product URL, with the variant selector handled in the UI rather than as a series of separate crawlable pages — though for a product where each variant genuinely has distinct enough demand (different search volume, different intent), a properly differentiated indexable page can be the right call instead. The distinction matters, and getting it backwards either way costs rankings.
Canonical tags stop you competing with yourself
Filtered category views and tracking-parameter URLs cause the same problem as variants: multiple versions of what's functionally the same page, splitting ranking signal across several URLs instead of consolidating it onto one. This is one of the most common technical issues we find auditing an existing ecommerce SEO setup, and one of the cheapest to fix once it's actually diagnosed.
Structured data earns the result that gets clicked
Schema markup — Product, Offer, Review, BreadcrumbList — doesn't move rankings directly, but it's what lets a listing show price, star rating and availability directly in the search result instead of a plain blue link. Two results ranking in the same position don't get the same click-through rate if one shows "฿890 · ★4.6 · In stock" and the other doesn't. For a platform-built store, this is often close to free: Shopify, Magento and WooCommerce can all generate most of this automatically once it's configured correctly, which is also exactly where a lot of default themes quietly get it wrong.
Out-of-stock and discontinued products need a real policy, not silence
An out-of-stock product left live with Product schema still claiming
InStock is a real ranking and trust problem — Google and shoppers both
end up on a page promising something the store can't actually sell. The
better pattern: keep the page live and indexed with OutOfStock
availability if restock is likely, since the page has already earned
ranking signal that a 404 would throw away. For a genuinely discontinued
product, a 301 redirect to the closest matching current product or category
— not a blanket redirect to the homepage — preserves whatever ranking
equity that URL built up instead of sending both Google and the customer to
a dead end.
Speed is a ranking factor and a technical SEO problem
Core Web Vitals — how fast a page loads, how quickly it becomes usable, and how much its layout shifts while loading — factor directly into ranking, on top of the conversion impact speed already has on its own. Image weight, render-blocking scripts and third-party tags (a marketing pixel here, a chat widget there, a review plugin on top) are the usual culprits on a Thai ecommerce site specifically, because mobile traffic on ordinary 4G punishes page weight far harder than an office wifi connection ever surfaces in testing. Every analytics, chat and marketing script a store adds is worth auditing for its actual page-weight cost — it's common to find three or four tracking scripts stacked on a product page, each added by a different person for a different campaign, with nobody ever removing the ones that stopped being used.
Pagination and category SEO
A category with 300 products spread across pagination needs rel="next"/
rel="prev" signalling handled correctly — or, on platforms that no longer
rely on that, a clear canonical strategy so page 2 of a category isn't
competing with page 1 for the same keyword. The more common mistake is
simpler: a "view all" version of a large category that's slow enough to
hurt Core Web Vitals, traded against paginated versions that are fast but
fragment the category's ranking signal across several thin pages. Neither
extreme is right by default — it depends on catalogue size and how the
platform actually renders that many products at once.
The platform-specific traps
The three platforms most Thai ecommerce sites run on each get technical SEO wrong in slightly different, predictable ways:
- Magento generates layered-navigation URLs prolifically by default —
the faceted-navigation crawl-budget problem above is close to guaranteed
on an out-of-the-box Magento catalogue unless canonical tags and
robots.txtrules are deliberately configured for it. - Shopify handles a lot of this well by default, but its URL structure
is fixed (
/products/,/collections/) and its native pagination and variant handling leave less room to intervene directly — most fixes here happen through app configuration and theme edits rather than server-level rules. - WooCommerce inherits WordPress's flexibility and its risk: plugin stacking is the usual culprit, with an SEO plugin, a caching plugin and a page-builder each quietly fighting over canonical tags or sitemap output unless someone checks that they agree with each other.
Thai-language SEO has its own technical layer
hreflang tags matter more than most Thai stores realise once a site runs
Thai and English versions of the same pages — done wrong, Google can index
the wrong language version for a given market, or treat both as duplicate
content competing against each other instead of two versions correctly
served to two audiences. URL structure matters too: Thai-language slugs,
consistent locale prefixes, and a sitemap that clearly separates the two
language versions all make it easier for Google to serve the right page to
the right searcher.
What to actually check first
A practical starting order, roughly in the sequence that tends to surface the highest-impact issues first:
- Confirm Google can crawl and index the pages that matter — check
robots.txt, submit and monitor the sitemap in Search Console, use URL Inspection on a sample of product pages, and look for pages accidentally markednoindex. - Fix duplicate content with canonical tags — variants, filtered category views, and tracking parameters — before touching anything else. This is usually the single highest-leverage technical fix on an existing store.
- Add structured data to product and category pages, and set a real policy for out-of-stock and discontinued products instead of leaving them to rot or 404.
- Audit Core Web Vitals on real mobile devices on real Thai mobile networks, and count how many third-party scripts are actually running on a typical product page.
- Check
hreflangimplementation if the site runs Thai and English versions, since this is the technical layer that's easiest to get subtly wrong and hardest to notice without checking directly. - Review pagination and platform-specific defaults — Magento's layered navigation, Shopify's fixed URL structure, or WooCommerce's plugin stack — against what's actually happening on the live site, not what the platform's documentation assumes.
None of this replaces good content or a real keyword strategy. It's the foundation that decides whether that content and strategy get a fair chance to rank at all — which is why it's usually the first thing worth auditing, not the last.



