# Mesajlaşma Sağlayıcıları

SMTP, SendGrid, Resend, Netgsm, İleti Merkezi, Twilio ve gönderim sınırları
Kaynak: https://selwise.com/docs/messaging/providers

Bir senaryo e-posta ya da SMS gönderecekse mesajı Selwise hazırlar, ama gönderimi **sizin kendi sağlayıcı hesabınız** yapar: sizin gönderen adresinizden, sizin kotanızdan. Bu sayfa, sağlayıcıyı bağlamayı, test etmeyi, gönderim sınırlarını ve bastırma listesinin nasıl beslendiğini anlatır. Bağlantı takibi (UTM) ve tarayıcı bildirimleri aynı ekrandadır ama kendi sayfalarında anlatılır: [Bağlantı Takibi](/docs/scenarios/link-tracking), [Tarayıcı Bildirimleri](/docs/messaging/web-push).
## Panelde nerede

Sol menüde **Ayarlar → Mesajlaşma Sağlayıcıları** (Settings → Messaging Providers), adres `/dashboard/settings/messaging`.

- Ekran **Mesajlaşma** modülüne bağlıdır. Hesabınızda bu modül yoksa menüde satır görünmez; hesap yöneticinize başvurun.
- Ekranı görmek için mesajlaşma görüntüleme yetkisi, bağlamak, düzenlemek, test etmek ve sınır ayarlamak için mesajlaşma yönetme yetkisi gerekir. Yetkisi olmayan kişi listeyi görür ama düğmeleri göremez.
- Sağlayıcılar **kanal başınadır**. Üstteki kanal seçicide bir kanal seçili değilse ekran "Choose a channel" (Bir kanal seçin) der.
- Sayfa yukarıdan aşağıya şunları içerir: sağlayıcı listesi, **İYS** kartı, **Browser notifications** (Tarayıcı bildirimleri), **Link tracking (UTM)** (Bağlantı takibi) ve **How often one shopper may hear from you** (Bir kişi sizden ne sıklıkta haber alsın).

> **Selwise gönderen taraf değildir**
>
> Listeniz spam şikâyeti alırsa bu sizin gönderici itibarınızı etkiler, çünkü gönderen sizsiniz. Selwise alan adı doğrulaması (SPF, DKIM), ısınma ya da İYS üyeliği sağlamaz. Gönderen adresi sağlayıcınızda **önceden doğrulanmış** olmalıdır; Selwise hiçbir DNS kaydı üretmez.
## Sağlayıcı türleri ve alanları

**Connect a provider** (Sağlayıcı bağla) düğmesi bir pencere açar. Önce **Provider** (Sağlayıcı) seçilir; alt kısımdaki alanlar seçilen türe göre oluşur. Parola, API anahtarı ve benzeri **gizli alanlar bir kez kaydedildikten sonra ekrana geri gelmez**; düzenlerken boş bırakırsanız kayıtlı değer korunur.

| Tür | Kanal | Kimlik bilgisi alanları | Gönderen alanları |
|---|---|---|---|
| SMTP | E-posta | **Host**, **Port**, **TLS on connect (port 465)**, **Username**, **Password** | Gönderen adresi, gönderen adı, yanıt adresi |
| SendGrid | E-posta | **API key** (`SG.` ile başlar). Anahtar SendGrid hesabınızda API anahtarları sayfasından alınır | Gönderen adresi, gönderen adı, yanıt adresi |
| Resend | E-posta | **API key** (`re_` ile başlar) | Gönderen adresi, gönderen adı, yanıt adresi |
| Netgsm | SMS | **Subscriber number** (abone numarası, `850…`), parola, **Approved sender name** (onaylı mesaj başlığı) | Ayrı gönderen alanı yoktur |
| İleti Merkezi | SMS | **API key**, **API hash**, **Approved sender name** | Ayrı gönderen alanı yoktur |
| Twilio | SMS | **Account SID** (`AC…`), **Auth token**, **From number** (`+1…` gibi E.164 numara) | Ayrı gönderen alanı yoktur |

Türkçe arayüzde alan adları şöyle basılır: Sunucu, Port, Bağlanırken TLS (port 465), Kullanıcı adı, Parola, API anahtarı, Abone numarası, Onaylı gönderici adı, API hash, Hesap SID, Kimlik jetonu, Gönderen numara.

Netgsm, İleti Merkezi ve Twilio'da gönderen adı bir **onaylı başlıktır**; sağlayıcınız onaylamadığı bir başlığı reddeder, bu yüzden ortak "gönderen adresi" kutusu yerine kimlik bilgisinin parçası olarak istenir. Her kimlik bilgisi alanının yanında nereden alınacağını gösteren bir "Bunu nereden bulurum?" bağlantısı vardır.

