# Mesajlar

E-posta ve SMS mesajını yazma, kişiselleştirme ve yayınlama
Kaynak: https://selwise.com/docs/scenarios/messages

Bir senaryonun e-posta ve SMS adımları, **Otomasyon → Mesajlar** (Automation → Messages) altında yazdığınız mesajları gönderir. Mesajı Selwise'ta yazarsınız; gönderimi kendi bağladığınız sağlayıcı yapar. Bu sayfa mesajın nasıl yazıldığını ve bir kişiye tam olarak ne gideceğini gönderim yapmadan nasıl göreceğinizi anlatır. İçindeki ürünlerin nereden geldiği [Mesajda Ürün Bloğu](/docs/scenarios/product-block), bağlantılara eklenen etiketler [Bağlantı Takibi](/docs/scenarios/link-tracking) sayfasındadır.
## Panelde nerede

**Otomasyon → Mesajlar** (Automation → Messages) (`/dashboard/messages`). Ekran, hesabınızda **Messaging Delivery** modülü açıksa görünür; görmek için `messaging:view`, yazmak, yayınlamak ve silmek için `messaging:manage` yetkisi gerekir (yetkisi olmayan kişi mesajı açar ama değiştiremez ve ekran bunu söyler). Mesajlar kanala aittir; kanal seçilmediyse ekran kanal seçmenizi ister.

### Mesaj listesi

Her satırda **Name** (Ad), **Channel** (E-posta ya da SMS), **Subject** (Konu), **Status** (Durum), **Used by** (Kullanım: kaç senaryoda kullanıldığı), **Updated** (Güncellendi) ve işlemler bulunur. Üstte **New message** (Yeni mesaj) e-posta, **New SMS** (Yeni SMS) SMS açar. Durum üç değerden biridir:

| Durum | Anlamı |
|---|---|
| **Draft** (Taslak) | Hiç yayınlanmadı; bir senaryo onu gönderemez |
| **Published** (Yayında) | Yayındaki metin, taslakla aynı |
| **Live · edited** (Yayında · değişiklik var) | Yayında, ama kaydedilmiş yayınlanmamış değişiklik var; senaryolar hâlâ yayındaki metni gönderir |

Listeden **Publish** (Yayınla) ve **Delete** (Sil) yapılabilir. Bir mesajı silmek, onu kullanan adımların "mesaj bulunamadı" sebebiyle atlanmasına yol açar ve o senaryolar yeniden yayına alınamaz; silmeden önce ekran kaç senaryonun kullandığını söyler. Geçmiş teslimat raporları mesajın adını göstermeye devam eder.
## Mesajı senaryodan yazmak

Mesajlar ekranına gitmeniz gerekmez. Senaryodaki e-posta ya da SMS adımında **Yeni e-posta oluştur** düğmesine basın:

1. Senaryonuz kaydedilir — kaydedilmemiş hiçbir düzenleme kaybolmaz.
2. Adım için yeni bir mesaj açılır; adı senaryo ve adım adından gelir, sonradan değiştirebilirsiniz.
3. Mesaj editörü açılır. Üstteki bant, mesajı hangi senaryonun hangi adımı için yazdığınızı söyler.
4. **Yayınla ve senaryoya dön** mesajı yayınlar, sizi senaryoya geri götürür ve mesajı adıma bağlar.

**Senaryoya dön** (yayınlamadan) da mesajı adıma bağlar, ama taslak olarak: adım "Bu mesaj taslak" der, **Şimdi yayınla** düğmesini gösterir ve mesaj yayınlanana kadar senaryo yayına alınamaz. Bunun sebebi, bir koşunun yalnızca yayınlanmış metni gönderebilmesidir.

Var olan bir mesajı adımdaki **Mesajı düzenle** ile aynı yoldan açarsınız. Editördeki **Kullanan senaryolar** bölümü bir mesajın hangi senaryolarda, taslakta mı yoksa yayındaki sürümde mi kullanıldığını gösterir. Yayındaki bir senaryonun kullandığı bir mesajı yeniden yayınlarsanız kuyrukta bekleyen mesajlar da yeni metinle gider; editör bunu yayınlamadan önce söyler.
## Yapay zekâ ile yazmak

E-posta ve SMS editörünün üstündeki **Yapay zekâ ile yaz** düğmesi, ne
göndermek istediğinizi anlatmanızı ister. E-postada konu, ön başlık, gövde ve
düğme metni; SMS'te tek parçaya sığan bir metin yazılır. Mesajda zaten içerik
varsa düğme **Yapay zekâ ile düzenle** olur ve mevcut içerik isteğinizle
birlikte gönderilir: yalnızca istediğiniz alan değişir, gerisi korunur.

