Envanter senkronizasyonu, WooCommerce-ERP entegrasyonundaki en kritik veri akışıdır. Yanlış yaparsanız, ürünleri fazla satarsınız, müşterileri hayal kırıklığına uğratırsınız ve güveni sarsarsınız. Doğru yaparsanız, mağazanız gerçeği yansıtır — her zaman.
Toplu Senkronizasyon Sorunu
Birçok WooCommerce mağazası cron tabanlı yaklaşımla başlar: her 15 dakikada bir, ERP’den envanteri çekip WooCommerce’i güncelle. Bu işe yarar, ta ki yaramayıncaya kadar.
Düşünün: ERP’niz 10:01’de 50 birimlik bir sevkiyat alıyor. Senkronizasyonunuz 10:00 ve 10:15’te çalışıyor. 14 dakika boyunca, deponuzda rafta 50 birim varken web siteniz “Stokta Yok” gösteriyor. Bu kayıp gelir demektir.
Tersi daha kötü: bir müşteri 10:02’de son birimi sipariş ediyor, ama 10:15’teki senkronizasyon henüz ERP sayısını azaltmadı. Başka bir müşteri 10:10’da aynı “son” birimi sipariş ediyor. Fazla satış yapmış oldunuz.
Gerçek zamanlı senkronizasyon her iki senaryoyu da ortadan kaldırır.
Mimari Seçenekleri
Seçenek 1: Webhook + Queue
ERP (stok değişikliği) --> Webhook --> Message Queue --> Sync Worker --> WooCommerce API
WooCommerce (sipariş) --> Webhook --> Message Queue --> Sync Worker --> ERP API
Message queue (RabbitMQ, AWS SQS veya Redis), webhook alıcısını işleme mantığından ayırır. WooCommerce geçici olarak çöktüyse, queue güncellemeleri geri dönene kadar tutar.
Seçenek 2: Change Data Capture (CDC)
İlişkisel veritabanı destekli ERP’ler için, CDC araçları (Debezium, AWS DMS) envanter tablosundaki değişiklikleri izler ve güncellemeleri WooCommerce’e gönderir. Bu, değişikliklerin nasıl yapıldığına bakılmaksızın — API, manuel giriş veya toplu içe aktarma — yakalar.
Seçenek 3: Delta Tespiti ile Polling
ERP’niz webhook veya CDC desteklemiyorsa, kısa aralıklarla (her 60 saniyede) yoklayın ama sadece son yoklamadan beri değişen kayıtları işleyin. Çoğu ERP’de envanter kayıtlarında modified_at zaman damgası bulunur.
// Delta polling pattern
async function syncInventory() {
const lastSync = await getLastSyncTimestamp();
const changes = await erp.getInventoryChanges({ since: lastSync });
for (const item of changes) {
await woocommerce.updateProduct(item.sku, {
stock_quantity: item.quantity,
stock_status: item.quantity > 0 ? 'instock' : 'outofstock'
});
}
await setLastSyncTimestamp(new Date());
}
Çakışma Çözümü
WooCommerce ve ERP stok seviyelerinde anlaşmazlığa düştüğünde ne olur?
Kural 1: ERP mutlak stok seviyeleri için gerçeğin kaynağıdır. ERP depoda fiziksel olarak ne olduğunu bilir. WooCommerce çevrimiçi olarak neyin sipariş edildiğini bilir. ERP kazanır.
Kural 2: WooCommerce azaltmaları olaylardır, durumlar değil. Bir WooCommerce siparişi verildiğinde, ERP’ye “X kadar azalt” mesajı gönderin — “stoğu Y’ye ayarla” değil. Bu yarış koşullarını önler.
Kural 3: Senkronizasyonun bekleyen bir siparişi üzerine yazmasına asla izin vermeyin. Bir WooCommerce siparişi “işleniyor” durumundaysa ve henüz ERP’ye gönderilmediyse, ERP’nin stok sayısı bunu hesaba katmaz. Senkronizasyonunuz bekleyen siparişleri ERP sayısından çıkarmalıdır.
Görüntülenen Stok = ERP Stoğu - Henüz ERP'de Olmayan Bekleyen WooCommerce Siparişleri
Ürün Varyantlarını Yönetme
WooCommerce varyasyonları ve ERP SKU’ları genellikle farklı yapılara sahiptir. Bir WooCommerce değişken ürün “T-Shirt”ün varyasyonları (Küçük/Kırmızı, Orta/Mavi, vb.) vardır ve her birinin kendi stoğu bulunur. ERP’niz bunları düz SKU’lar olarak saklayabilir.
Eşleme tablosu:
| WooCommerce | ERP |
|---|---|
| Product ID: 1234 (parent) | — |
| Variation ID: 1235 (S/Red) | SKU: TSH-S-RED |
| Variation ID: 1236 (M/Blue) | SKU: TSH-M-BLU |
Entegrasyon katmanınızda bir SKU eşleme tablosu tutun. Asla ürün adlarını eşleştirmeye güvenmeyin — bunlar değişir. SKU’lar sizin stabil tanımlayıcınızdır.
Hata Yönetimi
Envanter senkronizasyon hataları iş açısından kritiktir. Bu koruma önlemlerini oluşturun:
- Dead letter queue: Başarısız senkronizasyon mesajları manuel inceleme için ayrı bir queue’ya gider
- Uyarı: Senkronizasyon başarısız olduğunda veya stok tutarsızlığı eşiği aştığında Slack/email bildirimi
- Üstel geri çekilme ile yeniden deneme: 1s, 2s, 4s, 8s, sonra dead letter
- Circuit breaker: ERP çöktüyse, onu dövmeyi bırakın. Güncellemeleri queue’ya alın ve kurtulduğunda işleyin
- Audit log: Her stok değişikliği — kaynak, eski değer, yeni değer, zaman damgası
WooCommerce API Değerlendirmeleri
WooCommerce’in REST API’sinin göz önünde bulundurulması gereken oran limitleri ve performans özellikleri vardır:
- Batch endpoint:
POST /wp-json/wc/v3/products/batchistek başına 100 ürüne kadar günceller - Varyasyon güncellemeleri URL’de ana ürün ID’sini gerektirir
- Stok durumu
stock_quantityile birlikte güncellenmelidir — bunlar bağımsız alanlardır - Webhook güvenilirliği: Sunucunuz 5 saniye içinde 200 ile yanıt vermezse WooCommerce webhook’ları sessizce başarısız olabilir
Senkronizasyonunuzu İzleme
Bu metrikleri takip edin:
| Metrik | Hedef | Uyarı Eşiği |
|---|---|---|
| Senkronizasyon gecikmesi | < 30 saniye | > 2 dakika |
| Başarısız senkronizasyon / saat | 0 | > 5 |
| Stok tutarsızlığı | 0 öğe | > 10 öğe |
| Queue derinliği | < 100 | > 1,000 |
Sonuç
Gerçek zamanlı envanter senkronizasyonu ciddi WooCommerce mağazaları için isteğe bağlı değildir. Seçeceğiniz mimari ERP’nizin yeteneklerine bağlıdır, ancak ilkeler evrenseldir: ERP’yi gerçeğin kaynağı olarak değerlendirin, azaltmaları olay olarak ele alın, sağlam hata yönetimi oluşturun ve her şeyi izleyin. ERP’niz destekliyorsa webhook odaklı senkronizasyonla başlayın; desteklemiyorsa delta tespiti ile yüksek frekanslı yoklamaya geri dönün.
Last modified: Şubat 18, 2026
United States / English
Slovensko / Slovenčina
Canada / Français
Türkiye / Türkçe