# Alan Eşleştirme

Feed alanlarını eşleştirme
Kaynak: https://selwise.com/docs/product-feeds/field-mapping

Alan eşleştirme, beslemenizdeki alan adlarını Selwise'in okuduğu alanlara bağlar.
Beslemeniz farklı adlar kullanıyorsa burada çözersiniz.

## Panelde nerede

**Katalog → Ürün Beslemesi** (Catalog → Product Feed) → **Configuration** → **Field Mapping** (Alan
Eşleme). Sayfanın en altındaki tablo, Selwise'in okuduğu her alan için bir satır
gösterir; sağdaki kutuya **kendi beslemenizdeki alan adını** yazarsınız. Her
kutu en fazla 200 karakter alır. Eşleştirmeyi **Save Mapping** (Eşlemeyi Kaydet)
kaydeder, **Clear Mapping** (Eşlemeyi Temizle) tüm kutuları boşaltır. Ekran
yalnızca `admin` rolünün yazabildiği bir ekrandır; kataloğu başka bir kanaldan
okuyan bir kanalda salt okunurdur ([Paylaşılan Katalog](/docs/channels/shared-catalog)).


Soldaki gri kod (`id`, `cartCode`, `itemGroupId`) Selwise'in alan adıdır;
bunlar değişmez. Sağa yazdığınız değer sizin beslemenizden gelir.

## Beslemenizde ne olduğunu görün

Tablonun üstündeki **Fields in your feed** (Beslemedeki alanlar) listesi,
beslemenizin gerçekten taşıdığı yolları **örnek değerleriyle** gösterir. Liste,
son senkronizasyonda saklanan ilk 10 satırdan gelir; henüz senkronizasyon
yoksa ya da beslemeyi yeniden okumak istiyorsanız **Re-read the source**
(Kaynağı yeniden oku) düğmesi beslemeyi o an okur. Arama kutusu alan adında ve
örnek değerde arar. Örnek değer işi yapan
kısımdır: `attributes.pre_ent_beden` kimseye bir şey ifade etmez, `"38"` ile
yan yana durduğunda ise ne olduğu bellidir.

Bir yola tıklamak onu **son tıkladığınız eşleme kutusuna** yazar; kutulara
yazarken de aynı liste öneri olarak açılır.

Her yolun yanındaki yüzde (`in 80% of rows`), o yolun örnek satırların kaçında
bulunduğunu söyler. Satırların yalnızca onda birinde görünen bir alan,
göründüğü alan değildir. Beslemeye henüz hiç ulaşılmadıysa liste "There is no
feed yet" der: önce bir adres kaydedin ya da dosya yükleyin.

## Kaydetmeden önce önizleyin

**Preview** (Önizle), ekrandaki eşlemeyi — henüz kaydetmediğiniz hâliyle —
senkronizasyonun kullandığı eşleyicinin aynısıyla saklanan örnek satırlarınız
(en fazla 10) üzerinde çalıştırır. Tablo her alan için **Source path** (hangi
yoldan okunduğu; kendiliğinden bulunduysa **automatic**), **Filled** (kaç satırda
değer çıktığı) ve örnek **Values** gösterir; hiç değer çıkmayan alan **Empty**
olarak işaretlenir. Zorunlu alanlar yıldızlıdır. Mapping preview yalnızca ilk
10 satırı gördüğü için, yalnızca daha sonraki satırlarda boş olan bir alan orada
görünmez.

Bunun önemi şudur: yanlış yazılmış bir alan adı **sessizdir**. Çözümlenemeyen
bir yol, denk gelen bir varsayılan ada düşer; besleme senkronize olur, kalite
puanı iyi görünür ve markası ile görseli olmayan ürünler yayınlanır. Önizleme
bunu kaydetmeden önce gösterir. Önizleme ayrıca bu eşlemeyle **düşecek satırları** söyler ("This mapping would drop N row(s)" ve ilk nedeni): ürün kodu, başlık ya da fiyat okunamayan satırlar — bkz. [Çalışma Geçmişi](/docs/product-feeds/runs).

Önizlemede ayrıca beslemenizin taşıdığı **özel alanlar** listelenir — bunları
zenginleştirme bloklarınızda `${attr.<ad>}` olarak kullanabilirsiniz.

