Panduan Ecommerce SEO Audit

Bagaimana I audit sebuah online store — dan mengapa I mulai dengan Google Search Console dan crawl data, tidak pada-halaman tweaks. sebuah prioritized, scale-pertama ecommerce SEO audit kerangka kerja: crawlability, pengindeksan, duplicate konten, pada-halaman di scale, teknis, data terstruktur, tautan internal, out-dari-stock menangani, dan off-halaman — sorted oleh impact dan effort.

Pertama kali diterbitkan: 25 Jun 2026 · Terakhir diperbarui: 8 Agu 2026 · Advanced
Bahasa

sebuah ecommerce SEO audit tidak sebuah 500-poin checklist — ini adalah berfungsi dari finding kecil set dari issues holding sebuah store's rankings dan revenue back, lalu prioritizing them oleh impact dan effort. Karena ecommerce situs hit masalah di scale, I mulai audit di Google Search Console ( halaman pengindeksan report) dan crawl data, tidak pada-halaman tweaks: biggest wins adalah biasanya crawling dan pengindeksan issues affecting thousands dari URLs di setelah. Duplicate konten dari facets, collections, dan variants adalah #1 ecommerce-spesifik issue audits uncover; thin category halaman adalah #2. goal adalah untuk perbaiki stuff itu penting sebagian besar dan skip busywork.

TL;DR — I audit sebuah store di roughly ini order: crawlability → pengindeksan → duplicate konten → pada-halaman di scale → teknis (CWV, HTTPS, canonicals) → data terstruktur → tautan internal → out-dari-stock menangani → off-halaman. I mulai di GSC halaman pengindeksan report dan sebuah fresh crawl, not pada-halaman, karena pada sebuah store highest-leverage masalah hit thousands dari URLs di setelah: faceted-nav duplication, accidental sitewide noindex, “Discovered – currently not indexed” (terjemahan) “ditemukan – saat ini tidak terindeks” di scale, sitemaps penuh dari redirects. deliverable adalah sebuah prioritized impact/effort list, tidak sebuah 500-poin report. sebagian besar stores tidak pernah perlu untuk worry tentang anggaran crawling — tetapi ones itu melakukan really melakukan.

Evidence for this claim Search Console's Page indexing report identifies indexed and non-indexed URLs and groups reasons pages are not indexed. Scope: Google Search Console audit data. Confidence: high · Verified: Search Console Help: Page indexing report Evidence for this claim Google's Rich Results Test and product structured-data requirements can be used to validate product markup eligibility. Scope: Google product structured-data validation. Confidence: high · Verified: Google Search Central: Product structured data

Audit philosophy: client-pertama, tidak issue-pertama

sebuah crawler akan hand Anda 170+ issue jenis. jika Anda dump semua dari them ke sebuah report, Anda’ve produced sebuah document, tidak sebuah audit. job adalah untuk temukan handful itu move rankings dan revenue dan ignore rest.

starting poin tidak alat — ini adalah pain. sebagai I’ve put ini sebelum: “Jika clients adalah coming untuk Anda asking untuk an audit, they sudah memiliki a pain point. Talk untuk them. Solve itu satu hal dan they’ll menjadi happy dengan itu audit.” (terjemahan) “jika clients adalah coming untuk Anda asking untuk sebuah audit, mereka sudah memiliki sebuah pain poin. Talk untuk them. Solve itu satu hal dan mereka’ll menjadi happy dengan audit.” pada sebuah store pain adalah biasanya concrete: traffic dropped, sebuah category berhenti peringkat, sebuah migration went sideways, baru products tidak getting terindeks. Anchor audit untuk itu, lalu expand.

dan know ketika untuk berhenti. dari kami study dari di atas sebuah million domains: “Sometimes, itu best course dari action adalah untuk lakukan tidak ada apa pun karena itu costs outweigh itu benefits.” (terjemahan) “Sometimes, best course dari tindakan adalah untuk melakukan tidak ada apa pun karena costs outweigh benefits.” Tidak setiap flagged issue adalah worth sebuah developer ticket.

Mengapa I mulai dengan Search Console dan crawl data, tidak pada-halaman

