# Kanal Anahtarı

Kanal anahtarı nedir, nerede kullanılır
Kaynak: https://selwise.com/docs/channels/channel-key

Kanal anahtarı, Selwise'in gelen isteğin hangi kanala ait olduğunu anladığı değerdir. Biçimi `sk_` ve ardından 24 onaltılık karakterdir (toplam 27 karakter), örneğin `sk_3f9c1a27d8b04e65a1c2d3e4`.

Kanal anahtarı **tek başına bir yetki değildir**: kim olduğunuzu söyler, girmenize izin vermez. İzin; web'de doğrulanmış alan adından, uygulamada API anahtarından gelir. Sunucu tarafı çağrılar için ayrı bir kimlik bilgisi olan [API anahtarları](/docs/channels/api-keys) ile karıştırmayın.

## Panelde nerede

- **Kanallar → Kanal Özeti** (Channels → Channel Overview) → **Channel Key** kartı: anahtarın tamamı yazar, yanındaki simge kopyalar.
- **Channels** listesinde bir satırın **⋮** menüsü → **Copy channel key** (Kanal anahtarını kopyala).

Tarayıcı panoya yazmayı reddederse ekran "Could not copy…" der; anahtarı seçip elle kopyalayın.

## API'de adı hâlâ `siteKey`

Panel bu değeri "kanal anahtarı" olarak adlandırır; HTTP yolunda, script özniteliğinde ve SDK seçeneklerinde adı `siteKey` olarak kalır:

```
GET /api/v1/public/sites/SITE_KEY/config
```

Bunun nedeni, bu ismin müşterilerin vitrinlerinde çalışan her yerleştirme kodunda ve yayınlanmış bir npm paketinin public API'sinde bulunmasıdır. Yeniden adlandırmak, dünyadaki her müşteriyle eşzamanlı bir sürüm gerektirir. Kanal ekranındaki hazır kodları kopyalarsanız doğru ismi zaten kullanırsınız.

## Nerede kullanılır

**Web kanalı** — script etiketinde `data-site-key` olarak:

```html
<link rel="preconnect" href="https://widget.selwise.com" crossorigin>
<link rel="preconnect" href="https://api.selwise.com" crossorigin>
<script>window.Selwise=window.Selwise||{};window.Selwise.q=window.Selwise.q||[];['track','trackOrder','identify','setTraits','pushDataLayer','grantConsent','revokeConsent','showConsentPreferences','withdrawConsent','endJourney'].forEach(function(m){if(!window.Selwise[m])window.Selwise[m]=function(){window.Selwise.q.push([m,arguments])}});</script>
<script async src="https://widget.selwise.com/client.js" data-site-key="SITE_KEY"></script>
```

Kodu panelden kopyalayın: ortama göre doğru adresleri ve anahtarınızı içerir.

**Uygulama kanalı** — SDK başlatmasında, bir API anahtarıyla birlikte. Seçenek adı `siteKey`'dir; `channelKey` aynı değeri ifade eden bir takma addır:

```js
await selwise.init({
  channelKey: 'CHANNEL_KEY',
  apiKey: 'swpk_live_...',
});
```

Ayrıntı: [Mobil SDK Kurulumu](/docs/mobile/setup).

**Sunucu çağrıları** — genel API yolunda `SITE_KEY` olarak; Origin göndermeyen çağrılar ayrıca `x-selwise-api-key` başlığı taşır.

## Gizli değildir

Kanal anahtarı, web kanalında sayfanızın kaynak kodunda herkese görünür. Bu bir sorun değildir, çünkü **tek başına hiçbir yetki vermez**:

- **Web kanalında** her genel istek ayrıca `Origin` / `Referer` başlığına bakılarak kanalın doğrulanmış alan adına karşı kontrol edilir. Başka bir alan adından sizin anahtarınızla istek atılırsa reddedilir. Hiçbiri gelmiyorsa (sunucudan çağrı) bir API anahtarı gerekir.
- **Uygulama kanalında** karşılaştırılacak bir alan adı yoktur; her istek ayrıca bir API anahtarı sunmak zorundadır. Kanal anahtarı tek başına hiçbir kapıyı açmaz.

> **Şifre ile karıştırmayın**
>
> Kanal anahtarı genel bir değerdir. Panel şifreniz, API anahtarlarınız (`swpk_live_…`) ve webhook imza anahtarlarınız değildir — onları hiçbir yerde sayfa kaynağına ya da uygulama paketine yazmayın.

## Değişir mi

Kanal anahtarı, kanal oluşturulduğunda üretilir ve kendiliğinden değişmez. Alan adını değiştirseniz bile aynı kalır — bu yüzden kurulumu bir kez yapmanız yeterlidir. Anahtarı elle düzenleyemezsiniz.

### Anahtarı yenilemek

**Channels** listesinde kanalın satırındaki **⋮** menüsü → **Rotate key** (Anahtarı yenile). Onay penceresi **Rotate channel key?** der ve ne yapmanız gerektiğini sayar. Onayladığınızda (**Rotate Key**) yeni anahtar bir kez gösterilir; panelde **Channel Key** kartından da okunabilir. API karşılığı: `POST /api/v1/channels/CHANNEL_ID/rotate-key` (`admin`).

Bu bir **sert değişimdir**, kademeli geçiş yoktur: eski anahtar hemen iptal edilir ve eski anahtarın önbelleği temizlenir; yine de uçlardaki önbelleklerin sönmesi birkaç dakika sürebilir (genel API anahtarı önbelleği 5 dakikadır). Yenilemeden önce hazır olun:

1. Her yerleştirme kodunu (`data-site-key`) ve SDK başlatmasını yeni anahtarla güncelleyin.
2. Eski anahtarı kullanan entegrasyonları ve API istemcilerini güncelleyin.
3. Yeni anahtar yayında olana kadar widget'lar çalışmaz, uygulama başlatılamaz.

API anahtarları (`swpk_live_…`) kanal anahtarına bağlı değildir ve yenileme onları etkilemez.

## Yanlış kanal anahtarı belirtileri

| Belirti | Sebep |
|---|---|
| `config` isteği `404` (`Site not found`) dönüyor | Anahtar hatalı, kanal silinmiş ya da anahtar yenilenmiş ve eski anahtar kullanılıyor |
| `config` isteği `403 Site not verified` dönüyor | Anahtar doğru ama web kanalının alan adı doğrulanmamış — bkz. [Domain Doğrulama](/docs/channels/domain-verification) |
| `403 Origin '…' is not authorized for site '…'` | İstek, kanalın kayıtlı alan adının dışındaki bir kökenden geliyor |
| `403 Invalid API key or insufficient scope` | Uygulama kanalında ya da Origin'siz çağrıda API anahtarı eksik, iptal edilmiş veya yetkisi yetersiz — bkz. [API Anahtarları](/docs/channels/api-keys) |
| Widget hiç görünmüyor, konsol sessiz | Script etiketinde `data-site-key` özniteliği hiç yok |

Teşhis: [Widget Görünmüyor](/docs/troubleshooting/widget-not-showing).