### Ortak alanlar

| Alan | Açıklama |
|---|---|
| **Name** (Ad) | Listede göreceğiniz ad, en çok 120 karakter. Aynı kanalda iki sağlayıcı aynı adı taşıyamaz; çakışırsa kutunun altında "zaten var" uyarısı çıkar |
| **Sender address** (Gönderen adresi) | Yalnızca e-posta türlerinde zorunlu. Sağlayıcınızda doğrulanmış olmalı |
| **Sender name** (Gönderen adı) | Alıcının gelen kutusunda gördüğü ad, en çok 120 karakter |
| **Reply-to** (Yanıt adresi) | Alıcı "yanıtla" dediğinde gidilecek adres; boş bırakılabilir. Düzenlerken boşaltırsanız adres silinir |
| **Rate limit (per minute)** (Hız sınırı) | 1 ile 6000 arası tam sayı, varsayılan 60. Aşağıdaki "Hız sınırı gerçekte ne yapar" bölümüne bakın |

Tür, sağlayıcı oluşturulduktan sonra değiştirilemez; kimlik bilgisi alanları türe göre farklı olduğu için başka türe geçmek yeniden bağlamak demektir.
## Doğrulama ve test

Bir sağlayıcı **doğrulanmadan senaryo tarafından kullanılamaz**. Satırdaki durum rozeti bunu söyler:

| Rozet | Anlamı |
|---|---|
| **Never tested** (Hiç test edilmedi) | Her sağlayıcı bu durumda başlar. Bu bir hata değildir; sıradaki adım satırdaki **Test connection** düğmesidir |
| **Verified** (Doğrulandı) | Bağlantı testi ya da test gönderimi başarılı oldu |
| **Failed** (Başarısız) | Son test başarısız. Rozetin üzerine gelince sağlayıcının kendi hata cümlesi görünür |
| **Inactive** (Pasif) | Sağlayıcı devre dışı bırakılmış. Panelde pasifleştirme düğmesi yoktur; durum yalnızca API ile verilir |

Satırdaki düğmeler:

- **Test connection** (Bağlantıyı test et): sağlayıcıya kimlik doğrulaması yapar, **hiçbir mesaj göndermez**. Dakikada en çok 10 kez basılabilir.
- **Send me a test** (Bana test gönder): e-posta sağlayıcısında oturum açmış kullanıcının e-posta adresine gerçek bir mesaj gönderir; alıcı seçilemez. SMS sağlayıcısında bir telefon numarası sorulur (uluslararası biçimde, `+905321112233`) ve test mesajı oraya gider; numara denetim kaydına maskelenerek yazılır. Başarılı olursa sağlayıcı da doğrulanmış sayılır. Dakikada en çok 5 kez basılabilir.
- **Edit** (Düzenle): alanları değiştirir. **Kimlik bilgisini değiştirirseniz doğrulama silinir**; yeniden test etmeniz gerekir. Çalışan bir anahtar, yerine yazdığınızın çalıştığını kanıtlamaz.
- Yıldız simgesi, **Make default** (Varsayılan yap): yalnızca doğrulanmış ve henüz varsayılan olmayan sağlayıcıda görünür.
- Çöp kutusu, **Disconnect** (Bağlantıyı kes): onay sormadan siler.

> **SMS sağlayıcılarında Bana test gönder güvenilir değildir**
>
> Düğme alıcı olarak oturumdaki kullanıcının **e-posta adresini** kullanır; bir SMS sağlayıcısına bu adres telefon numarası gibi gider. SMS sağlayıcısını doğrulamak için **Test connection** kullanın.

### Varsayılan sağlayıcı

E-posta ve SMS için ayrı birer varsayılan vardır. Bir kanalda bağladığınız **ilk** sağlayıcı kendiliğinden varsayılan olur. Varsayılanı silerseniz o kanalda kalan en eski sağlayıcı varsayılan olur; böylece "varsayılanı kullan" diyen hiçbir senaryo adımı sağlayıcısız kalmaz. Başka birini varsayılan yapmak için önce onun doğrulanmış olması gerekir.
## Hız sınırı gerçekte ne yapar

Ekranda alanın açıklaması "dakikada göndereceğimiz mesaj sayısı"dır. Gönderim işçisi her dakika bir tur çalışır ve bir turda sağlayıcı başına bu sınırın tamamını gönderir; ancak bir tur kanal başına en çok 100 kayıt alır. Yani varsayılan 60 değeri dakikada 60 mesajdır; 100'ün üstündeki değerler pratikte dakikada 100 mesaj demektir. Sınırı aşan kayıtlar atlanmaz, bir sonraki tura kalır ve deneme hakkından düşmez. Büyük bir kuyruğun boşalması bu yüzden beklediğinizden uzun sürebilir.
## Mesaj gönderilirken kontrol edilenler