- Düğme hesabınızda AI Studio modülü açıksa görünür ve her istek aylık yapay zekâ kredinizden **20 kredi** harcar ([AI Studio](/docs/ai-studio/overview)).
- Sonuç kaydedilmez; editöre ve önizlemeye yazılır, kaydetmek sizin kararınızdır.
- Gövde, şablonun zaten çizdiği ürün ızgarasını, düğmeyi ve alt bilgiyi tekrar etmez.
- Model düğmeye sizin vermediğiniz bir bağlantı koymaz.
- SMS'e çıkış satırı eklemez; onu sağlayıcınız ekler.
- Kanalın yayındaki markası temel alınır: e-posta gövdesinde marka renkleri ve yazı tipi, bütün mesajlarda marka adı, ton ve sen/siz hitabı. Pencerenin üstündeki satır bunu gösterir ve markayı kapatmanızı sağlar.

E-postanın en üstüne, şablon kendi logosunu belirtmiyorsa [Marka](/docs/brand/theme) ekranındaki logo otomatik eklenir.

Senaryonun web push adımında da aynı düğme bildirim başlığını ve metnini yazar.
Bildirimde yalnızca adımın kendi token'ları dolar; model başka token kullanmaz.
## E-posta gövdesi

E-postanın **Body** (Gövde) alanı **HTML** olarak yazılır; metin kutusunda kendi işaretlemenizi yazarsınız. Selwise onu bir dış kabuğun içine yerleştirir: üstte kanalın logosu (şablon kendi logosunu belirtmiyorsa), gövde, ürün bloğu, düğme ve alt bilgi. Kabuk her posta istemcisinde bozulmasın diye tablo tabanlı ve tamamen satır içi biçimlidir; **düz metin sürümü HTML'den otomatik üretilir**. Gövdede ürün ızgarasını, düğmeyi ve alt bilgiyi yeniden yazmayın; onları şablon çizer. Yer tutucuların değerleri HTML'e uygun biçimde kaçırılır, yani bir kişinin adındaki `<` işareti işaretlemeyi bozmaz.
## Kaydet ve Yayınla neden ayrı

**Kaydet** taslağı saklar; senaryolar hâlâ yayındaki metni gönderir. **Yayınla** taslağı gönderilecek metin olarak dondurur. Listede **Yayında · değişiklik var** rozeti, kaydettiğiniz ama henüz yayınlamadığınız bir değişiklik olduğunu gösterir.

