Bir mücevher mağazasında 1.011 ürün — aktif katalogun %62'si — filtrelerde hiç çıkmıyordu. Ürünler vardı, etiketleri doğruydu; eksik olan etiketle filtre arasındaki köprüydü. Nasıl bulduk, bir gecede nasıl düzelttik, sizin mağazanızda nasıl anlarsınız.

Mağazadaki ürün sayısı ile müşterinin görebildiği ürün sayısı aynı şey değil. "Kadın" filtresine basan müşteri 291 ürün görüyordu; mağazada dört katı vardı. Eylül 2026, Haşimi Doğaltaş, Shopify.
Haşimi, Kapalıçarşı kökenli bir doğal taş mücevher markası; Shopify mağazasında 1.630 aktif ürün var. Vitrinde "Kadın" filtresine bastık: 291 ürün. Yönetim panelinde kadın ürünlerini saydık: 1.200'den fazla. "Akrep" burcu filtresi 106 ürün gösteriyordu; etiketle sayınca 200'ün üstündeydi. Fark rastgele değildi: Ağustos 2026'da toplu ithal edilen 1.011 ürün — aktif katalogun %62'si — hiçbir filtrede çıkmıyordu.
Ürünler yayındaydı, sayfaları açılıyordu, aramada bulunuyordu. Ama bir müşteri "kadın, ametist, yüzük" diye daraltınca yok oluyorlardı. Mağazanın en pahalı raflarının önüne perde çekilmiş gibiydi.
Bunu ilk fark eden biz olmadık; mağaza sahibinin ortağı kadın koleksiyonunun neden bu kadar az göründüğünü sormuştu. Cevap ürün eklemek değil, eklenmiş ürünü görünür yapmaktı. Fark iki dakikalık bir sayımla ortaya çıktı: yönetim panelinde bir etiketle filtrelenen ürün sayısı ile vitrinde aynı filtreyle görünen ürün sayısı. İki sayı tutmuyorsa arada bir köprü eksik demektir.
Shopify'da filtreler ürünün etiketine değil, yapılandırılmış alanına bakar — mağaza böyle kurulmuşsa. Haşimi'de filtreler "taş", "cinsiyet" ve "burç" alanlarını okuyordu. Eski ürünlerde bu alanlar doluydu. Yeni ithal edilen 1.011 üründe etiketler vardı ("tas:ametist", "cinsiyet:kadin") ama alanlar boştu. Etiket ile alan arasındaki köprü kurulmamıştı.
İkinci bir sorun da vardı: bazı ürünlerde "taş:" (Türkçe ş ile), bazılarında "tas:" yazılmıştı. Akıllı koleksiyonlar birini görüyor, diğerini görmüyordu. İnsan gözü ikisini aynı okur; sistem okumaz.
Bu sorunun kötü yanı sessiz olması: hata mesajı yok, boş sayfa yok. Filtre çalışıyor, sadece az ürün gösteriyor. Mağaza sahibi "kadın koleksiyonu zayıf galiba" der ve daha çok ürün ekler. Sorun büyür.
Etiketten alanı türeten bir betik yazdık: "tas:ametist" etiketi varsa taş alanına "Ametist" yaz, "cinsiyet:kadin" varsa cinsiyet alanına "Kadın", burç etiketi varsa kanonik burç-taş tablosundan burç. Kural değişmedi, veri tamamlandı. "taş:" ve "tas:" tek yazıma indirildi; koleksiyon kuralları aksan duyarsız olduğu için kurallara dokunmadık.
Aynı geçişte arama başlığı, arama açıklaması ve kapak görselinin alt metni de üretildi; 1.011 ürünün üçü de boştu. Önce kuru koşu (hiçbir şey yazmadan ne yazılacağını listeledi), sonra 20 ürünle deneme, sonra tamamı. Her adımın yedeği ve tek komutla geri alma betiği var; 1.011 ürüne dokunan bir işin geri dönüş yolu olmadan yapılması mağazayı bozar.
Sabah: "Kadın" filtresi 1.244 ürün, "Akrep" 208. Filtrelerde görünmeyen ürün kalmadı.
Mağazanıza ürün toplu yükleniyorsa — ithalat, eski platformdan geçiş, tedarikçi dosyası — yüklemeden sonra ilk iş filtreleri saymak. Panelde kaç ürün, vitrinde filtrede kaç ürün. İki sayı tutmuyorsa yapılandırılmış alan eksik demektir. Bunu bir saatte kontrol edersiniz; kontrol etmezseniz aylarca fark etmezsiniz.
İkinci kural: etiket yazımını standartlaştırın. Türkçe karakterli ve karaktersiz iki yazım, aynı etiketin iki ayrı hayat sürmesi demek.
Shopify yönetim panelinde 15 dakikada:
Haşimi'nin 1.011 ürünü Ağustos 2026'da eski platformdan alınan dosyayla yüklendi. Dosyada etiketler vardı çünkü eski sistem etiketle çalışıyordu; yapılandırılmış alan yoktu çünkü eski sistemde öyle bir kavram yoktu. Shopify ürünleri sorunsuz kabul etti, ürün sayfaları açıldı, arama motoru indeksledi. Hiçbir uyarı vermedi — çünkü Shopify'a göre eksik bir şey yoktu; alanların boş olması geçerli bir durum.
Aynı şey tedarikçi dosyasıyla, sezon ithalatıyla, başka bir mağazadan aktarımla da olur. Yükleme sırasında sorulan soru "ürünler geldi mi" olur; "filtreler bunları görüyor mu" sorusu sorulmaz. Biz bunu ancak vitrinle paneli karşılaştırınca gördük; keşke yüklemenin hemen ardından bakmış olsaydık. O yüzden artık her toplu yüklemeden sonra ilk iş filtre sayımı.
Bir de "kadın" ve "kadin" ayrımı gibi görünmez farklar var. İki yazım insan gözüne aynı, sisteme farklı. Eski platformdan gelen etiketlerde Türkçe karakterli ve karaktersiz iki sürüm karışıktı; akıllı koleksiyonların kuralı aksan duyarsız olduğu için ürünler koleksiyona giriyordu ama yapılandırılmış alanı türeten mantık ikisini ayrı okuyordu. Tek yazıma indirmeden alanları doldursaydık yarısı yine eksik kalırdı.
1.011 ürüne bir kez dokunacaksak her şeyi aynı geçişte yaptık. Arama motoru başlığı ve açıklaması bu ürünlerde boştu; Google ürün sayfasını indeksliyor ama sonuçta ürün adının altında rastgele bir cümle gösteriyordu. Taş adı, ürün tipi ve markadan kurala bağlı bir başlık ürettik ("Ametist Gümüş Yüzük | Haşimi" kalıbında), açıklamayı taşın ve ürünün alanlarından kurduk. Kapak görselinin alt metni de boştu; o da aynı kalıpla doldu. Üretilen metin yapay zekâ metni değil, alanlardan kurulan şablon; böylece 1.011 ürünün hepsinde tutarlı ve geri alınabilir.
Sonra koleksiyonlara geçtik: 67 koleksiyona koleksiyon şeması ve ekmek kırıntısı, ürün sayfalarına üç seviyeli kırıntı. Vitrinde görünmeyen ürünü görünür yapmak yeterli değil; arama motorunun da o ürünü hangi koleksiyonun altında okuduğunu bilmesi gerekiyor.
Bunların hepsi bir gecede koştu ama kararlar bir hafta aldı: hangi etiketten hangi alan türeyecek, çakışan etiketlerde hangisi kazanacak, sağlık iddiası taşıyan açıklamalara ne olacak. Betik hızlı; karar yavaş olmalı.