1 month free dropshipping trial — then €39/month · Wholesale min €500
cosmeticwholesale

Cosmetic Wholesale

Katalog feed'i

Ürün kataloğunu aktarın, stok ve fiyatları kendi sisteminizden güncel tutun.

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ıtAnlamı
200Güncel katalog. ETag ve X-CW-Feed-Rows başlıkları size sürümü ve satır sayısını bildirir.
304If-None-Match değeriniz eşleşti — son çekiminizden bu yana hiçbir şey değişmedi. İstek limitine dahil edilmez.
403Token eksik, geçersiz veya iptal edilmiş.
429İstek limiti: token başına saatte 30 tam indirme. Retry-After: 3600.
503feed_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ütunAnlamı
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.
priceMaliyetiniz, euro cinsinden, KDV hariç. Satış fiyatı değildir.
processing_timeDeponun 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: 0 gerç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: 0 ile 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; 304 yanı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:

  • price KDV 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-Match gönderiyor ve 304 durumunu 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