Yayınlama şu durumlarda reddedilir ve ekran nedenini söyler: e-postada konu boşsa, gövde boşsa (e-posta ya da SMS), ürün bloğu hiç ürün üretemeyecek biçimde ayarlanmışsa (strateji seçilmemiş, elle seçim listesi boş, kategori seçilmemiş, kullanılan öneri widget'ı silinmiş).

Alan sınırları: ad en çok 160, konu en çok 300 karakter; SMS gövdesi en çok **640 karakterdir** (160 karakterlik dört parça; her parça ayrı ücretlendirilir, editör karakter ve parça sayısını gösterir). SMS'e çıkış satırı yazmayın: Türkiye'de ticari SMS için gereken çıkış satırını sağlayıcınız ekler, siz de yazarsanız kişi iki kez alır. E-postada düğme bağlantısı yalnızca `http` ve `https` olarak kabul edilir; alt bilgideki posta adresini doldurmak, gelen kutusuna ulaşma oranı için yapabileceğiniz en ucuz şeydir.
## Kişiselleştirme

Konu, ön başlık, gövde, düğme ve ürün bloğu başlığı aynı yer tutucuları kabul eder. **Kişiselleştirme** bölümündeki düğmelere tıklamak yer tutucuyu en son yazdığınız alana (konu, ön başlık, gövde ya da düğme metni), imlecin olduğu yere ekler; bölüm hangi alana ekleneceğini üstünde yazar.

| Yer tutucu | Neyle dolar |
|---|---|
| `${user.firstName}`, `${user.lastName}`, `${user.fullName}` | Kişinin kayıtlı adı; ad, ilk boşluktan ikiye bölünür (ilk sözcük ad, kalanı soyad) |
| `${user.email}` | Kişinin adresi. Önizlemede **maskeli** görünür, gerçek gönderimde tam adres yazılır |
| `${product.title}`, `${product.price}`, `${product.originalPrice}`, `${product.url}`, `${product.imageUrl}` | Ürün bloğundaki ilk ürün |
| `${shop.name}`, `${shop.url}` | Kanalınızın adı ve adresi |
| `${attr.alan}` | Beslemenizdeki özel bir ürün alanı |
| `${custom.alan}` | Senaryoyu tetikleyen olayın verisi (olayın adı `${custom.event}`, geri kalanı olayın taşıdığı alanlar) ya da bir iş olayının `payload` alanları |

Karşılığı olmayan bir yer tutucu boş basılır — alışverişçiye asla `${user.firstName}` yazısı gitmez. Önizleme böyle bir yer tutucuyu ayrıca listeler; boş bir yeri eksik bir yer tutucudan ayırt edebilmeniz için.

### Değer yoksa yerine yazılacak metin

Mesajda kullandığınız her yer tutucu, **Kişiselleştirme** bölümünde kendi kutusuyla listelenir. Kutuya yazdığınız metin, kişide o bilgi olmadığında yer tutucunun yerine yazılır. Örneğin konuda `${user.firstName}` varsa ve kutusuna "Değerli müşterimiz" yazdıysanız:

```text
Merhaba ${user.firstName},
```

Adı kayıtlı bir kişi "Merhaba Ayşe," okur; adı olmayan biri "Merhaba Değerli müşterimiz," okur. Yedek metin değer hiç yoksa, boşsa ya da yalnızca boşluktan oluşuyorsa kullanılır.

- Her yer tutucunun yedeği ayrıdır: ad için bir metin, ürün adı için başka bir metin verebilirsiniz. Aynı yer tutucu mesajın birkaç yerinde geçiyorsa (konuda ve gövdede) hepsi aynı yedeği kullanır.
- Listede yalnızca mesajda geçen yer tutucular görünür. Bir yer tutucuyu metinden silerseniz yedeği de kaydederken silinir.
- Kutuyu boş bırakırsanız yer tutucu, değeri olmayan kişide hiçbir şey yazmaz.
- Her grupta çalışır (`user`, `product`, `shop`, `attr`, `custom`) ve konuda, ön başlıkta, gövdede, düğmede, ürün bloğu başlığında ve SMS metninde aynı şekilde uygulanır. Senaryodaki web push adımında da başlık, metin ve bağlantıda geçen her yer tutucu için aynı kutular bulunur.
- Yedek metni olan bir yer tutucu "doldurulmamış" sayılmaz. Önizleme, seçtiğiniz kişide hangi yer tutucuların yedek metinle yazıldığını ayrıca söyler.

Yedek metni metnin içine de yazabilirsiniz: `${user.firstName | "Değerli müşterimiz"}` (tek tırnak da olur; metinde tırnak gerekiyorsa önüne ters eğik çizgi koyun). Editör böyle yazılmış bir yedeği açılışta ve kaydederken Kişiselleştirme bölümüne taşır. Aynı yer tutucu farklı yerlerde farklı yedeklerle yazılmışsa ilki korunur ve kutusunun altında bu söylenir.
## Bağlantı takibi (UTM)

Mesajdaki mağaza bağlantılarına UTM etiketleri ve Selwise'ın `sw_sc` parametresi eklenir; varsayılanlar, kurallar ve mesaj başına ayar: [Bağlantı Takibi (UTM)](/docs/scenarios/link-tracking).
## Ürün bloğu

Ürün bloğunun kaynakları, boş kaldığında ne olduğu ve görünümü ayrı sayfada: [Mesajda Ürün Bloğu](/docs/scenarios/product-block).
## Bir kişiye ne gideceğini görmek

Editörün sağındaki önizleme, gönderimi yapan kodla aynı kodla çizilir ve yazdıkça güncellenir. **For whom** (Kimin için) alanında iki seçenek vardır; **Desktop** (Masaüstü) ve **Mobile** (Mobil) düğmeleri önizleme genişliğini değiştirir:

- **Örnek veri** — kimse seçili değilken mesaj örnek bir adla gösterilir. Ürün bloğu kişiye özelse (örneğin açık sepet) yerleşimi görebilmeniz için kataloğun en yeni ürünleri **örnek olarak** doldurulur ve ekran bunu söyler.
- **E-posta adresi, telefon (SMS için), üye kimliği ya da ziyaretçi kimliği** — mesaj o kişinin adıyla, o kişinin sepetiyle ya da o kişi için seçilen ürünlerle çizilir. Burada örnek ürün doldurulmaz: kişinin sepeti boşsa önizlemede de boştur ve ekran nedenini yazar.

Kişi seçildiğinde önizlemenin üstünde bir satır, adımın bu kişiye **gerçekten gönderip göndermeyeceğini** söyler: izin var mı, adres engelleme listesinde mi, kayıtlı bir adresi var mı. Kanalda doğrulanmış bir sağlayıcı yoksa bu da ayrıca yazılır. **Tetikleyen ürün** alanına bir ürün kodu yazarak "bu ürünü sepete eklemiş olsaydı" durumunu da görebilirsiniz.

Önizlemede e-posta adresi maskeli gösterilir; gerçek gönderimde tam adres kullanılır. Önizlemedeki abonelikten çıkma bağlantısı çalışmayan bir örnektir, kimseyi listeden çıkarmaz.
## Senaryonun deneme çalıştırmasında e-posta

Senaryonun **Deneme çalıştırma** penceresi bir kişiyi e-posta adresiyle de bulur. Yürüyüş bir e-posta adımına vardığında adım, bu kişiye gönderilip gönderilmeyeceğini ve nedenini yazar; **Bu kişiye gidecek e-postayı göster** o kişinin alacağı mesajı — yayındaki metinle, kendi ürünleriyle — adımın hemen altında açar. Hiçbir şey gönderilmez ve kaydedilmez. Ayrıntılar: [Adım Türleri](/docs/scenarios/steps).