instinct untuk open audit dengan tag judul dan heading adalah paling umum mistake I see. pada sebuah ecommerce situs math adalah terhadap ini: tweaking sebuah judul helps satu halaman; memperbaiki sebuah pengindeksan pattern helps thousands. ** biggest wins pada sebuah store adalah hampir selalu crawling dan pengindeksan masalah di scale**, dan stakes adalah highest persis di sini — “one mistake can keep millions of pages out of the index or remove an entire site from search results.” (terjemahan) “satu mistake dapat pertahankan millions dari halaman out dari indeks atau hapus sebuah entire situs dari hasil pencarian.”

So audit berjalan di priority order, top untuk bottom. Di sini’s seluruh hal.


langkah 1 — Crawlability

dapat bot reach apa penting, dan adalah mereka wasting mereka time pada apa tidak?

** ecommerce-spesifik traps:**

  • Faceted navigation URL explosion. Filters (color, size, price range) combine ke thousands dari unique URLs. Google adalah candid tentang cost: “itu crawlers akan typically access a very large number dari faceted navigation URLs sebelum itu crawlers’ memproses determine itu URLs adalah di fact useless.” (terjemahan) “ crawler akan typically access sebuah very besar angka dari faceted navigation URLs sebelum crawler’ memproses determine URLs adalah di fact useless.”
  • Parameter variants — session IDs, tracking codes (?utm_source=), sort orders — multiply yang sama konten di seluruh URLs.
  • crawl traps — internal hasil pencarian, infinite calendars, unbounded filter stacking.
  • robots.txt di atas- atau di bawah-blocking — accidentally blocking CSS/JS needed untuk render, atau sebuah valid product path; atau failing untuk block sebuah junk parameter space.
  • JS-gated navigation. Google ingin nyata tautan: “use <a href> tags when creating links to other content. Don’t use JavaScript events on other HTML DOM elements for navigation.” (terjemahan) “Gunakan tag <a href> saat membuat tautan ke konten lain. Jangan gunakan event JavaScript pada elemen DOM HTML lain untuk navigasi.”

Audit langkah:

  • Fetch dan baca robots.txt; konfirmasi tidak ada apa pun penting adalah disallowed dan itu rendah-nilai parameter spaces are.
  • di crawler, pull “Blocked by robots.txt” (terjemahan) “Blocked oleh robots.txt” — apa pun penting halaman caught?
  • GSC Statistik Crawling: cari spikes di di-crawl URLs terhadap sebuah flat terindeks count — itu kesenjangan adalah crawl waste.
  • Export semua di-crawl URLs dan cluster oleh path/parameter pattern untuk size faceted/parameter masalah.

pada anggaran crawling — de-escalate pertama. sebagian besar stores jangan memiliki sebuah crawl-budget masalah, dan I’ll say so di audit alih-alih invent satu: “Most sites don’t need to worry about crawl budget, but there are few cases where you may want to take a look.” (terjemahan) “sebagian besar situs jangan perlu untuk worry tentang anggaran crawling, tetapi ada sedikit cases di mana Anda dapat ingin untuk take sebuah look.” ini becomes nyata sekitar Google’s thresholds — “Large sites (1 million+ unique pages)…” (terjemahan) “besar situs (1 million+ unique halaman)…” mengubah weekly, atau 10 000+ halaman mengubah daily — atau ketika “Discovered – currently not indexed” (terjemahan) “ditemukan – saat ini tidak terindeks” adalah besar. Ketika ini is nyata, Anda perbaiki ini oleh menghapus waste, tidak oleh asking Google untuk crawl lebih. (Deep dive: anggaran crawling.)

langkah 2 — pengindeksan

dapat di-crawl tidak terindeks. GSC halaman pengindeksan report adalah center dari gravity untuk seluruh audit — “see which pages Google can find and index on your site, and learn about any indexing problems encountered.” (terjemahan) “see yang halaman Google dapat temukan dan indeks pada Anda situs, dan learn tentang apa pun pengindeksan masalah encountered.”

