# Besleme Kurulumu

Besleme bağlama ve ilk senkronizasyon
Kaynak: https://selwise.com/docs/product-feeds/setup

Ürün beslemesini bağlamanın adımları. Üç yöntem vardır; çoğu mağaza için doğru olan **Feed URL** yöntemidir.

## Panelde nerede

Sol menüde **Katalog → Ürün Beslemesi** (Catalog → Product Feed) → **Configuration** (Yapılandırma) sekmesi. Altında dört alt sekme vardır: **Feed URL**, **Upload File** (Dosya Yükle), **API Access** (API Erişimi) ve **Field Mapping** (Alan Eşleme). Beslemeyi oluşturmak, değiştirmek, senkronize etmek ve silmek `admin` rolünün işidir. Önce üstteki kanal seçiciden doğru kanalı seçin.

## Feed URL yöntemi (önerilen)

1. **Feed URL** alanına dosyanızın tam adresini yazın: `https://magaza.com/feed/products.xml`.
2. **Feed Type** seçin: **XML**, **JSON** veya **CSV**. Bu bir bildirimdir; dosyanın ilk baytları başka bir formata işaret ederse Selwise doğru okuyucuyu kullanır ve paneldeki seçimi düzeltir — bkz. [Formatlar](/docs/product-feeds/formats).
3. **Sync Method**'u seçin: **Interval** (belirli aralıkla) ya da **Scheduled Hours** (günün belirli saatlerinde) — bkz. [Zamanlama](/docs/product-feeds/scheduling).
4. **Save Feed** (Feed'i Kaydet) ile kaydedin. Feed ilk kez bir adresle kurulur; adres olmadan kayıt `FEED_URL_REQUIRED` döner.
5. **Sync Now** (Şimdi Senkronize Et) ile ilk senkronizasyonu başlatın. İstek `202` ile kuyruğa alınır ("Sync request queued"); ilerlemeyi üstteki arka plan işi çubuğundan ve **Analytics** sekmesinden izlersiniz.

Adres şu kurallara uymalıdır:

| Kural | Neden |
|---|---|
| `http://` ya da `https://` ile başlamalı, alan adı bir nokta içermeli, boşluk içermemeli | Panel yazarken denetler; aksi hâlde alanın altında hata yazar |
| Adreste kullanıcı adı ve parola (`https://kullanici:parola@…`) olmamalı | Adres iş kaydıyla saklanır ve panelde görünür. Kimlik doğrulama gerekiyorsa tahmin edilmesi zor bir yol (`/feed/8f2c1a9b.xml`) ya da imzalı adres kullanın |
| Herkese açık bir adrese çözülmeli | Özel (`10.x`, `192.168.x`), loopback, bağlantı-yerel ve bulut meta veri adresleri ile `localhost`, `.local`, `.internal` adları reddedilir |
| Kısıtlı bir port kullanmamalı | SSH, SMTP, veritabanı, redis, elasticsearch vb. portlar reddedilir |
| Yanıt 200 MB'ı geçmemeli ve 120 saniyede tamamlanmalı | Büyük dosyalar akış hâlinde işlenir ama bu üst sınır vardır; `.gz` dosyalar kendiliğinden açılır |

Yönlendirmeler izlenir; her adımda aynı denetim yeniden yapılır.

## Upload File yöntemi

Dosyanız herkese açık bir adreste yoksa ya da tek seferlik aktarım yapıyorsanız: **Upload File** sekmesine dosyayı sürükleyin ya da tıklayıp seçin. Kabul edilen uzantılar `.xml`, `.json`, `.csv`, `.tsv`; en fazla **50 MB**. Daha büyük katalog için **Feed URL** ya da **API Access** kullanın (üst sınır aşılırsa panel dosya boyutunu ve sınırı söyler). Dosya yüklenir yüklenmez işlenir ve **Active Method** `File` olur; ilk yükleme feed'i de oluşturur. Uzantı güvenilir değildir: dosyanın baytlarına bakılır, `.txt` ya da yanlış adlandırılmış bir dışa aktarım da okunur. Yükleme `admin` yetkisi ister ve **Analytics** sekmesinde "File upload" olarak görünür.

Yüklenen dosya zamanlamayla yenilenmez; güncellemek için yeniden yüklersiniz.

## API Access (push) yöntemi

Dosya üretemiyorsanız ya da değişiklikleri anında yansıtmak istiyorsanız **API Access** sekmesi push uç noktasını ve **API Token**'ı verir:

```
POST https://api.selwise.com/api/v1/public/feeds/YOUR_TOKEN
```

Token bir feed'e aittir: önce **Feed URL** sekmesinden bir adres kaydedin ya da bir dosya yükleyin; ondan sonra token oluşur ("The API token belongs to a feed…"). **Regenerate Token** eski token'ı iptal eder; onu kullanan sistemleri güncelleyin. Gövde `application/json`, `application/xml`, `text/xml`, `text/csv` ya da `text/plain` olabilir; en fazla 50 MB. Gönderilen veri bir çalışma olarak **Analytics** sekmesinde "API push" etiketiyle görünür. İstek/yanıt ayrıntıları ve hata kodları: [Besleme Endpointi](/docs/api-reference/feeds).

> **Push da tam katalogdur**
>
> Her çalışma — URL, dosya ya da push — katalogun **tamamını** temsil eder: çalışmanın görmediği ürünler katalogdan silinir. Yalnızca değişen ürünleri göndermek kataloğu o ürünlere indirir. Güncel tutulan tek bir tam dosya gönderin.

## İlk senkronizasyondan önce: eşleştirmeyi kurun

Platformunuz hazır eşleme listesindeyse (Akinon, Akinon Omnitron, Google Merchant Center, IdeaSoft) **Field Mapping** sekmesindeki **Ready-made mapping** (Hazır eşleme) bölümünden uygulayın — tüm satırlar o platformun bilinen alan adlarıyla dolar. Hazır eşleme mevcut bir feed'e uygulanır; yani önce feed'i bir adresle kaydetmeniz gerekir. Eşleme bir sonraki senkronizasyonda geçerli olur.

Akinon kullanıyorsanız özellikle **Add-to-Cart Code** (Sepete Ekleme Kodu) ve **Product Group Key** (Ürün Grubu Anahtarı) satırlarının dolu olması gerekir; ayrıntı için [Alan Eşleştirme](/docs/product-feeds/field-mapping).

## İlk senkronizasyon

İlk senkronizasyon katalog büyüklüğüne göre birkaç saniye ile birkaç dakika arasında sürer (zaman aşımı 30 dakikadır; başarısız bir işi sistem üç kez, artan beklemeyle yeniden dener). Tamamlandığında:

1. **Overview** sekmesinde durumun `synced`, ürün sayısının beklediğiniz kadar olduğunu ve [Kalite Puanı](/docs/product-feeds/quality-score)nı kontrol edin.
2. **Content** (**Products**) sekmesinde ürünlerin geldiğini; birkaç ürünün fiyat, görsel ve kategori alanlarını kontrol edin.
3. **Analytics** sekmesinde **Rows skipped** sayısına bakın — sıfır değilse kataloğunuz beslemenizden küçüktür — bkz. [Çalışma Geçmişi](/docs/product-feeds/runs).
4. Eksik alan varsa [Alan Eşleştirme](/docs/product-feeds/field-mapping) sekmesine geçin.
5. Bir ürünü kartta açıp sepete ekleyin. Sepete ekleme başarısızsa eşleştirmede **Add-to-Cart Code** satırı eksiktir — kalite puanı bu alanı denetlemez, puan 100 olsa da bu adımı atlamayın.

> **Çalışma tam katalog okur; yalnızca değişeni yazar**
>
> Her senkronizasyon kaynağı baştan okur ve yalnızca içeriği değişen ürünleri yazar; kaynakta artık görmediği ürünleri, **okuma sorunsuz tamamlandıysa**, katalogdan kaldırır. Yarıda kalan ya da başarısız bir çalışma hiçbir ürün silmez: katalog bir önceki başarılı çalışmanın hâlinde kalır. Bu yüzden beslemenizin **tam** olması önemlidir — kısmi bir dosya başarılı okunursa kataloğu kısaltır.

## Limitler

| Sınır | Değer |
|---|---|
| Feed başına satır | En fazla 100.000 (aşılırsa `FEED_UNREADABLE`, 422) |
| Dosya yükleme / push gövdesi | 50 MB |
| URL'den okunan gövde | 200 MB, 120 saniye |
| Kanal başına feed | 1 |
| Katalogdaki ürün ve feed sayısı | Planınızdaki `products` ve `product_feeds` limitleri. Limit aşılırsa çalışma `409` ve `LIMIT_REACHED` ile durur; o ana kadar yazılanlar kalır, hiçbir ürün silinmez |

## Feed'i silmek

Besleme ekranının sağ üstündeki çöp kutusu simgesi feed'i ve ürünlerini siler (onay: "Delete Product Feed?"). Başka kanallar bu feed'i okuyorsa `409` ve `CHANNEL_FEED_IN_USE` döner; önce onlarda paylaşımı kapatın — bkz. [Paylaşılan Katalog](/docs/channels/shared-catalog).

## Zamanlama

Senkronizasyon sıklığı ve saatleri: [Zamanlama](/docs/product-feeds/scheduling).
