Manuel sipariş karşılama ölçeklenmez. WooCommerce mağazanız günde 50 siparişi geçtiğinde, manuel iş akışı — WooCommerce’i kontrol et, siparişi ERP’ye gir, topla ve paketle, takibi manuel güncelle — bir darboğaza dönüşür. ERP odaklı otomasyon, “sipariş verildi”den “teslim edildi”ye sürekli bir pipeline oluşturarak bu darboğazı ortadan kaldırır.
Otomatik Karşılama Pipeline’ı
Order Placed (WooCommerce)
→ Fraud Check
→ Payment Verification
→ Order Created in ERP
→ Inventory Reserved
→ Pick List Generated
→ Warehouse Picks & Packs
→ Shipping Label Created
→ Tracking Number → WooCommerce
→ Customer Notification
→ Order Marked "Completed"
Her adım otomatik olarak gerçekleşir. İnsan müdahalesi sadece istisnalar için gereklidir (dolandırıcılık flagleri, stok tükenmesi, adres sorunları).
Adım 1: Sipariş Yakalama
WooCommerce webhook’ları pipeline’ı gerçek zamanlı olarak tetikler:
// Webhook handler
app.post('/webhooks/order-created', async (req, res) => {
const order = req.body;
// Quick validation
if (order.status !== 'processing') {
return res.status(200).send('Skipped: not processing');
}
// Queue for processing
await orderQueue.add('process-order', {
orderId: order.id,
orderData: order,
receivedAt: new Date().toISOString()
});
res.status(200).send('Queued');
});
Adım 2: Dolandırıcılık ve Doğrulama Kontrolü
ERP’ye göndermeden önce siparişi doğrulayın:
async function validateOrder(order) {
const issues = [];
// Address validation
if (!order.shipping.postcode || order.shipping.postcode.length < 3) {
issues.push('Invalid shipping postcode');
}
// High-value order flag
if (parseFloat(order.total) > 1000) {
issues.push('High-value order - manual review');
}
// Duplicate order check (same customer, same items, within 5 minutes)
const recentOrders = await db.query(
'SELECT * FROM processed_orders WHERE customer_email = ? AND created_at > DATE_SUB(NOW(), INTERVAL 5 MINUTE)',
[order.billing.email]
);
if (recentOrders.length > 0) {
issues.push('Possible duplicate order');
}
return { valid: issues.length === 0, issues };
}
Adım 3: ERP Sipariş Oluşturma
Siparişi dönüştürün ve ERP’nize gönderin:
async function createERPOrder(wcOrder) {
// Find or create customer
let customer = await erp.findCustomer({ email: wcOrder.billing.email });
if (!customer) {
customer = await erp.createCustomer({
name: ${wcOrder.billing.first_name} ${wcOrder.billing.last_name},
email: wcOrder.billing.email,
phone: wcOrder.billing.phone,
address: mapAddress(wcOrder.shipping)
});
}
// Create sales order
const salesOrder = await erp.createSalesOrder({
customerId: customer.id,
externalRef: WC-${wcOrder.id},
orderDate: wcOrder.date_created,
lines: wcOrder.line_items.map(item => ({
sku: item.sku,
quantity: item.quantity,
unitPrice: parseFloat(item.price),
discount: parseFloat(item.total) < (item.quantity * parseFloat(item.price))
? (item.quantity * parseFloat(item.price)) - parseFloat(item.total)
: 0
})),
shippingMethod: wcOrder.shipping_lines[0]?.method_title,
shippingCost: parseFloat(wcOrder.shipping_total),
notes: wcOrder.customer_note || ''
});
// Store mapping
await db.query(
'INSERT INTO order_mapping (wc_order_id, erp_order_id, status) VALUES (?, ?, ?)',
[wcOrder.id, salesOrder.id, 'created']
);
return salesOrder;
}
Adım 4: Envanter Rezervasyonu
ERP, satış siparişi oluşturulduğunda envanteri hemen rezerve etmelidir (ayırmalıdır). Bu, sipariş oluşturma ile fiziksel toplama arasında fazla satışı önler.
Çoğu ERP bir satış siparişi oluşturulduğunda bunu otomatik olarak halleder. Bunu ERP’nizle doğrulayın — bazıları açık rezervasyon çağrıları gerektirir.
Adım 5: Kargo Etiketi Oluşturma
Etiketleri otomatik oluşturmak için kargo taşıyıcınızın API’siyle entegre olun:
async function generateShippingLabel(erpOrder, shippingAddress) {
// Example: ShipStation API
const shipment = await shipstation.createShipment({
orderId: erpOrder.externalRef,
carrierCode: selectCarrier(shippingAddress, erpOrder.totalWeight),
serviceCode: selectService(shippingAddress),
shipTo: {
name: ${shippingAddress.first_name} ${shippingAddress.last_name},
street1: shippingAddress.address_1,
street2: shippingAddress.address_2,
city: shippingAddress.city,
state: shippingAddress.state,
postalCode: shippingAddress.postcode,
country: shippingAddress.country
},
weight: { value: erpOrder.totalWeight, units: 'grams' },
dimensions: calculatePackageDimensions(erpOrder.lines)
});
return {
trackingNumber: shipment.trackingNumber,
labelUrl: shipment.labelData,
carrier: shipment.carrierCode
};
}
Adım 6: Takip Numarasını WooCommerce’e Geri Gönderme
WooCommerce siparişini takip bilgileriyle güncelleyin:
async function updateWooCommerceTracking(wcOrderId, tracking) {
// Update order meta with tracking info
await wooApi.put(orders/${wcOrderId}, {
status: 'completed',
meta_data: [
{ key: '_tracking_number', value: tracking.trackingNumber },
{ key: '_tracking_carrier', value: tracking.carrier },
{ key: '_tracking_url', value: tracking.trackingUrl }
]
});
// Add order note
await wooApi.post(orders/${wcOrderId}/notes, {
note: Order shipped via ${tracking.carrier}. Tracking: ${tracking.trackingNumber},
customer_note: true // Visible to customer
});
}
İstisna İşleme
Her sipariş sorunsuz akmaz. Yaygın istisnalar için işleyiciler oluşturun:
| İstisna | Eylem |
|---|---|
| Ürün stokta yok | Siparişi beklet, müşteriye bildir, alternatif sun |
| Adres teslim edilemez | Siparişi beklet, müşteriye adresi güncellemesi için bildir |
| Yetkilendirme sonrası ödeme başarısız | ERP siparişini iptal et, envanteri serbest bırak |
| Dolandırıcılık flagı | Manuel inceleme için beklet, gönderme |
| Kargo etiketi hatası | Alternatif taşıyıcıyla yeniden dene |
| ERP çalışmıyor | Siparişi kuyruğa al, ERP iyileştiğinde yeniden dene |
İzleme
Pipeline sağlığınızı takip edin:
// Hourly pipeline metrics
const metrics = {
ordersReceived: await countOrders('received', lastHour),
ordersProcessed: await countOrders('processed', lastHour),
ordersShipped: await countOrders('shipped', lastHour),
ordersFailed: await countOrders('failed', lastHour),
avgProcessingTime: await avgTime('received', 'shipped', lastHour),
pendingOrders: await countOrders('pending')
};
Uyarı eşikleri:
- İşlem süresi > 30 dakika: araştır
- Başarısız siparişler > toplam %5: kritik uyarı
- Bekleyen kuyruk > 100 sipariş: kapasite sorunu
Sonuç
ERP odaklı sipariş otomasyonu, karşılamayı manuel, hata açısından riskli bir süreçten güvenilir bir pipeline’a dönüştürür. Bu pipeline’ı oluşturma yatırımı kendisini hızlıca amorti eder — daha az hata, daha hızlı kargo, daha mutlu müşteriler ve ekip zamanının veri girişinden kurtarılması. Temel akışla başlayın (sipariş ERP’ye, takip WooCommerce’e geri), ardından kargo etiketi oluşturma ve istisna işlemeyi aşamalı olarak ekleyin.
Last modified: Mart 18, 2026
United States / English
Slovensko / Slovenčina
Canada / Français
Türkiye / Türkçe