** statuses itu penting sebagian besar pada sebuah store:**

  • Duplicate tanpa pengguna-dipilih canonical / Google chose sebuah berbeda canonical — faceted/variant duplication masalah, dibuat terlihat.
  • di-crawl – saat ini tidak terindeks — biasanya thin product atau near-duplicate filter halaman.
  • ditemukan – saat ini tidak terindeks — Google knows URL tetapi hasn’t di-crawl ini; pada besar catalogs ini adalah sebuah crawl-priority sinyal.
  • URL marked ‘noindex’ — verify ini adalah intentional. accidental sitewide versi adalah “satu mistake” (terjemahan) “satu mistake” scenario.
  • soft 404 — sebuah 200 respons pada sebuah halaman itu’s effectively empty (out-dari-stock, zero-hasil penelusuran). Google warns ini “akan continue untuk menjadi crawled, dan waste Anda budget.” (terjemahan) “akan continue untuk menjadi di-crawl, dan waste Anda budget.”

Audit langkah:

  • Export “Tidak indexed” (terjemahan) “Tidak terindeks” URLs oleh alasan; quantify setiap bucket.
  • Bandingkan GSC terindeks count terhadap Anda known catalog size — sebuah besar kesenjangan berarti Google tidak finding halaman.
  • Jalankan pemeriksaan URL pada sebuah sample dari setiap alasan bucket.
  • Audit sitemap XML: ini seharusnya list hanya canonical, dapat diindeks, 200-status URLs. Redirected, noindexed, atau canonicalized-away URLs di sebuah sitemap kirim conflicting sinyal — pull them.