Her mesaj gönderim anında yeniden denetlenir; kuyrukta beklerken biri izni geri çekmiş olabilir. Gönderilmeyen mesaj, senaryo raporunda şu nedenlerden biriyle **atlandı** sayılır:

| Rapordaki neden | Anlamı |
|---|---|
| İzin yok (`consent_missing`) | Kişinin pazarlama izni yok ya da geri çekildi. Bkz. [İletişim Listesi](/docs/customers/contacts) |
| Ulaşılamadı (`not_reachable`) | Kişinin bu kanalda kayıtlı adresi yok |
| Bastırma listesinde (`suppressed`) | Adres bastırma listesinde. Bkz. [Bastırma Listesi](/docs/customers/suppressions) |
| İYS kaydı yok (`iys_missing`) | İYS kuralı gönderimi durdurdu. Bkz. [İYS Entegrasyonu](/docs/customers/iys) |
| Gösterim sınırı (`frequency_cap`) | Kişi başına günlük ya da haftalık tavan doldu |
| Doğrulanmış sağlayıcı yok (`provider_unavailable`) | Kanalda doğrulanmış, etkin bir sağlayıcı yok |
| Abonelikten çıkma bağlantısı kurulamadı (`misconfigured`) | Sunucu tarafında genel API adresi (`API_PUBLIC_URL`) tanımlı değil; bkz. aşağıdaki bölüm |
| Zamanında geri dönmedi (`ttl_expired`) | Mesaj, adımın bekleme süresi içinde gönderilemedi ve süresi doldu |

Gönderim sırasında hata olursa:

- **Geçici hata** (sağlayıcı yanıt vermiyor, hız sınırı): en çok 4 deneme yapılır.
- **Kalıcı hata** (adres geçersiz): adres bastırma listesine **Kullanılabilir bir adres değil** nedeniyle eklenir ve mesaj başarısız sayılır.
- **Zaman aşımı**: sağlayıcıdan cevap gelmemesi gönderilmiş sayılır ve tekrar denenmez; aynı mesajın iki kez gitmesi, hiç gitmemesinden kötü kabul edilir. Rapor bunu "başarısız" olarak gösterir.

Çalışma dışı kalan bir sağlayıcıya art arda istek atmamak için bir devre kesici vardır: sağlayıcı sürekli hata veriyorsa gönderim duraklar ve sağlayıcı düzelince kendiliğinden devam eder.
## Gönderim sınırları

Kartın başlığı **How often one shopper may hear from you** (Bir kişi sizden ne sıklıkta haber alsın). Yalnızca mesajlaşma yönetme yetkisi olanlara görünür ve kanalın tamamı için geçerlidir.

| Alan | Aralık | Anlamı |
|---|---|---|
| **Per day** (Günde) | 1 ile 100 | Bir kişiye son 24 saatte teslim edilmiş mesaj sayısı bu değere ulaştıysa yenisi atlanır |
| **Per week** (Haftada) | 1 ile 500 | Aynısı son 7 gün için |

- **Boş bırakmak "sınır yok" demektir**, sıfır demek değildir. 0 ya da negatif sayı yazarsanız kutunun altında hata görürsünüz; sessizce "sınır yok" olarak kaydedilmez.
- Sayım, **teslim edilmiş** mesajlar üzerinden, kişi (iletişim kaydı) ve mesaj kanalı başınadır: e-posta ve SMS ayrı sayılır. Tarayıcı bildirimleri kendi sayımını tarayıcı üzerinden yapar. Bu kanaldaki tüm senaryolar birlikte sayılır.
- Sınırı aşan mesaj **bekletilmez, atlanır**. Pencere ilerlediğinde kişi ya satın almış ya unutmuş olur; geç boşalan bir kuyruk da hepsini birden gönderir.
- E-posta, SMS ve web push adımlarındaki **Respect frequency caps** (Türkçe arayüzde **Gösterim sınırlarına uy**) ayarı kapalıysa o adım bu sınıra bakmaz.
- Sayım okunamazsa tur sınırsız gönderime geçmez, bekler.
## Bağlantı takibi UTM

Mesajlardaki mağaza bağlantılarına eklenen UTM etiketlerinin kanal ayarı bu karttadır. Alanlar, kurallar ve Selwise'ın kendi `sw_sc` parametresi: [Bağlantı Takibi (UTM)](/docs/scenarios/link-tracking).
## Tarayıcı bildirimleri

