Lead Tracker — 页面展示

prototype_version: V3.1 last_verified: 2026-06-15 source_screenshots: 07-lead-tracker.png

Lead Tracker 用来回答 owner / manager 的两个问题:Lead 有没有及时被联系?Lead 从 received 到 booked 漏在哪一步?实际执行跟进不在这个页面完成,而是通过 Open Lead Tasks 跳到 /tasks?work=leads


通用控件

控件当前实现
日期范围全站 DateRangeDropdown;默认本周周一到今天
TabPipeline / Received
Open Lead Tasks跳转 /tasks?work=leads&tab=today
Received search按 phone / first name / last name 搜索
Received filterslead status、sort by last activity / newest

Pipeline Tab

Pipeline tab 由三块组成:

区域展示数据来源
Weekly summary本周 Booked rate、vs last week、Speed to Lead medianGET /v3/leads/funnel
Lead FunnelReceived → Contacted → Intro Bookedcontacts + calls
Biggest Leak This Week漏斗中掉得最多的阶段及建议前端根据 funnel counts 派生
7D barsReceived / Contacted / Intros Booked daily barsGET /v3/leads/funnel dailyTrend
Lead Response Cadenceunder 15 min, 15 min - 1 hr, 1 - 2 hr, over 2 hr 分布GET /v3/leads/cadence
Lead Pipeline bucketslead_status 聚合到 action-oriented bucketsGET /v3/leads/pipeline

Funnel 口径

阶段当前含义
Receivedcontacts.lifecycle_stage='lead'created_at 落在窗口内
Contacted有至少一次 outbound call,且 call time 不早于 lead created time
Intro Bookedcontacts.lead_status='booked'

注意:当前 Contacted 更准确地说是 “outbound attempted”。它不要求接通,也不区分 voicemail / no answer。

Speed to Lead 口径

指标当前含义
Funnel summary mediancontacts.created_at 到第一通 outbound call 的中位分钟数,30-day sample
Cadence bucketsleads.received_at 到第一通 outbound call 的 bucket 分布
SMS当前不计入
Business hourslead-cadence-chart.vue 文案写了 business hours only,但 API 当前是 raw elapsed minutes,没有 business-hours adjustment

Received Tab

Received tab 展示的是 lead contact,而不是原始 leads email row。

元素说明
Name / phonecontacts.first_name, last_name, phone
Created datecontacts.created_at
Attention iconcontacts.action_needed=true
Summary text优先 action_needed_reason,否则 customer_summary
Status badgecontacts.lead_status
Purchase intent badgecontacts.purchase_intent
Call countcallscontact_phone 聚合
Last activitycontacts.last_activity_at
Stale alert5 天以上未更新 lead status

Schema 支持状态

信息状态Source
Received leads list已接线contacts.lifecycle_stage='lead'
Lead status filters已接线contacts.lead_status
Incoming / malformed / duplicated已接线leads
Contacted / outbound attempted已接线calls.direction='Outbound'
Truly connected未区分需要结合 call result / call state 再定义
Booked intro已接线contacts.lead_status='booked'
Speed to Lead by call已接线contacts.created_atleads.received_at → first outbound call
Speed to Lead by SMS未接线需要把 outbound SMS 纳入口径

Page Review Notes

从 owner 视角,Lead 页面不只是“报表”,而是判断收入漏损在哪里。Oliver 做页面评审时,建议重点看:

问题当前页面有的数据可能缺的信息呈现
Lead 是否被及时处理median speed、cadence buckets、not contacted leak需要区分 “attempted but no answer” vs “actually reached”
为什么没 booklead_status、summary、action reason未把 objections / rejection reasons 明确作为漏斗解释层展示
谁该行动Open Lead Tasks 跳转 tasks页面本身不显示 owner / dueAt / next best action
哪些 lead 最值钱purchase intent、goal、summary缺少 high-intent + stale 的 prioritization

Cross-References