> **Tanınmayan bir alan adı artık sessizce kabul edilmiyor**
>
> Selwise'in okumadığı bir alana yazı yazarsanız kaydetme işlemi hata verir ve
> hangi alanın tanınmadığını söyler. Eskiden böyle bir kayıt kabul edilir, saklanır
> ve hiçbir şey tarafından okunmazdı — yazdığınız değerin hiçbir etkisi olmadığını
> gösteren tek belirti, çalışmayan bir özellikti.

## Hazır eşleme ile başlayın

Platformunuz listede varsa tek tek yazmanız gerekmez. **Ready-made mapping**
(Hazır eşleme) bölümünden platformunuzu seçip **Apply** (Uygula) deyin; tüm satırlar o platformun bilinen
alan adlarıyla dolar, sonra istediğiniz satırı elle değiştirirsiniz.

| Hazır eşleme | Ne zaman |
|---|---|
| Akinon (Project Zero / PZ Next) | Beslemeyi mağaza ön yüzünün ürün yükünden alıyorsanız |
| Akinon Omnitron | Beslemeyi PIM/yönetim API'sinden alıyorsanız |
| Google Merchant Center | Zaten Shopping için yayınladığınız beslemeyi kullanıyorsanız |
| IdeaSoft (XML ürün export) | IdeaSoft XML ihracını kullanıyorsanız — bkz. [IdeaSoft](/docs/platforms/ideasoft) |

Hazır eşleme **değiştirir, birleştirmez**: uygulandığında mevcut satırların
tamamı silinip yerine gelenler yazılır. Yarım uygulanmış bir eşleme kimsenin
hesabını veremediği bir durumdur, bu yüzden bilinçli olarak böyledir.

Hazır eşleme **var olan bir feed'e** uygulanır: önce **Feed URL** sekmesinde
bir adres kaydedin ya da bir dosya yükleyin. Uygulamak aynı zamanda **Variant
grouping** modunu da preset'in modu yapar (dört hazır eşlemenin dördü de
`item_group_id` modundadır). Eşleme bir sonraki eşitlemede geçerli olur; mevcut
kataloğunuz o ana kadar değişmez.

## Üç kod, üç ayrı alan

Bu bölüm eşleştirmenin en kritik yeridir. Bir üründe **üç ayrı kod** olabilir ve
bunlar birbirinin yerine geçmez.

| Satır | Selwise alanı | Ne olduğu | Akinon'da |
|---|---|---|---|
| **Product Code** (Ürün Kodu) | `id` | Besleme satırının kendi kodu. Ürünün kimliği bu. | `sku` |
| **Add-to-Cart Code** (Sepete Ekleme Kodu) | `cartCode` | Mağazanızın sepetinin kabul ettiği kod | `pk` |
| **Product Group Key** (Ürün Grubu Anahtarı) | `itemGroupId` | Hangi ürünlerin kardeş olduğu | `base_code` |

### base_code buraya yazılır — adı `itemGroupId`

En sık sorulan soru bu: "base_code'u nereye yazıyorum?" Cevap **Product Group
Key** satırı. Selwise alanın adını `itemGroupId` olarak tutar çünkü aynı
kavramın Google Merchant beslemelerindeki adı `item_group_id`, Akinon'daki adı
`base_code`; alan tek, karşılığı platforma göre değişir.

`base_code`'u **Ürün Kodu** satırına yazmayın. Grup, ürünün kimliği değildir:
yazdığınızda bir grubun tüm üyeleri tek ürüne iner ve geri kalanı başlığını,
adresini, açıklamasını ve arama karşılığını kaybeder. Ayrıntı için
[Varyant Gruplama](/docs/product-feeds/variant-grouping).

Bu satırı boş bırakırsanız Selwise sırayla `base_code`, `item_group_id`,
`parent_sku` ve `group_id` adlarını dener. Beslemeniz bu adlardan birini
kullanıyorsa eşleştirme yazmanız gerekmez.

### Sepete ekleme kodu boş kalabilir

Çoğu altyapıda sepet, ürünün kendi koduyla çalışır ve bu satır boş kalır.
Akinon'da kalmaz: sepet uç noktası numerik `pk` ister ve `sku`'yu reddeder. Bu
satır boşsa kart doğru görünür, tıklanır, sonra sepete ekleme her seferinde
başarısız olur.

> **Besleme kalite puanı bu alanı denetlemez**
>
> Kalite puanı başlık, fiyat, görsel gibi alanların doluluğunu ölçer; sepete ekleme
> kodunu ölçmez. Yani eksik bir sepet kodu ile puan 100 görünebilir. Akinon
> kullanıyorsanız bu satırın dolu olduğunu gözünüzle doğrulayın.

