Otomatik Kayıt (Enrollment)
Bir kadans, kaydolan (enroll edilen) kişi olmadan hiçbir şey yapmaz. Purvisor AI’da bir kişiyi kadansa sokmanın üç yolu var: elle (Kontaklar veya Kadans ekranından seçerek), Meta Lead Ads tetikli (form doldurulunca otomatik) ve kural bazlı (bir davranış — sıcak lead, itiraz, aşama değişimi — gerçekleşince otomatik). Hangi yoldan girerse girsin, kayıt (enrollment) aynı kaydı tutar: hangi adımda, kaç temas, ne zaman durdu, neden durdu.
Kayıt (enrollment) nedir?
Bir kişi bir kadansa kaydedildiğinde, arka planda bir CadenceEnrollment kaydı oluşur — kişi + kadans eşleşmesi başına tek kayıt (aynı kişi aynı kadansa iki kez kaydedilemez; veritabanı bunu cadenceId + contactId üzerinde benzersiz kısıtlamayla zorlar). Bu kayıt şunları tutar:
| Alan | Anlamı |
|---|---|
status | active (yürüyor) · completed (bitti) · stopped (durduruldu) |
currentStepOrder | Kişinin şu an tamamladığı son adım sırası |
enrolledAt | Kadansa kaydolduğu an |
nextStepAt | Bir sonraki adımın planlandığı an |
touchCount | Bugüne kadar yapılan temas (arama/SMS/WhatsApp/e-posta) sayısı |
lastTouchAt / lastTouchChannel | Son temasın zamanı ve kanalı |
completedAt / stoppedAt | Bitiş veya durdurulma anı |
stopReason | Durdurulduysa neden (aşağıda tam liste) |
Her adım çalıştığında (veya atlandığında) ayrı bir CadenceStepLog satırı yazılır — adım, kanal, durum (executed/failed/skipped), çalıştırılma zamanı ve sonuç. Kişi kartındaki kadans ilerleme kutusu bu iki kaydı birleştirip gösterir.
📸 [Ekran görüntüsü: Kişi detayında Kadans İlerleme kutusu — adım/adım zaman çizelgesi + “X/Y adım” yüzdesi]
1) Elle kayıt
En doğrudan yol: Kadans detay ekranında Kişi Ekle’ye tıkla, bir veya birden çok kişi seç, kaydet.
Kişileri seç
Kadans detay sayfasında Kişi Ekle ile listeden bir veya birden çok kontak işaretle. Toplu seçim desteklenir — aynı anda onlarca kişiyi tek istekle kaydedebilirsin.
Sunucu her kişiyi tek tek kontrol eder
İstek şu gövdeyle gider:
POST /api/cadences/{id}/enrollments
{ "contactIds": ["101", "102", "103"] }Her contactId için: kadansta zaten bir kaydı var mı diye bakılır. Varsa atlanır (skipped), yoksa yeni bir active kayıt açılır — currentStepOrder: 0, enrolledAt: şimdi, nextStepAt = kadansın ilk adımının dayOffset günü sonrası. Yanıt, kaçının kaydedildiğini kaçının atlandığını özetler:
{ "enrolled": 2, "skipped": 1, "total": 3 }Kadansın en az bir adımı olmalı
Kadansta hiç adım yoksa (totalSteps: 0), kayıt isteği 400 Kadansın adımı yok hatasıyla reddedilir — önce en az bir adım eklemen gerekir. (Bkz. Cadence Oluşturma)
Elle kaydı geri almak da elle yapılır: kişi kartından Durdur’a bas — bu,
stopReason: "manual"ile kaydıstoppedyapar (aşağıdaki durdurma nedenleri tablosuna bak).
2) Meta Lead Ads tetikli kayıt
Bir Facebook/Instagram Lead Ads formu doldurulduğunda, Purvisor lead’i kontak olarak oluşturduktan hemen sonra kadansa da kaydedebilir — elle hiçbir şey yapman gerekmez. Bu, Meta Lead Ads Entegrasyonu kurulumundaki form → kadans eşleştirmesinden gelir.
Kayıt sırası şöyle işler:
Form dolduruldu → lead webhook'la Purvisor'a düşer
↓
Kontak oluşturulur (veya aynı telefon aktifse güncellenir — mükerrer önlenir)
↓
Hedef kadans belirlenir:
1. Öncelik: form/entegrasyon eşleştirmesindeki kadans
2. Yoksa: hesabındaki varsayılan aktif kadans (şablon olmayan, en son oluşturulan)
↓
Kadans aktifse ve en az bir adımı varsa → otomatik kayıt açılır (status: active)Kadans kaydı, otomatik arama (autoCallEnabled) ayarından bağımsız çalışır — otomatik arama kapalı olsa bile lead kadansa kaydedilebilir; kadansın kendi adımları (arama/SMS/WhatsApp/e-posta) daha sonra sırayla devreye girer.
Aynı mekanizma kampanya bağlantılı kadanslar için de geçerli: bir kampanyada “Kadans Bağla” (cadenceEnabled) açıksa, kampanyadaki bir kişi ilk arama tamamlandıktan sonra otomatik olarak bağlı kadansa kaydedilir — böylece “kampanyada arandı ama açmadı” kişiler otomatik takibe düşer.
3) Kural bazlı otomatik kayıt
Takip Kuralları altında, bir tetikleyici gerçekleştiğinde aksiyon olarak “Kadansa Kaydet” (enroll_in_cadence) seçebilirsin. Kural her tetiklendiğinde, hedef kişi ilgili kadansa otomatik kaydedilir — kadansa manuel girmene gerek kalmaz.
Kadansa-kaydet aksiyonunu tetikleyebilecek başlıca kural tipleri:
| Tetikleyici | Ne zaman ateşlenir |
|---|---|
| Arama Tamamlandığında | Her görüşme analiz edildiğinde |
| Sıcak Lead Tespit Edildiğinde | Kişinin ısısı hot olduğunda |
| Duygu Olumlu Olduğunda | Görüşme boyunca duygu tonu yükseliş gösterdiğinde |
| İtiraz Tespit Edildiğinde | Belirli bir itiraz tipi (fiyat, zaman, güven vb.) tespit edildiğinde |
| Pipeline Aşaması Değiştiğinde | Kişi belirlediğin bir aşamaya geçtiğinde |
| BANT Kriterleri Karşılandığında | Bütçe/Yetki/İhtiyaç/Zamanlama alanları dolduğunda |
| Müşteri Sıcaklığı Değiştiğinde | Isı (soğuk/ılık/sıcak) değiştiğinde |
| Lead Skoru Eşiğine Ulaştığında | Lead skoru belirlediğin eşiği geçtiğinde |
Her kural, aynı kişi için bir kez çalışır (tekrar tetiklenip aynı kişiyi ikinci kez kaydetmez) — bir yürütme kaydı bunu garanti eder. Kadansta zaten aktif bir kaydı varsa, kural onu ikinci kez kaydetmeye çalışmaz (mevcut kaydı döndürür).
İlgili aksiyonu kurarken bir segment filtresi de tanımlayabilirsin — örneğin sadece belirli pipeline aşamalarındaki veya belirli lead skoru üzerindeki kişileri kadansa al. Detay: Takip Kuralları
Adım adım ilerleme nasıl izlenir?
Kadans çalıştıkça (dakikada bir kontrol eden zamanlayıcı ile) her adım şu durumlardan birine geçer:
| Durum | Anlamı |
|---|---|
| current | Sıradaki adım — henüz çalışmadı, nextStepAt beklemede |
| completed | Adım çalıştı ve başarıyla tamamlandı |
| failed | Adım çalıştı ama kanal hata verdi (örn. SMS gönderilemedi) |
| skipped | Adım atlandı (aşama eşleşmesi veya kişi zaten temas almış) |
| pending | Sırası henüz gelmemiş, ileride çalışacak |
İlerleme yüzdesi basitçe currentStepOrder / totalSteps oranıdır. Bir adım atlandığında da currentStepOrder ilerler — atlanan adım “kaybedilmiş” sayılmaz, sıradaki adıma geçilir.
Bir adım ne zaman atlanır?
| Atlama nedeni | Tetikleyen durum |
|---|---|
stage_match | Kişi, adımın “bu aşamadaysa atla” (skipIfStage) listesindeki bir aşamaya zaten ulaştı |
contacted_since_last_touch | Kişi son kadans temasından sonra başka bir yolla (elle arama, farklı kampanya) zaten temas almış ve adımın skipIfContacted ayarı açık |
Zamanlama neden ertelenir?
Adım “atlanmaz” ama planlanan saatte de çalışmayabilir — şu kontrollerden biri uymazsa bir sonraki uygun ana ertelenir (durum değişmez, sadece nextStepAt ileri alınır): kadansın altın saatler kısıtı (varsayılan 08:00–11:00 ve 16:00–18:00), adımın tercih edilen saat aralığı, adımın tercih edilen günleri ve her zaman uygulanan mesai saatleri penceresi (varsayılan 09:00–19:00, Pazartesi–Cumartesi, Türkiye saatiyle).
Durdurma nedenleri (stopReason)
Bir kayıt stopped veya completed olduğunda stopReason alanı neden bittiğini gösterir. Kodda kullanılan değerler:
| stopReason | Durum | Anlamı |
|---|---|---|
| (boş) | completed | Kadansın tüm adımları normal sırayla bitti — doğal tamamlanma |
stage_committed | completed | Kişi bir görüşme sonrası “taahhüt” aşamasına geçti — kazanıldı sayılır |
stage_closed | completed | Satış kapandı |
lost | stopped | Kişi “kayıp” aşamasına geçti |
manual | stopped | Kullanıcı, kişi kartından Durdur’a bastı |
cadence_inactive | stopped | Kadansın kendisi pasife alındı (arşivlendi/durduruldu) |
stage_committed / stage_closed / lost geçişleri iki ayrı yerde kontrol edilir: her görüşme analizinden hemen sonra (aşama değiştiyse anında) ve dakikalık zamanlayıcı taramasında (bir sonraki adım çalışacağı an, güvenlik ağı olarak). Pratikte fark etmez — hangisi önce yakalarsa kaydı o kapatır.
İyi uygulamalar
- Aynı kişiyi birden çok kadansa sokma — sistem aynı kadansa ikinci kaydı engeller ama farklı kadanslara aynı anda kayıt mümkündür; bu genelde çakışan aramalara yol açar. Bir kişi için tek aktif kadans yeterlidir.
- Kural bazlı kaydı segment filtresiyle daraltır — “her arama tamamlandığında kadansa al” gibi geniş bir kural, ilgisiz kişileri de kadansa sokabilir. (Bkz. Takip Kuralları)
- Kadansı pasife almadan önce aktif kayıtları kontrol et — pasife alınan bir kadanstaki tüm aktif kayıtlar
cadence_inactivenedeniyle otomatik durur. - KVKK — kadans kaydı otomatik arama/SMS/WhatsApp/e-posta temaslarını tetikler; kişinin açık rızası bu temas kanallarını da kapsamalı. Kişi “durdur/iptal” derse elle durdurmayı (veya bir takip kuralıyla otomatik durdurmayı) ihmal etme.
Sorun giderme
| Belirti | Olası neden / çözüm |
|---|---|
| Kişi kadansa kaydolmadı (elle) | Kadansta hiç adım yok — önce adım ekle. |
| Lead form sonrası kadansa girmedi | Form/entegrasyon eşleştirmesinde kadans seçilmemiş ve hesapta varsayılan aktif kadans da yok. |
| Kayıt “atlandı” (skipped) döndü | Kişi zaten bu kadansta kayıtlı — aynı kişi aynı kadansa iki kez kaydedilemez. |
| Kural tetiklendi ama kayıt olmadı | Kişinin zaten bu kadansta aktif kaydı var (kural onu ikinci kez kaydetmez) veya kadansın adımı yok. |
| Adım hiç çalışmıyor, hep erteleniyor | Mesai saatleri / altın saatler / adımın tercih ettiği gün-saat penceresiyle çakışıyor — zamanlama ayarlarını gözden geçir. |
| Kayıt beklenmedik şekilde durdu | stopReason alanına bak — lost/stage_committed gibi bir pipeline geçişi tetiklemiş olabilir. |