Adım Türleri
Bir kadans adımı sadece “ne zaman çalışır”ı değil, “hangi kanaldan gider”, “hangi koşulda atlanır” ve gerekirse “kime aktarılır”ı da taşır. Bu ayarları yanlış kurarsan iki yönlü risk oluşur: kontak zaten yanıt verdiği halde adım yine de çalışır (rahatsız edici tekrar) ya da sıcak bir lead insan temsilciye zamanında aktarılmaz. Cadence Oluşturma sayfası adım eklemenin temel akışını gösterir; bu sayfa her adımın taşıyabileceği tüm alanları tek tek açar.
4 kanal türü
Her adımın bir channel değeri ve kanala özel bir actionConfig nesnesi vardır.
| Kanal | actionConfig alanları | Gönderim yolu |
|---|---|---|
Arama (call) | message (opsiyonel arama notu/bağlam), assistantId (opsiyonel — boşsa kadansın atanmış asistanı, o da yoksa hesaptaki en güncel aktif asistan), maxRetries (varsayılan 1), campaignPrompt (opsiyonel ek talimat) | Adım tetiklendiğinde arka planda tek kontaklık bir mini kampanya oluşturulur ve mevcut outbound arama motoruyla arama başlatılır. |
SMS (sms) | message (zorunlu, değişken destekli) | Kullanıcının bağlı SMS sağlayıcısı (NetGSM veya Twilio, sıralı fallback’li) üzerinden gönderilir. |
WhatsApp (whatsapp) | message (zorunlu, değişken destekli) | Serbest metin olarak WhatsApp Business hattından gönderilir. |
E-posta (email) | subject + body (ikisi de değişken destekli) | Bağlı Gmail/SMTP hesabından gönderilir. Kontağın e-posta adresi yoksa adım hatayla düşer. |
Mesaj/konu/içerik alanlarında şu değişkenler otomatik doldurulur:
{{first_name}} {{last_name}} {{full_name}} {{phone}} {{email}} {{company}}Adım editöründeki “Şablon Seç” kısayolu, Aksiyonlar → Mesaj Şablonları’nda kayıtlı bir metni doğrudan adımın message (veya subject+body) alanına kopyalar.
WhatsApp adımı, Meta’nın resmi onaylı şablon (template) mesajlarından farklıdır — actionConfig yalnızca serbest bir metin tutar ve bu metin doğrudan gönderilir. Serbest metin gönderimleri WhatsApp Business Platformu’nun 24 saatlik müşteri hizmeti penceresi kuralına tabidir: kontak son 24 saat içinde sana mesaj göndermediyse teslimat reddedilebilir. Onaylı şablon akışı için WhatsApp Business sayfasına bak.
Kadansı etkinleştirmeden önce: kanal doğrulama
Kadansta kullanılan her kanal için sistem gerekli entegrasyonu otomatik kontrol eder (GET /api/cadences/[id]/validate):
| Kanal | Kontrol edilen |
|---|---|
| Arama | Kadansa atanmış aktif bir asistan + aktif bir telefon numarası. |
| SMS | Bağlı NetGSM veya Twilio entegrasyonu (kullanıcı bazlı) ya da ortam düzeyinde Twilio anahtarları. |
| Bağlı WhatsApp entegrasyonu ya da ortam düzeyinde WhatsApp token’ı. | |
| E-posta | Bağlı Gmail/SMTP entegrasyonu ya da ortam düzeyinde SMTP ayarları. |
Eksik kanallar missingChannels listesinde döner; kadans o durumda geçersiz sayılır ve panelde uyarı gösterilir.
📸 [Ekran görüntüsü: Kadans doğrulama uyarısı — eksik kanal listesi]
Zamanlama ayarları
Bir adımın çalışıp çalışmayacağı, sırasıyla şu kontrollerden geçer (Europe/Istanbul saat dilimi baz alınır):
- Kadans durumu
activedeğilse enrollment tamamen durur. - Sıradaki adım yoksa kadans tamamlanmış sayılır.
- Kontağın genel aşaması (
universalStage)committed,closedveyalostise tüm kadans durur — adım ayarlarından bağımsız (bkz. aşağıda). - Adımın
skipIfStagelistesi kontağın aşamasıyla eşleşiyorsa sadece bu adım atlanır, kadans devam eder. skipIfContactedaçıksa ve kontak son temastan sonra tekrar iletişime geçtiyse (lastContactedAt, enrollment’ınlastTouchAtalanından sonraysa) bu adım atlanır.- Kadansın
goldenHoursOnlyayarı açıksa ve şu an “altın saatler” (08:00-11:00 ve 16:00-18:00) dışındaysa adım bir sonraki altın saat penceresine ertelenir. - Adımın kendi
preferredTimeStart/preferredTimeEndpenceresi varsa ve şu an dışındaysa adım o pencereye ertelenir. - Adımın
preferredDayslistesi varsa (0=Pazar …6=Cumartesi) ve bugün listede değilse adım uygun bir sonraki güne ertelenir. - Mesai saatleri — Pazartesi-Cumartesi 09:00-19:00 — her zaman zorunludur; bu pencere dışında kalan her adım ertelenir (Pazar günü hiç adım çalışmaz).
- Tüm kontroller geçerse adım çalıştırılır ve sonucu loglanır.
| Alan | Format | Not |
|---|---|---|
preferredTimeStart / preferredTimeEnd | "09:00" gibi SS:DD | Sadece bu adım için geçerli pencere. |
preferredDays | [1,2,3] gibi gün dizisi | JS gün numarası: 0=Pazar, 1=Pazartesi … 6=Cumartesi. |
goldenHoursOnly (kadans geneli) | boolean | Açıksa kadanstaki tüm adımlar altın saat pencereleriyle sınırlanır — adım bazlı pencereden önce kontrol edilir. |
Mesai penceresi (Pazartesi-Cumartesi 09:00-19:00) kod düzeyinde her zaman zorunludur — kadans veya adım ayarlarından kapatılamaz. Bir adımın hiç çalışmadığını görürsen önce bunu, sonra preferredDays/preferredTimeStart daralmasını kontrol et.
Atlama koşulları
İki farklı seviye var — birbirine karıştırma:
- Otomatik durdurma (tüm kadans, sabit kural): Kontağın
universalStagealanıcommitted,closedveyalostolduğunda enrollment tamamen durur (cadence_stoppedaktivitesi loglanır) — bu, adımdaki hiçbir ayara bakılmaksızın her zaman çalışır. skipIfStage(adım bazlı, konfigüre edilebilir): Sadece o adımı atlar, kadans bir sonraki adıma geçer. Yeni bir adım eklediğinde panel varsayılan olarak["committed", "closed", "lost"]ile doldurur — yukarıdaki otomatik durdurmayla örtüşen bir güvenlik ağı. Asıl gücünü farklı ara aşamaları (örn. sadece["evaluating"]) atlamak istediğinde gösterir.skipIfContacted(varsayılan açık): Kontak, kadansın bu adımdaki son temasından sonra tekrar iletişime geçtiyse (örn. geri aradı, cevap yazdı) bu adım atlanır — aynı mesajı/aramayı tekrar göndermez.
Koşullu transfer
transferOnCondition yalnızca arama adımlarında değerlendirilir — arama başlamadan hemen önce kontrol edilir.
condition değeri | Koşul |
|---|---|
heat_hot | Kontağın heat alanı "hot". |
bant_complete | BANT verisinin dört alanı da (budget, authority, need, timeline) dolu (filled: true). |
lead_score_above | Kontağın leadScore değeri, threshold alanına (yoksa 70) eşit veya üstünde. |
stage_evaluating | Kontağın universalStage alanı "evaluating". |
stage_committed | Kontağın universalStage alanı "committed". |
Koşul sağlanırsa targetNumber alanındaki numara aktarım hedefi olur — bu, aramadan önce asistanın talimatına şu satır eklenerek iletilir:
ÖNEMLİ: Bu görüşmede müşteri hazır olduğunda {targetNumber} numarasına yönlendir.Hazır şablon kadanslarındaki (ör. “Sağlık Turizmi 21 Gün”) transfer adımlarında targetType ("expert", "manager" gibi) etiketi görebilirsin — bu sadece görünür bir etiket, sistem tarafından okunmaz. Transferin gerçekten çalışması için adımı düzenleyip targetNumber alanına gerçek bir telefon numarası girmen gerekir.
Örnek kadans
Zamanlama, atlama ve transferin bir arada nasıl çalıştığını gösteren 7 günlük bir örnek:
Gün 0 [ARAMA] 09:00-11:00 penceresi "İlk temas araması"
│
Gün 0 [SMS] anında "Teşekkür + bilgilendirme"
│
Gün 1 [WHATSAPP] anında skipIfContacted: true
│ → kontak yanıt verdiyse bu adım atlanır
Gün 3 [ARAMA] 16:00-18:00 penceresi transferOnCondition: heat_hot
│ → targetNumber'a aktar
Gün 5 [E-POSTA] anında (subject + body) skipIfStage: [committed, closed, lost]
│ → kontak hedefe ulaştıysa atla
Gün 7 [ARAMA] preferredDays: Sal, Çar, Per "Son deneme — açık kapı bırak"Bu akışta kontak herhangi bir noktada committed/closed/lost aşamasına geçerse — adımların skipIfStage ayarından bağımsız olarak — enrollment tamamen durur.
📸 [Ekran görüntüsü: Adım editörü — genişletilmiş bir adımın tüm alanları]
Sorun giderme
| Belirti | Olası neden / çözüm |
|---|---|
| WhatsApp adımı sessizce gitmedi | Kontak son 24 saat içinde mesaj göndermediyse serbest metin reddedilebilir → WhatsApp Business kurulumunu ve WABA izinlerini kontrol et. |
| Şablon kadanstaki transfer adımı hiç yönlendirmiyor | targetType sadece etiket — gerçek yönlendirme targetNumber alanını okur. Adımı düzenleyip targetNumber gir. |
| Kontak yanıt verdiği halde adım yine çalıştı | skipIfContacted kapalı ayarlanmış veya kontağın son iletişim tarihi güncellenmemiş → adım ayarını ve kontak kaydını kontrol et. |
| Kontak “committed” oldu ama kadans durmadı | Otomatik durdurma her adımdan önce çalışır — enrollment durumu hâlâ active görünüyorsa (nadir bir yarış durumu) destek ile paylaş. |
| Arama adımı “Asistan bulunamadı” hatası verdi | Kadansa asistan atanmamış ve hesapta aktif asistan yok → kadans ayarlarından bir asistan seç. |
| Adım hep ertelendi, hiç çalışmadı | goldenHoursOnly açık ama saat dışı, ya da preferredDays/zaman penceresi çok dar, ya da mesai saatleri (Pzt-Cmt 09:00-19:00) dışında → pencereleri gevşet. |