SLA ve Performans
Panelin Genel Bakış ekranındaki “SLA & Kadans Performansı” kartı tek bir soruya cevap arar: yeni gelen lead’ler yeterince hızlı mı aranıyor, yoksa masada mı bekliyor? Bu sayfa o kartın ve arkasındaki GET /api/dashboard/sla uç noktasının döndürdüğü her alanı satır satır açıklar — lead’i kaç dakikada aradığından, aranmayı bekleyen lead’lerin ortalama yaşına, pipeline’ın hangi aşamada tıkandığına ve dokunuşlarının kanallar arasında nasıl dağıldığına kadar.
Tek bakışta neyi ölçüyoruz?
Lead gelir (leadReceivedAt damgalanır)
↓
İlk temas kurulur (firstContactAt damgalanır) ── 5 dk içinde mi? → SLA
↓
Kontak pipeline'da ilerler (new → contacted → evaluating → committed → closed / lost)
↓
Kadans dokunuşları biriktirir (arama / SMS / WhatsApp / e-posta) ── kanal dağılımıRapor, oturum açan kullanıcının kendi hesabıyla sınırlıdır (getServerSession ile doğrulanır); başka bir hesabın verisi hiçbir alanda görünmez.
Neden 5 dakika?
Lead’i 5 dakika içinde aramak, 30 dakika sonra aramaya göre kat kat daha yüksek dönüşüm sağlar — lead’in ilgisi tıpkı taze bir yemek gibi hızla soğur; formu doldurduktan yarım saat sonra gelen bir aramayı çoğu kişi hatırlamaz bile. Purvisor bu yüzden “5 dakika kuralı”nı bir panel süsü değil, doğrudan koddaki bir eşik olarak tutar: SLA_THRESHOLD_MS = 5 * 60 * 1000.
| Alan | Ne anlatır |
|---|---|
slaComplianceRate | İlk teması kurulmuş lead’lerin yüzde kaçı 5 dakika veya altında arandı. |
avgFirstResponseMinutes | Aynı grubun ortalama ilk yanıt süresi (dakika, 1 ondalık). |
totalLeadsTracked | leadReceivedAt damgası olan tüm lead sayısı (henüz aranmamış olanlar dahil). |
leadsWithFirstContact | Bunlardan hem leadReceivedAt hem firstContactAt damgası olanlar — SLA oranının hesaplandığı asıl grup. |
slaComplianceRate, totalLeadsTracked üzerinden değil, leadsWithFirstContact üzerinden hesaplanır. Yani henüz hiç aranmamış lead’ler bu orana dahil edilmez — sadece “listede bekliyor” görünürler. totalLeadsTracked her zaman leadsWithFirstContact’a eşit veya ondan büyüktür; aradaki fark, henüz temasa geçilmemiş lead sayısını gösterir.
Panelde nasıl görünür
Dashboard’daki kart altı metrik karosu gösterir; her biri bir renk eşiğiyle uyarır:
| Kart | Değer | Renk kuralı |
|---|---|---|
| SLA Uyum | %slaComplianceRate | %80 ve üzeri yeşil, %50-79 sarı, altı kırmızı |
| Ort. İlk Yanıt | avgFirstResponseMinutes dk | 5 dk veya altı yeşil (“5dk kuralı: Uyumlu”), üzeri kırmızı (“Aşılıyor”) |
| Aktif Kadanslar | activeCadences | — (aktif kayıt sayısı alt bilgide) |
| Ort. Temas/Lead | avgTouchesPerLead | Hedef 6-12 temas; 6 ve üzeri yeşil, altı sarı |
| Lead → Fırsat | %leadToOpportunityRate | — |
| Sıcak Lead | hotLeadCount | Alt bilgide kadans tamamlama oranı da görünür |
📸 [Ekran görüntüsü: Dashboard → “SLA & Kadans Performansı” kartı, 6 karo + “Kadansları Yönet” bağlantısı]
Panel kartı yukarıdaki altı metrikle sınırlı. Aşağıda anlatılan pipeline dağılımı ve kanal dağılımı, aynı GET /api/dashboard/sla yanıtında bulunur ama şu an panelde ayrı bir grafikle görselleştirilmiyor — bu iki alana bugün için yalnızca doğrudan API çağrısıyla erişebilirsin.
Lead aging: bekleyen lead’lerin yaşı
Bir lead ne kadar süre “henüz nitelikli bir görüşme olmadı” durumunda kalırsa, o kadar soğur. avgLeadAgingHours, pipeline’da hâlâ new veya contacted aşamasında olan — yani evaluating/committed/closed/lost’a hiç geçmemiş — ve bir leadReceivedAt damgası taşıyan lead’lerin, şu ana kadar geçen ortalama saatidir. unconvertedLeadsCount bu grubun eleman sayısıdır.
| Alan | Ne anlatır |
|---|---|
avgLeadAgingHours | new/contacted aşamasındaki lead’lerin ortalama bekleme yaşı (saat, 1 ondalık). |
unconvertedLeadsCount | Bu gruptaki lead sayısı. |
Bu bir anlık kesit (snapshot), zaman içindeki bir eğilim grafiği değil. avgLeadAgingHours yükseliyorsa iki olası neden var: ya yeni lead’ler hiç aranmıyor ya da aranan lead’ler pipeline’da ilerlemiyor (görüşme sonrası AI analizi outcome üretmiyor olabilir). Aşama neden ilerlemiyor sorusu için: Satış Pipeline.
Pipeline dönüşümü (aşama bazlı)
leadToOpportunityRate, hesaptaki tüm kontakların (silinmemiş, kaynak fark etmeksizin) yüzde kaçının şu anda evaluating, committed veya closed aşamasında olduğunu gösterir — yani “değerlendirme aşamasına ulaşmış veya ondan ileri gitmiş” oranı. Bu da bir anlık kesittir; belirli bir zaman aralığındaki lead’lerin dönüşüm hunisini değil, hesabın şu anki aşama dağılımını ölçer.
pipelineDistribution nesnesi dört aşamayı ayrı sayar, kalan her şeyi new altında toplar:
| Alan | Kapsamı |
|---|---|
pipelineDistribution.new | totalContacts - evaluating - committed - closed - lost |
pipelineDistribution.evaluating | Sadece evaluating aşamasındakiler |
pipelineDistribution.committed | Sadece committed aşamasındakiler |
pipelineDistribution.closed | Sadece closed aşamasındakiler |
pipelineDistribution.lost | Sadece lost aşamasındakiler |
hotLeadCount | heat: "hot" etiketli kontak sayısı (lead skoru ≥70) |
Altı olası universalStage değerinden (Satış Pipeline’daki tabloya bak) bu rapor beş kova döndürür — contacted aşaması ayrı sayılmaz, new kovasının içine karışır (çıkarma işlemi sadece evaluating/committed/closed/lost’u düşer). Yani panelde/API’de gördüğün “Yeni” sayısı, gerçekte hem hiç aranmamış hem de bir kez temas kurulmuş ama henüz ilgi belirtmemiş kontakları birlikte kapsar. Aradaki ayrımı görmek istiyorsan kontak listesini “Durum” filtresiyle ayrıca süzmen gerekir.
Kanal dağılımı
channelDistribution, kadans adımlarının hangi kanaldan ve kaç kez başarıyla çalıştırıldığını sayar — kadans adım kayıtlarından (CadenceStepLog), yalnızca status: "executed" olanlar üzerinden, hesabına ait tüm kadans kayıtları (enrollment) genelinde. Purvisor’da bir kadans adımı dört kanaldan birini kullanır:
| Kanal | Kod değeri |
|---|---|
| Arama | call |
| SMS | sms |
whatsapp | |
| E-posta | email |
Yanıt, her kanal için toplam yürütülmüş adım sayısını taşıyan düz bir obje döner, örn. { "call": 340, "sms": 210, "whatsapp": 95, "email": 40 }.
Bu dağılım sadece kadans adımlarını kapsar — kadans dışında elle yapılan aramaları, kampanya aramalarını veya kadans dışı gönderilen SMS/WhatsApp/e-postaları içermez. Ayrıca sorgu bir hata alırsa (.catch) sessizce boş obje döner; yani channelDistribution boş görünüyorsa bu “hiç dokunuş yok” da anlamına gelebilir, “sorgu başarısız oldu” da — hiç kadans kaydın yoksa bu beklenen davranıştır, kadansların varsa ve yine de boşsa destek ile paylaş.
Kadans temas ve tamamlama metrikleri
Aynı yanıt, kadans sağlığına dair dört ek alan taşır:
| Alan | Ne anlatır |
|---|---|
activeCadences | Durumu active olan kadans sayısı. |
totalEnrollments / activeEnrollments / completedEnrollments / stoppedEnrollments | Kadansa kayıtlı kontakların durum kırılımı. |
cadenceCompletionRate | completedEnrollments ÷ totalEnrollments × 100. |
avgTouchesPerLead | En az bir dokunuşu olan kayıtların ortalama touchCount’u (hiç dokunulmamış kayıtlar bu ortalamaya girmez). |
Bir lead’i hangi gün/saatte aramanın daha yüksek ulaşma oranı verdiğini (hesabına özel öğrenilmiş öneriler + 7×24 ısı haritası) bu rapor değil, ayrı bir uç nokta hesaplar:
GET /api/cadences/insights. Detaylı açıklama: Kadans Şablonları ve İçgörüler.
Örnek yanıt
{
"slaComplianceRate": 74,
"avgFirstResponseMinutes": 6.8,
"totalLeadsTracked": 512,
"leadsWithFirstContact": 480,
"avgLeadAgingHours": 11.4,
"unconvertedLeadsCount": 38,
"activeCadences": 5,
"totalEnrollments": 640,
"activeEnrollments": 210,
"completedEnrollments": 350,
"stoppedEnrollments": 80,
"cadenceCompletionRate": 55,
"avgTouchesPerLead": 4.2,
"totalContacts": 1840,
"leadToOpportunityRate": 32,
"hotLeadCount": 96,
"pipelineDistribution": {
"new": 980,
"evaluating": 410,
"committed": 150,
"closed": 30,
"lost": 270
},
"channelDistribution": {
"call": 1120,
"sms": 640,
"whatsapp": 310,
"email": 95
}
}Bu örnekte SLA uyumu %74 — iyi ama mükemmel değil; ortalama ilk yanıt 6,8 dakika, 5 dakika hedefinin biraz üzerinde. Lead → Fırsat oranı %32, yani her 100 kontaktan 32’si en az “değerlendiriyor” aşamasına ulaşmış. Kanal dağılımında call ağır basıyor — beklenen davranış, çünkü ilk temas adımı hemen her şablonda arama.
İyi uygulamalar
avgFirstResponseMinutes’ı 5’in altında tutmayı hedefle — bunun üzerindeki her dakika dönüşüm kaybı demektir. Otomatik aramayı geciktiren ayarlar için Meta Lead Ads veya Zapier gecikme alanlarını kontrol et.unconvertedLeadsCountbüyüyorsa ilk önce o lead’lerin bir kadansa/kampanyaya bağlı olup olmadığına bak — bağlı değilse otomatik arama hiç tetiklenmemiş olabilir.pipelineDistribution.lostoranı yüksekse kayıp nedenlerini (Satış Pipeline →lossReason) incele; tek bir neden (örn. fiyat) baskınsa bu bir prompt veya teklif sorunu olabilir.- Kanal dağılımı tek kanala (
call) aşırı yığılmışsa kadans adımlarına SMS/WhatsApp takibi eklemeyi düşün — çok kanallı takip dönüşümü artırır (bkz. Cadence Nedir?).
KVKK notu
Bu rapor özet sayılar döndürse de, altındaki veriler (lead zaman damgaları, pipeline aşaması, kadans dokunuşları) kişisel veridir. Uç nokta yalnızca oturum açmış hesap sahibinin kendi verisini döner; başka bir hesabın kayıtlarına erişim yoktur. Kadans adımlarında gönderilen SMS/WhatsApp/e-posta içerikleri için genel KVKK ve açık rıza kurallarına uymaya devam et — detay: KVKK Veri Yönetimi.
Sorun giderme
| Belirti | Olası neden / çözüm |
|---|---|
slaComplianceRate 0 görünüyor | Hiçbir lead’in hem leadReceivedAt hem firstContactAt alanı dolu değil — otomatik arama/entegrasyon hiç tetiklenmemiş olabilir. |
avgLeadAgingHours sürekli artıyor | new/contacted aşamasındaki lead’ler aranmıyor veya aranıyor ama AI analizi aşamayı ilerletmiyor — Çağrı Sonrası Analiz’i kontrol et. |
pipelineDistribution.new beklenenden yüksek | Bu kova contacted aşamasını da kapsar — gerçek “hiç aranmamış” sayısını görmek için kontak listesini durum filtresiyle ayrıca süz. |
channelDistribution tamamen boş | Hesapta hiç kadans kaydı (enrollment) yok ya da hiçbir adım henüz executed durumuna geçmedi — kadans aktif mi ve adımlar çalıştı mı kontrol et. |
cadenceCompletionRate 0 | totalEnrollments sıfırsa oran her zaman 0 döner — henüz kimse bir kadansa kaydedilmemiş demektir. |
Rapor 401 dönüyor | Oturum süresi dolmuş — tekrar giriş yap. |