## Ürün kodu ile siparişleriniz aynı dili konuşmalı

Ürün kodu (`id`), siparişlerinizde gönderdiğiniz ürün kodu ile **aynı** olmalıdır.

> **Kod uyuşmazlığı sessizce çalışır ama yanlış**
>
> Beslemede `12345`, siparişte `PRD-12345` gönderiyorsanız hiçbir hata almazsınız —
> ama hiçbir sipariş bir ürüne bağlanmaz. Ürün bazlı ciro raporları boş kalır,
> "birlikte alınanlar" önerisi hiç çalışmaz. Kurulumda mutlaka kontrol edin.

Geçmiş veri aktarımı yapıyorsanız doğrulama adımı bu eşleşmeyi ölçer ve size oran
verir — bkz. [Doğrulama ve Uygulama](/docs/data-import/validate-and-apply).

## Selwise'in okuduğu alanlar

Tablo panelde sekiz bölüme ayrılmıştır; toplam 26 satır vardır. Selwise'in
kendiliğinden tanıdığı adlar için bkz. [Otomatik Tanınan Alan Adları](/docs/product-feeds/field-aliases).

**Identity** (Kimlik)

| Satır | Alan | Zorunlu |
|---|---|---|
| **Product Code** (Ürün Kodu) | `id` | **Evet** |
| **SKU** | `sku` | Hayır |
| **Add-to-Cart Code** (Sepete Ekleme Kodu) | `cartCode` | Hayır |
| **Product Group Key** (Ürün Grubu Anahtarı) | `itemGroupId` | Hayır |

**Content** (İçerik)

| Satır | Alan | Ne için |
|---|---|---|
| **Title** (Başlık) | `title` | **Zorunlu.** Kartta ve aramada |
| **Description** (Açıklama) | `description` | Aramada eşleşme |
| **Short Description** (Kısa Açıklama) | `shortDescription` | Kartta |
| **Brand** (Marka) | `brand` | Filtreleme |

**Price** (Fiyat)

| Satır | Alan | Ne için |
|---|---|---|
| **Price** (Fiyat) | `price` | Ödenecek tutar. Hiç yoksa `0` olur |
| **Original Price** (Liste fiyatı) | `originalPrice` | İndirim öncesi tutar; yoksa satış fiyatına eşitlenir |
| **Discount Rate** (İndirim oranı) | `discountRate` | Beslemenizin taşıdığı oran; aşağıya bakın |
| **Currency** (Para Birimi) | `currency` | ISO kodu |

**Media and links** (Görsel ve bağlantılar)

| Satır | Alan | Ne için |
|---|---|---|
| **Image URL** (Görsel) | `imageUrl` | Kart görseli |
| **Additional images** (Ek görseller) | `additionalImages` | Kart üzerine gelince geçilen ikinci görsel; en fazla 6 saklanır, ana görsel listeden çıkarılır |
| **Product URL** (Ürün Linki) | `url` | Karta tıklanınca gidilecek adres |

**Category** (Kategori)

| Satır | Alan | Ne için |
|---|---|---|
| **Categories** (Kategoriler) | `categories` | Kategori filtresi, benzer ürünler |
| **Product Type** (Ürün Tipi) | `productType` | Kategori hiyerarşisi metni |
| **Category Hierarchy** (Kategori Hiyerarşisi) | `categoryHierarchy` | Kategori ID hiyerarşisi |

**Stock** (Stok)

| Satır | Alan | Ne için |
|---|---|---|
| **Stock Quantity** (Stok Adedi) | `stock` | Stok filtresi |
| **In Stock** (Stokta) | `inStock` | Tükendi durumu |

**Option axes** (Seçenek eksenleri)

| Satır | Alan | Ne için |
|---|---|---|
| **Size** (Beden) | `size` | Kartın seçenek satırı |
| **Colour** (Renk) | `color` | Kartın seçenek satırı |

**Badges** (Etiketler)

| Satır | Alan |
|---|---|
| **Rating** (Puan) | `rating` |
| **Review Count** (Değerlendirme Sayısı) | `reviewCount` |
| **Is New** (Yeni Ürün) | `isNew` |
| **Is Bestseller** (Çok Satan) | `isBestseller` |

`variantCode`, `cartCode`'un eski adıdır; tabloda görünmez ama eski bir eşleştirme
onu taşıyorsa hâlâ okunur.

## İç içe alanlar için nokta gösterimi