Tarayıcı bildirimleri bir sağlayıcıya bağlanmaz; anahtar çifti, `selwise-sw.js` dosyası, izin kartı ve aboneliklerin yaşam döngüsü ayrı sayfada: [Tarayıcı Bildirimleri](/docs/messaging/web-push).
## Abonelikten çıkma bağlantısı

Her e-posta mesajı alt bilgisinde ve `List-Unsubscribe` başlığında (tek tıkla çıkış, RFC 8058) bir bağlantı taşır. Bağlantı bir önceki mesajdan haftalar sonra da çalışır, çünkü kişiye özel ve türetilmiş bir anahtar kullanır. Alışverişçi bağlantıya tıklayınca izin geri çekilir; açılan sayfada **Changed your mind? Resubscribe** düğmesi vardır. Aynı kişinin bastırma listesinde ayrıca bir kaydı varsa (geri dönüş, spam) yeniden abone olmak onu kaldırmaz.

SMS mesajlarında Selwise abonelikten çıkma bağlantısı eklemez; "çıkış" satırını sağlayıcınız İYS yükümlülüğü kapsamında ekler. Bu yüzden metne kendiniz yazmayın, alışverişçi iki kez görür.

> **Genel API adresi tanımlı değilse e-posta gitmez**
>
> Bağlantı mutlak bir adres gerektirir. Selwise sunucusunda `API_PUBLIC_URL` ayarı yoksa e-posta, ölü bir bağlantıyla gönderilmek yerine **Abonelikten çıkma bağlantısı kurulamadı** nedeniyle atlanır. Bu, sizin panelden düzeltebileceğiniz bir ayar değildir; raporda bu nedeni görürseniz hesap yöneticinize bildirin.
## Teslimat olayları

Sağlayıcının bildirdiği geri dönüşler ve spam şikâyetleri bastırma listesini besler. Selwise bu olayları sağlayıcıdan bir webhook ile alır ve **imzayı doğrulayamazsa olayı çöpe atar**; böylece adresi bilen biri listenizi bastıramaz.

| Sağlayıcı | Olaylar | Durum |
|---|---|---|
| SendGrid | teslim edildi, açıldı, tıklandı, geri döndü (sert, engellendi, ertelendi), spam şikâyeti | İmza anahtarı sunucuda tanımlıysa |
| Resend | teslim edildi, açıldı, tıklandı, geri döndü, geç teslim, şikâyet | İmza sırrı sunucuda tanımlıysa |
| SMTP | Yok | Geri dönüşler iade adresine posta olarak gelir; Selwise bunu işlemez |
| Netgsm, İleti Merkezi, Twilio | Yok | Teslim raporları geri çağrı değil sorgudur; bastırma listesi yalnızca gönderimin kendi bildirdiği kalıcı hatalarla dolar |

Panelde webhook adresi gösterilmez ve imza anahtarı panelden girilmez; bunu Selwise ekibi sunucu tarafında yapılandırır. Geliştirici notu: olaylar `POST /api/v1/public/messaging/SITE_KEY/PROVIDER_ID/events` adresine gelir, imza yoksa ya da geçersizse sessizce düşürülür, cevap her zaman 200'dür.

Geri dönüşlerin liste üzerindeki sonucu, adresin bastırılma nedenleri ve listeden çıkarma kuralları için bkz. [Bastırma Listesi](/docs/customers/suppressions).
## İYS kartı

Kart, bu kanalın İYS bağlantısını **Open İYS settings** (İYS ayarlarını aç) düğmesiyle açar. Alanların tamamı [İYS Entegrasyonu](/docs/customers/iys) sayfasında anlatılır.
## Neden boş, neden gri

| Gördüğünüz | Neden |
|---|---|
| Sol menüde satır yok | Hesapta **Mesajlaşma** modülü yok |
| "Choose a channel" | Üstte kanal seçili değil |
| "No provider connected" | Kanalda henüz sağlayıcı yok; senaryo yine de sayfa üstü teslimat bırakabilir ya da kendi uç noktanızı çağırabilir, ama e-posta ya da SMS gönderemez |
| **Make default** yıldızı yok | Sağlayıcı zaten varsayılan ya da henüz doğrulanmamış |
| Düğmeler yok | Mesajlaşma yönetme yetkiniz yok |
| **Sending limits** kartı yok | Aynı yetki; kart yalnızca yönetme yetkisi olanlara çizilir |
| Tarayıcı bildirimi kartında "Uygulama kanalının bildirim gönderecek tarayıcısı yok" | Seçili kanal bir uygulama kanalı |
