XML ile binlerce ürünü hızlı biçimde mağazaya almak kolaydır; ancak tedarikçi stok ve fiyat verisi hatalı, eksik veya gecikmeli işlendiğinde aynı hızla operasyon sorunu oluşur. Yanlış fiyatla satış, stokta olmayan ürünün siparişe açılması, varyantların karışması ve toplu ürün güncellemelerinde mevcut verinin silinmesi en sık görülen problemlerdir.
Bu rehberin amacı yalnızca “XML’i bağlamak” değil; XML verisini mağazanıza almadan önce doğrulamak, güvenli biçimde eşlemek, güncelleme sonucunu ölçmek ve hata olduğunda bir sonraki kontrolü bilmektir.
Bu konuda ne öğreneceksiniz?
- XML’i içeri almadan önce veri sözlüğü oluşturun
- Stok değerini ve sıfırlama davranışını test edin
- Fiyat, KDV ve indirim alanlarını birbirinden ayırın
- SKU, EAN ve varyant eşleşmesini doğrulayın
- Güncelleme zamanlaması ve son başarılı çekimi izleyin
- Canlıya almadan önce güvenli test ve geri dönüş planı oluşturun
1. XML’i içeri almadan önce veri sözlüğü oluşturun
İlk adım, tedarikçinin gönderdiği her alanın mağazanızda hangi alana karşılık geldiğini yazılı hâle getirmektir. Tedarikçiden gelen alan adları her firmada farklı olabilir. Örneğin:
- Ürün kodu:
SKU,
product_codeveya
stok_kodu - Barkod:
EAN,
barcodeveya
gtin - Satış fiyatı:
price,
sale_priceveya
list_price - Stok:
stock,
quantityveya
available - KDV bilgisi:
vat,
tax_rateveya fiyatın zaten KDV dâhil olduğunu belirten ayrı bir açıklama
Panelde genellikle Ürünler → XML/Entegrasyonlar → Alan eşleştirme benzeri bir menü bulunur. Burada her alanı otomatik eşleştirmeye bırakmadan önce şu soruları cevaplayın:
- Ürün kodu her ürün için benzersiz mi?
- Varyantların kodu ana ürünle aynı mı, yoksa her varyantın ayrı kodu mu var?
- Stok değeri adet olarak mı, “var/yok” metni olarak mı geliyor?
- Fiyat noktası mı, virgüllü metin mi, yoksa para birimi içeren bir değer mi?
- Boş gelen alan mevcut mağaza bilgisini koruyacak mı, yoksa silecek mi?
Başarılı sonuç, örnek XML’deki bir ürünün kodu, adı, fiyatı, stoğu, görseli ve varyantlarının mağazada doğru alanlara düşmesidir. Bir alan boş veya anlamsız görünüyorsa toplu aktarımı başlatmayın; önce ilgili etiketin XML içindeki gerçek adını tedarikçiden doğrulayın.
2. Stok değerini ve sıfırlama davranışını test edin
En kritik ayar, XML’de bir ürün görünmediğinde ne olacağıdır. Bazı sistemler ürünü pasife alır, bazıları stoğu sıfırlar, bazıları ise eski stok değerini korur. Tedarikçinin geçici bağlantı hatası yaşadığı bir anda tüm ürünlerin stoğunu sıfırlayan yapı, gereksiz sipariş iptallerine veya satış kaybına yol açabilir.
Panelde XML/Entegrasyonlar → Güncelleme ayarları → Stok davranışı bölümünü açın. Şu seçenekleri özellikle kontrol edin:
- XML’de bulunmayan ürünü pasife al
- XML’de bulunmayan ürünü stokta yok olarak işaretle
- Boş stok alanında mevcut değeri koru
- Sıfır stokta ürünü satışa kapat
İlk testte canlı mağazada tüm kataloğu güncellemek yerine 3-5 ürünlük bir test grubu kullanın. Bir ürünün tedarikçi panelinde stoğunu geçici olarak 0 yapın, XML’i yenileyin ve mağazada şu yolu izleyin: Ürünler → İlgili ürün → Stok/Envanter.
Beklenen sonuç, stok değerinin belirlediğiniz kurala göre değişmesi ve ürünün satış durumunun buna uygun güncellenmesidir. XML adresi açılmıyor, ürün sayısı beklenenden çok az geliyor veya tüm ürünler sıfırlanıyorsa güncellemeyi durdurun. Sonraki kontrol; XML URL’sinin tarayıcıda açılıp açılmadığı, erişim kısıtlaması, tedarikçi IP izni ve son başarılı çekim zamanıdır.
3. Fiyat, KDV ve indirim alanlarını birbirinden ayırın
“Fiyat” alanının KDV dâhil veya hariç olması, aynı XML’in mağazada yanlış satış fiyatı göstermesine neden olabilir. Ayrıca
price
, [code>sale_price[/code] ve
discount_price
alanlarının hangisinin kullanılacağı açıkça belirlenmelidir.
Örnek olarak tedarikçi fiyatı KDV hariç 1.000 TL ve KDV oranı yüzde 20 ise yalnızca örnek hesapla:
KDV dahil fiyat = 1.000 × (1 + 20 / 100) = 1.200 TL
Bu hesap, kargo, komisyon, ödeme hizmeti, iade, kur farkı ve kâr marjını kapsamaz. Bu nedenle mağaza fiyatı yalnızca XML fiyatına göre belirlenmemelidir.
Panelde XML/Entegrasyonlar → Fiyatlandırma → Vergi ve fiyat kuralı bölümünde şu ayrımı yapın:
- Tedarikçi fiyatı KDV dâhil mi, hariç mi?
- Mağaza fiyatı hangi para biriminde tutuluyor?
- İndirimli fiyat boş geldiğinde normal fiyat korunuyor mu?
- İndirimli fiyat normal fiyattan yüksekse sistem hangisini kullanıyor?
- Ondalık ayırıcı nokta mı, virgül mü?
Üç üründe XML fiyatını mağazadaki fiyatla karşılaştırın. Sonuç beklenenden yüksek veya düşükse önce KDV kuralını, sonra para birimini ve indirim alanı önceliğini kontrol edin. Fiyat alanında
1.299,90 TL
gibi metin geliyorsa sistem bunu sayıya çeviremeyebilir; tedarikçiden sayısal format istemek veya entegrasyonun dönüştürme kuralını kullanmak gerekir.
4. SKU, EAN ve varyant eşleşmesini doğrulayın
Ürün eşleştirmede en güvenli anahtar genellikle benzersiz ürün kodudur. Ancak aynı SKU’nun iki üründe kullanılması, baştaki sıfırların silinmesi veya varyantların tek ürün gibi gönderilmesi güncellemenin yanlış ürüne uygulanmasına neden olabilir.
İçe aktarma öncesi şu örnekleri kontrol edin:
Ana ürün SKU: TSHIRT-100
Varyant 1: TSHIRT-100-S-BEYAZ
Varyant 2: TSHIRT-100-M-BEYAZ
Varyant 3: TSHIRT-100-L-SIYAH
Aynı SKU birden fazla satırda geçiyorsa Ürünler → İçe aktarma kayıtları → Yinelenen kodlar bölümünü kontrol edin. Panelde bu rapor yoksa XML dosyasını indirip elektronik tabloda SKU sütununda “yinelenen değerleri” işaretleyebilirsiniz. Komut satırı erişiminiz varsa basit bir tekrar kontrolü şu şekilde yapılabilir:
awk -F'"' '/sku=/{print $2}' urunler.xml | sort | uniq -d
Çıktı boşsa bu örnek kontrol içinde yinelenen SKU bulunmamıştır. Bir veya daha fazla kod görünürse toplu aktarımı sürdürmeyin; tedarikçiden benzersiz kod isteyin veya eşleştirme anahtarını varyant koduna taşıyın. Komut satırı kullanamıyorsanız aynı işlemi paneldeki “örnek veri önizleme” ve elektronik tablo filtreleriyle yapabilirsiniz.
5. Güncelleme zamanlaması ve son başarılı çekimi izleyin
Feed güncelleme sıklığı ile mağazanın XML’i çekme sıklığı aynı şey değildir. Tedarikçi veriyi günde bir kez yeniliyorsa mağazanızın her saat çekim yapması yeni bilgi üretmez; yalnızca gereksiz istek oluşturabilir. Tedarikçi veriyi sık yeniliyor fakat mağaza görevi çalışmıyorsa stok uzun süre eski kalır.
Panelde XML/Entegrasyonlar → Zamanlama/Görev geçmişi bölümüne girin. Son çalıştırma zamanı, ürün sayısı, güncellenen ürün sayısı, atlanan kayıt ve hata sayısını not edin. Son başarılı çekim zamanı beklenenden eskiyse önce zamanlama görevini, sonra XML adresinin erişimini ve tedarikçinin bağlantı sınırlarını inceleyin.
SSH/CLI erişiminiz varsa görev zamanlaması sunucunun cron ayarlarına bağlı olabilir; erişiminiz yoksa hosting panelinde Cron Jobs/Görev Zamanlayıcı menüsünü veya entegrasyon panelinin görev geçmişini kullanın. Başarılı bir çalışmada ürün sayısı, değişen kayıt sayısı ve hata sayısı raporlanmalıdır. Hata sayısı yükseliyor fakat sistem “başarılı” diyorsa yalnızca görev tamamlandı bilgisine güvenmeyin; örnek ürünleri ayrıca kontrol edin.
6. Canlıya almadan önce güvenli test ve geri dönüş planı oluşturun
İlk kurulumu doğrudan tüm mağazaya uygulamak yerine şu sırayı kullanın:
- XML dosyasını indirin ve yedekleyin.
- Test kategorisinden 3-5 ürün seçin.
- Alan eşleştirmesini yalnızca bu ürünlerde çalıştırın.
- Stok, fiyat, KDV, görsel, SKU ve varyant sonuçlarını karşılaştırın.
- Bir ürünün stok ve fiyatını kontrollü biçimde değiştirip güncelleme sonucunu gözlemleyin.
- Sonuç doğruysa kapsamı küçük bir kategoriye genişletin.
- Hatalıysa entegrasyonu durdurup son başarılı yedeğe veya son doğru güncelleme kaydına dönün.
Başarılı kurulumda güncelleme sonrası en azından şu tabloyu doldurabilmelisiniz: XML’deki değer, mağazaya yazılan değer, beklenen değer ve farkın nedeni. Böylece “XML çalıştı” demek yerine hangi verinin doğru işlendiğini kanıtlayabilirsiniz.
Son teşhis soruları
- Sizdeki hatanın kaynağı XML’deki yanlış değer mi, yoksa paneldeki alan eşleştirme/fiyat kuralı mı?
- Son başarısız güncellemede kaç ürün etkilendi ve hata kaydında hangi alan belirtiliyor?
- XML’de bulunmayan ürünlerde sistem stoğu sıfırlıyor mu, ürünü pasife mi alıyor, yoksa eski değeri mi koruyor?
- Sipariş iptalleriniz daha çok stok gecikmesinden mi, varyant/SKU karışmasından mı, yoksa KDV ve fiyat hesaplamasından mı kaynaklanıyor?