Beslemeniz JSON ise ve değer bir nesnenin içindeyse yolu nokta ile yazarsınız.
Dizi elemanı için sıra numarası kullanılır (sıfırdan başlar):

```
Görsel          →  productimage_set.0.image
Marka           →  attributes_kwargs.integration_brand.label
Beden           →  attributes.pre_ent_beden
```

XML beslemelerde `g:` önekli etiketler (`g:item_group_id` gibi) öneksiz adla da
bulunur; `item_group_id` yazmanız yeterlidir.

## Liste fiyatı ve indirim oranı

**Discount Rate** satırı, beslemenizin taşıdığı oranı okur (`discount_rate`,
`discount` ve `discount_percent` adları kendiliğinden tanınır; yüzde, 0–100
arasına kırpılır). Beslemeniz oran taşımıyorsa Selwise oranı **fiyat çiftinden
hesaplar**: satış fiyatı liste fiyatından düşükse `(liste − satış) / liste`,
tam sayıya yuvarlanır (799'dan 479'a düşen ürün %40). Beslemenin kendi oranı
varsa o kullanılır. Oranı okuyan yüzeyler — [İndirimdekiler](/docs/recommendations/on-sale)
stratejisi, kart rozeti ve arama sıralaması — bu değeri okur.

Google Merchant beslemelerinde bu iki alanın adı diğer platformların tersidir:
`price` liste fiyatı, `sale_price` ödenecek fiyattır. Hazır eşleme bunu doğru
kurar; elle yazıyorsanız ters kurmamaya dikkat edin — ters kurulduğunda kart
fiyat **artışını** indirim olarak gösterir.

## Varyant gruplama

Eşleştirme tablosunun üstündeki **Variant grouping** (Varyant gruplama)
seçimi, grup anahtarının okunup okunmayacağını belirler: **No grouping — each
row stands alone**, **By group code — keep siblings resolvable** ya da **Variants
nested inside the row (Shopify)**. Üç modun hiçbirinde besleme satırları
birleştirilmez — ayrıntı için
[Varyant Gruplama](/docs/product-feeds/variant-grouping).

Grup anahtarını kullanmak istiyorsanız **By group code** seçili olmalıdır. `none`
seçiliyken grup anahtarı hiç okunmaz; sonradan gerektiğinde modu değiştirip
yeniden eşitlemeniz gerekir. **By group code** seçiliyken **Product Group Key**
boşsa `base_code`, `item_group_id`, `parent_sku` ve `group_id` sırayla denenir.

## Tanınmayan alan hatası ve uyarısı

Tablodaki satırlar dışında bir anahtar (örneğin eski bir `name` ya da `oldPrice`)
eşleştirmede kalmışsa ekranda **Unrecognised mapping fields** (Tanınmayan eşleme
alanları) uyarısı çıkar; bu anahtarlar etkisizdir ve **kaydederken temizlenir**.
API doğrudan çağrılırsa aynı durum `400` döner ve geçerli alanların listesini
yazar.

## Kendi alanlarınız

Beslemenizde Selwise'in bilmediği alanlar varsa (`garanti_suresi`, `mensei`,
`kumas_turu`) bunlar da otomatik olarak yakalanır ve ürün zenginleştirmede
kullanılabilir — bkz.
[Ürün Özellikleri](/docs/product-enrichment/product-attributes). Bunlar için
eşleştirme yazmanız gerekmez; eşleştirme tablosu yalnızca Selwise'in kendi
alanları içindir.

Bu yakalama sınırlıdır: ürün başına en fazla 40 alan, alan başına 500 karakter, toplam 8.000 bayt.
Sınır bilinçlidir — beslemenizin tamamını taşımak kataloğu şişirir.

## Kategori biçimi

Kategori alanı tek bir metin olarak okunur. Hiyerarşik kategoriler için ayırıcı
kullanın:

```
Kadın > Ayakkabı > Bot
```

Benzer ürünler stratejisi bu metnin içindeki her parçaya bakar; hiyerarşi ne
kadar zenginse öneriler o kadar isabetli olur.

## Eşleştirme ne zaman geçerli olur

Kaydettiğiniz eşleştirme **bir sonraki eşitlemede** uygulanır; mevcut katalog o
ana kadar değişmez, kaydetmek ise besleme durumunu `pending` yapar. Hemen görmek
istiyorsanız **Sync Now** ile eşitlemeyi elle başlatın (yalnızca URL ile beslenen
feed'lerde; dosya ve API ile beslenen feed'de dosyayı yeniden yükleyin ya da
yeniden gönderin).
