Sipariş API'si bize nasıl sipariş göndereceğinizi anlatır. Bu sayfa işin diğer yarısını ele alır: ürünleri mağazanıza almak ve güncel tutmak.
Bir "aktarım" ucu yoktur. Kataloğu, belirli aralıklarla çektiğiniz tek bir dosya olarak yayımlarız — kopya sizde kalır, onunla ne yapacağınıza siz karar verirsiniz. Bu bilinçlidir: mağazanıza asla yazmayız.
1. Uç
GET /api/v1/feeds/catalog.csv
GET /api/v1/feeds/catalog.json
Authorization: Bearer YOUR_ACCOUNT_TOKEN
Sipariş API'siyle aynı token. Yanıt her zaman gzip ile sıkıştırılmıştır (Content-Encoding: gzip) — katalog büyüktür, bu yüzden bu isteğe bağlı değildir.
| Yanıt | Anlamı |
|---|---|
200 | Güncel katalog. ETag ve X-CW-Feed-Rows başlıkları size sürümü ve satır sayısını bildirir. |
304 | If-None-Match değeriniz eşleşti — son çekiminizden bu yana hiçbir şey değişmedi. İstek limitine dahil edilmez. |
403 | Token eksik, geçersiz veya iptal edilmiş. |
429 | İstek limiti: token başına saatte 30 tam indirme. Retry-After: 3600. |
503 | feed_empty — henüz yayımlanmış bir katalog yok. Son kopyanızı saklayın ve sonra tekrar deneyin. |
2. CSV biçimi
Başlık satırı, CRLF satır sonları, UTF-8:
ean,title,stock,price,processing_time,image_url
"6291107455365","Lattafa EDP Qaed Al Fursan 90 ml",42,18.40,"2-3","https://…/6291107455365.jpg"
| Sütun | Anlamı |
|---|---|
ean | Ürün anahtarı. Her zaman tırnak içindedir — metin olarak ele alın, asla sayı olarak değil (baştaki sıfırlar önemlidir). |
title | Ürün başlığı. |
stock | Şu anda size açık olan adet. |
price | Maliyetiniz, euro cinsinden, KDV hariç. Satış fiyatı değildir. |
processing_time | Deponun yayımladığı şekilde, iş günü cinsinden hazırlama süresi. |
image_url | Ürün görseli. Eklentilerimizin aksine, bunu kullanmakta özgürsünüz. |
JSON sürümü aynı satırları, koşulları açıkça belirten bir zarfın içine alır:
{
"channel": "DROPSHIPPING",
"currency": "EUR",
"tax": "ex_vat",
"priceSource": "ds_channel_list",
"generatedAt": "2026-09-07T09:00:00.000Z",
"rowCount": 67412,
"truncated": false,
"rows": [ … ]
}
3. İlk aktarım
Feed'i bir kez çekin ve ürünlerinizi EAN'ı anahtar alarak oluşturun.
EAN'ı kendi SKU alanınıza yazın. Sipariş satırları EAN üzerinden eşleştirilir — sizin tarafınızdaki SKU başka bir şeyse, sipariş gönderimi satırı tanımaz ve satır düşer. Shopify uygulamamız tam da bu nedenle EAN'ı hem SKU'ya hem de barkoda yazar.
Gerçekçi bir ilk aktarım on binlerce satırdır. Bunu bir web isteğinin içinde değil, arka plan işi olarak yapın ve kaldığı yerden devam edebilir hale getirin — bir çökme sıfırdan başlatmasın diye konumunuzu saklayın.
4. Saatlik güncelleme
Saatte bir kez çekin ve son ETag değerinizi gönderin:
GET /api/v1/feeds/catalog.csv
Authorization: Bearer YOUR_ACCOUNT_TOKEN
If-None-Match: "a3f19c…"
304, hiçbir şeyin değişmediği anlamına gelir — orada durun. 200 ise yeni bir sürümünüz var demektir: hâlihazırda sahip olduğunuz EAN'ların stok ve fiyatını güncelleyin.
Bunu güvenli kılan kurallar:
- Yalnızca güncelleyin. Saatlik çalıştırmada ürün oluşturmayın ve silme yapmayın.
- Başarısız bir çekim, boş bir katalog demek değildir.
429,503, zaman aşımı veya yarım kalmış bir indirme durumunda önceki verinizi koruyun ve sonra tekrar deneyin. Bir istek başarısız oldu diye kataloğunuzun tamamına sıfır stok yazmayın — bu entegrasyondaki en yıkıcı tek hata budur. stock: 0gerçek bir satırdır, eksik bir satır değil. Ürünler sıfıra düşer ve geri gelir.- Üretimi biten bir EAN, kaybolmadan önce en az 14 gün boyunca
stock: 0ile feed'de kalır. Bu yüzden "feed'de yok" durumunu ancak bir süredir yoksa "artık satılmıyor" olarak değerlendirin — o zaman bile silmek yerine gizlemeyi tercih edin ki sipariş geçmişiniz bozulmadan kalsın. - Saatte birkaç kereden fazla çekim yapmayın. Limit saatte 30 tam indirmedir;
304yanıtları ücretsizdir.
5. Marj ve satış fiyatınız
Sizin için bir marj saklamıyoruz. Feed size maliyeti verir; müşterinizden ne alacağınız sizin işinizdir ve bununla ilgili hiçbir şey bizim tarafımızda yapılandırılmaz.
Eklentilerimiz şu formülü uygular ve tutarlılık için bunu öneririz — bir mağazayı eklenti ile kendi sisteminiz arasında taşırsanız fiyatlar sıçramaz:
retail_price = round(cost × (1 + margin_percent / 100) + margin_fixed, 2)
İki sayıyı da siz belirlersiniz. 0 ve 0 bizim maliyetimizden satar. Bunları kendi ayarlarınızda tutun.
Bunları belirlerken akılda tutmaya değer iki şey:
priceKDV hariçtir. KDV'yi kendi mükellefiyetinize ve müşterinin ülkesine göre ekleyin.- Kargo ayrıca ücretlendirilir ve feed'de yer almaz.
6. Yayına almadan önce kontrol listesi
- EAN metin olarak saklanıyor ve SKU'nuz o
- İlk aktarım tamamlanıyor ve kaldığı yerden devam edebiliyor
- Saatlik iş
If-None-Matchgönderiyor ve304durumunu ele alıyor - Başarısız veya istek limitine takılan bir çekim kataloğunuza dokunmuyor
- Saatlik iş asla ürün oluşturmuyor ve asla ürün silmiyor
stock: 0ürünü silmek yerine gizliyor- Marj formülünüz öncekiyle eşleşiyor, bilinen on EAN üzerinde kontrol edildi
- Satış fiyatı, feed'deki maliyetin üzerine KDV ekliyor