langkah 3 — Duplicate konten ( #1 ecommerce issue)

ini adalah single sebagian besar umum hal sebuah ecommerce audit uncovers, dan ini adalah worth -nya own langkah. Google’s Gary Illyes memiliki estimated itu roughly 60% dari internet adalah duplicate konten — dan stores adalah overrepresented.

Di mana ini muncul dari:

  • Faceted navigation?color=blue, ?size=S&color=blue, ?size=S&color=blue&sort=price semua sajikan near-identical konten.
  • Parameter-order permutations?color=blue&size=S dan ?size=S&color=blue adalah yang sama halaman twice.
  • Product variants sebagai terpisah URLs?variant=… tanpa sebuah self-referencing canonical atau sebuah canonical untuk parent.
  • sebuah product living di bawah multiple category paths, keduanya dapat diindeks.
  • HTTP/HTTPS, www/non-www, trailing-slash inconsistency itu tidak 301 untuk satu canonical.

** Shopify gotcha worth calling out oleh name.** Shopify does canonicalize /collections/{collection}/products/{product} untuk bersih /products/{product} URL — so orang assume ini adalah handled. ini tidak fully: tautan internal from collection pages masih poin di non-canonical /collections/... versi, so canonical product URL menerima Tidak internal tautan equity melalui wajar navigation, dan ini dapat tampilkan up sebagai sebuah orphan. Memperbaiki: tambahkan sebuah “All products” (terjemahan) “semua products” halaman itu tautan canonical /products/ URLs, atau edit collection templates untuk tautan canonical URL secara langsung.

Audit langkah:

  • GSC: pull keduanya “Duplicate” (terjemahan) “Duplicate” buckets dari halaman pengindeksan.
  • crawler konten Quality / duplicate-cluster report: temukan clusters dengan Tidak canonical specified.
  • Konfirmasi faceted parameter URLs adalah handled — Google’s recommended prevention adalah robots.txt blocking dari filter parameters, atau fragment-based (#) filtering, yang “akan memiliki Tidak impact pada crawling.” (terjemahan) “akan memiliki Tidak impact pada crawling.” jangan reach untuk noindex di sini (see Myths).
  • Spot-periksa bahwa Shopify /collections/*/products/* URLs canonicalize untuk /products/* — dan itu sesuatu tautan canonical versi.

(Background: duplicate konten dan canonicalization.)

langkah 4 — pada-halaman di scale

pada sebuah store, pada-halaman adalah sebuah templating masalah, tidak sebuah copywriting satu — Anda’re auditing patterns, tidak halaman.

** recurring issues:**

  • Thin category halaman ( #2 ecommerce issue). John Mueller adalah direct tentang ini: “Ketika itu ecommerce category halaman jangan memiliki any other konten di all, other daripada links untuk itu products, lalu ini benar-benar hard untuk us untuk rank itu halaman.” (terjemahan) “Ketika ecommerce category halaman jangan memiliki apa pun lainnya konten di semua, lainnya daripada tautan untuk products, lalu ini adalah benar-benar hard untuk us untuk peringkat itu halaman.” tetapi jangan overcorrect ke sebuah wall dari text — “maybe 90%, 95% dari itu text adalah unnecessary,” (terjemahan) “maybe 90%, 95% dari itu text adalah unnecessary,” dan “our algorithms sometimes get confused when they have a list of products on top and essentially a giant article on the bottom.” (terjemahan) “kami algorithms sometimes mendapatkan confused ketika mereka memiliki sebuah list dari products pada top dan essentially sebuah giant artikel pada bottom.” target adalah sebuah pendek, berguna block (sourcing, materials, sizing, popularity) near top — tidak filler itu buries grid.
  • Templated judul collisionsBuy {Product} | Store patterns itu go near-identical di seluruh products, atau dua products sharing sebuah name.
  • Missing/empty H1s dan judul di template tingkat.
  • deskripsi meta — worth melakukan pada Anda top category dan product halaman, lebih sedikit worth ini pada panjang tail (Google rewrites them sebagian besar dari time anyway).

Audit langkah:

  • crawler pada-halaman report: filter untuk missing judul, missing H1, missing meta deskripsi, duplicate judul, duplicate H1s.
  • Flag category halaman dengan little untuk Tidak unique body copy (thin-konten candidates) dan cross-reference terhadap “Crawled – currently not indexed.” (terjemahan) “di-crawl – saat ini tidak terindeks.”
  • Export judul dan periksa untuk template collisions.

sebuah note pada apa not untuk spend audit time pada: multiple H1s. mereka’re valid HTML5 dan near-irrelevant untuk peringkat — 51,3% dari situs memiliki them di suatu tempat, per my own million-domain study. Skip ini.

langkah 5 — Teknis (CWV, HTTPS, canonicals, mobile)

Core Web Vitals. Google’s passing thresholds: LCP < 2,5s, INP < 200ms, CLS < 0,1. Ecommerce failure modes adalah predictable — unoptimized hero images dan ketiga-party scripts (chat, sebuah/B, pixels) hurt LCP; tambahkan-untuk-cart dan checkout JS hurt INP; images tanpa jelas dimensions dan injected promo bars hurt CLS. Audit oleh URL group di GSC CWV report so Anda dapat see apakah ini adalah product, category, atau checkout templates failing, lalu konfirmasi pada representative templates di PageSpeed Insights. (See Core Web Vitals.)

HTTPS. Semuanya — product, cart, checkout — pada HTTPS, Tidak mixed konten (HTTP images/resources pada HTTPS halaman), dan canonicals/redirects pointing di HTTPS versi.

Canonicals. umum ecommerce errors: canonicals pointing di 4XX halaman; non-canonical URLs di sitemap; paginated halaman canonicalized untuk halaman satu (jangan); dan — tenang satu — tautan internal pointing di non-canonical versi so canonical tidak pernah accumulates tautan equity. Multiple rel=canonical tags pada satu halaman mendapatkan ignored.

Mobile-pertama. Google indeks mobile versi. pastikan mobile product halaman tidak sebuah stripped-down satu missing deskripsi, data terstruktur, atau penuh-size images.

Mentah versus dirender product evidence. pada representative PDPs, save awal HTML dan sebuah dirender capture setelah sebuah fresh navigation. melakukan tidak treat resizing sebuah sudah-dimuat desktop halaman sebagai sebuah mobile-rendering test. mentah respons seharusnya expose core product identity, dipilih/default SKU dan attributes, price, currency, availability, dapat di-crawl variant tautan di mana diperlukan, dan matching Product/Offer data. lalu bandingkan dirender DOM dan terlihat selection. Google dapat render JavaScript, tetapi lainnya crawler dan agents vary; sebuah successful render juga melakukan tidak cure contradictory product facts.

untuk setiap sampled variant, continue perbandingan melalui feed, cart, dan checkout. URL, terlihat PDP, dirender JSON-LD, feed item, dan transaction seharusnya agree pada product identity, SKU, group ID, dipilih attributes, price, currency, dan availability. Record intentional location- atau customer-spesifik revalidation secara terpisah dari unexplained mismatches. See Product halaman SEO untuk mentah/dirender boundary dan Product Variant SEO untuk penuh dipilih-offer contract.

langkah 6 — data terstruktur

untuk sebuah store, priority jenis adalah Product / ProductGroup, BreadcrumbList, Organization (dengan kembalikan policy), dan Review / AggregateRating. menambahkan lebih valid properties widens eligibility — Google: “adding the more properties you can add, the more enhancements your page can be eligible for.” (terjemahan) “menambahkan lebih properties Anda dapat tambahkan, lebih enhancements Anda halaman dapat menjadi eligible untuk.” ( satu myth untuk pertahankan di Anda head: schema membuat Anda eligible untuk rich hasil; ini tidak membuat Anda peringkat.)

Audit langkah:

  • Jalankan Rich hasil Test pada sebuah representative product dan category halaman.
  • GSC Enhancements: periksa Product Snippets dan Merchant Listings untuk errors/warnings.
  • periksa diperlukan vs. recommended secara terpisah per fitur — jangan collapse them. untuk merchant listings, Google’s diperlukan set adalah name, image, dan offers (sebuah Offer, dengan price, priceCurrency, dan availability). untuk product snippets, name adalah diperlukan dan Anda perlu setidaknya satu dari review, aggregateRating, atau offers untuk menjadi eligible — Google lists aggregateRating, offers, dan review sebagai recommended, tidak diperlukan, pada itu fitur.
  • umum faults: missing image, missing offers, missing availability, schema prices itu jangan match terlihat price (sebuah policy violation), breadcrumb schema itu tidak match terlihat trail.

langkah 7 — Internal linking

** issues:** orphan product halaman (classic Shopify symptom, di atas); penting category/product halaman buried 5+ clicks deep; tautan internal pointing di redirects atau 404s; best sellers tidak ditautkan dari tinggi-authority hubs. Google: “add links from menus to category pages, from category pages to sub-category pages, and finally from sub-category pages to all product pages.” (terjemahan) “tambahkan tautan dari menus untuk category halaman, dari category halaman untuk sub-category halaman, dan finally dari sub-category halaman untuk semua product halaman.”

Audit langkah:

  • crawler tautan report: pull orphan halaman dan crawl depth; konfirmasi key halaman sit di dalam ~3 clicks dari homepage.
  • Pull tautan untuk redirects dan rusak tautan.
  • periksa bahwa Anda highest-revenue products adalah ditautkan dari main nav dan editorial/hub halaman.

langkah 8 — Out-dari-stock dan discontinued products

sebuah genuinely ecommerce-hanya bagian. My honest jawaban di sini adalah SEO cliché untuk sebuah alasan: “though it’s a joke in the SEO community, ‘it depends’ is really the answer when dealing with out-of-stock products.” (terjemahan) “though ini adalah sebuah joke di SEO community, ‘ini bergantung’ adalah benar-benar jawaban ketika dealing dengan out-dari-stock products.” dan “ultimately, there’s no perfect solution.” (terjemahan) “ultimately, ada Tidak perfect solusi.” decision turns pada apakah ini adalah temporary vs. permanent dan apakah halaman memiliki traffic atau tautan:

ScenarioApa I melakukanMengapa
Temporarily OOSpertahankan halaman langsungtambahkan restock dates, waitlist, notify-me; jangan throw away peringkat
Permanently discontinued, close replacement301 untuk similar productPreserves tautan equity jika mereka’re genuinely similar
Discontinued, Tidak match, memiliki tautan/trafficpertahankan langsung dengan “related products” (terjemahan) “related products”Retains peringkat potential; route pengguna onward
Discontinued, Tidak tautan/traffic404 atau 410Bersih ini up; perbaiki tautan internal pointing di ini

melakukan tidak audit availability dari terlihat label alone. Sample sebuah ordinary di-stock SKU, sebuah temporary stockout, sebuah recently restocked item, satu tidak tersedia variant di dalam sebuah tersedia product group, dan sebuah postcode-restricted offer. untuk setiap, reconcile authoritative backend state, dipilih variant, terlihat halaman, Product/Offer markup, merchant feed baris, cart line, dan checkout outcome. Record market, postcode, channel, collection time, dan feed-processing time so sebuah personalized fulfillment hasil adalah tidak mistaken untuk catalog’s umum state. penuh mapping adalah di Product Schema availability contract.

Watch untuk soft 404s: out-dari-stock halaman, zero-hasil searches, atau empty cart/account halaman returning 200. Pull soft 404 bucket di GSC dan resolve oleh pattern. (See out-dari-stock products untuk penuh kerangka kerja.)

langkah 9 — Off-halaman

Lebih ringan untuk sebagian besar stores, tetapi worth sebuah lulus:

  • GSC performa: branded vs. non-branded click share — berat branded reliance berarti weak non-branded penemuan.
  • Backlink profile oleh halaman jenis — adalah category/product halaman earning tautan, atau hanya homepage dan blog?
  • temukan 404 halaman itu memiliki backlinks dan 301 them untuk closest langsung halaman (reclaim equity).
  • Pesaing tautan kesenjangan pada category halaman.

cara prioritize findings

Semuanya di atas produces sebuah list. list adalah tidak deliverable — sorted list adalah. I score setiap finding pada sebuah impact/effort matrix: “anything high-impact and low-effort is a quick win, so those tasks should be tackled first.” (terjemahan) “apa pun tinggi-impact dan rendah-effort adalah sebuah quick win, so itu tasks seharusnya menjadi tackled pertama.” untuk sebuah store:

  • tinggi impact / rendah effort — melakukan pertama: sebuah stray sitewide noindex; sebuah sitemap penuh dari redirect/noindex URLs; missing canonicals pada variant URLs; tautan internal pointing di redirects; out-dari-stock soft 404s.
  • tinggi impact / tinggi effort — plan dan schedule: faceted-nav architecture; Core Web Vitals berfungsi; rolling Product schema di seluruh templates; crawl-depth / architecture memperbaiki.
  • rendah impact / rendah effort — ketika time memungkinkan: deskripsi meta pada panjang-tail products; minor judul-template tidy-ups.
  • rendah impact / tinggi effort — skip: redirect-chain cleanup pada zero-traffic halaman; Open Graph tags (social, tidak peringkat).

seluruh poin dari matrix adalah permission untuk not melakukan hal.

Template patterns make prioritization visible: the same issue can be urgent in one cohort and irrelevant in another.

An illustrative cohort matrix compares thin content, non-canonical pages, deep URLs, and schema errors. Product pages score 22, 11, 36, and 48 percent; category pages 18, 8, 54, and 12 percent; facet URLs 71, 83, 64, and 5 percent; blog pages 9, 3, 14, and 2 percent. These are synthetic rates, not customer or site data.

umum myths untuk jelas up di report

  • “Lebih indexed halaman = better SEO.” (terjemahan) “Lebih terindeks halaman = better SEO.” Tidak — Google’s own advice adalah untuk “eliminate duplicate content to focus crawling on unique content rather than unique URLs.” (terjemahan) “menghilangkan konten duplikat untuk memusatkan perayapan pada konten unik, bukan URL unik.” Inflating indeks dengan thin variant halaman biasanya hurts.
  • “Gunakan noindex untuk save anggaran crawling pada facets.” (terjemahan) “gunakan noindex untuk menghemat anggaran perayapan pada faset.” Tidak: “Don’t use noindex, as Google will still request, but then drop the page when it sees a noindex meta tag or header in the HTTP response, wasting crawling time.” (terjemahan) “Jangan gunakan noindex, karena Google akan tetap meminta halaman, tetapi kemudian membuangnya saat melihat tag meta atau header noindex pada respons HTTP, sehingga waktu perayapan terbuang.” Block fetch (robots.txt) atau gunakan fragment filtering alih-alih.
  • “Shopify handles all canonicalization.” (terjemahan) “Shopify menangani semua canonicalization.” ini sets tag canonical, tetapi ini tidak perbaiki internal-linking-untuk-non-canonical masalah. See langkah 3.
  • “Crawl budget affects every store.” (terjemahan) “anggaran crawling memengaruhi setiap store.” ini tidak — sebagian besar stores tidak pernah perlu untuk think tentang ini.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.