影刀RPA CRM客户管理:销售线索自动分配与跟进
影刀RPA CRM客户管理销售线索自动分配与跟进作者林焱 | 适用人群影刀RPA新手 | 难度★★★☆☆一、什么情况用这个销售团队每天从各种渠道进来几十上百条线索——官网表单、广告投放、展会名片、合作伙伴推荐。靠销售主管手动分配反应慢不说还容易分配不均——有的销售线索太多跟不过来有的销售没活干。用影刀RPA定时拉取各渠道线索 → 自动查重去重 → 按规则分配给销售 → 跟踪超过N天未跟进的自动提醒。让每条线索都有主人每个主人手里的线索量均衡。实际场景销售线索自动分配、客户归属冲突处理、跟进超时自动提醒、客户流转记录追踪。这篇文章能解决的问题多渠道路由汇总线索智能分配按地域/行业/负载均衡跟进超时自动升级提醒客户保护期管理店群矩阵自动化突破运营极限二、怎么做2.1 影刀主流程┌──────────────────────────────────────────────┐ │ ① 【读取Excel/数据库】 │ │ 读取新线索池 销售负载表 │ │ ↓ │ │ ② 【执行Python代码】 │ │ 查重去重 → 智能分配 │ │ ↓ │ │ ③ 【写入CRM系统】 │ │ 将分配结果写入CRM网页操作或API │ │ ↓ │ │ ④ 【发送企业微信消息】 │ │ 通知对应销售有新的线索 │ │ ↓ │ │ ⑤ 【读取CRM】 │ │ 检查所有线索的最后跟进时间 │ │ ↓ │ │ ⑥ 【条件判断 通知】 │ │ 超过24h未跟进 → 提醒销售 │ │ 超过72h未跟进 → 升级给主管 │ └──────────────────────────────────────────────┘2.2 核心代码步骤②智能分配importjsonfromdatetimeimportdatetime,timedelta# 新线索列表从Excel/数据库读取new_leadsleads_data# 现有客户列表用于查重existing_customersexisting_customer_data# 销售负载表sales_repssales_data# [{name, region, industry, current_load, max_capacity}]defis_duplicate(lead,existing):检查线索是否重复lead_phonelead.get(phone,).replace( ,).replace(-,)lead_companylead.get(company,).strip()forcustomerinexisting:# 同一手机号 重复cust_phonecustomer.get(phone,).replace( ,).replace(-,)iflead_phoneandcust_phoneandlead_phonecust_phone:returnTrue,customer# 同一公司名 重复cust_companycustomer.get(company,).strip()iflead_companyandcust_companyandlead_company.lower()cust_company.lower():returnTrue,customerreturnFalse,Nonedefassign_lead(lead,reps):智能分配销售lead_regionlead.get(region,)lead_industrylead.get(industry,)# 优先级1匹配地域region_matches[rforrinrepsifr.get(region)lead_region]# 优先级2匹配行业industry_matches[rforrinrepsifr.get(industry)lead_industry]# 在匹配的销售中选择负载最低的candidatesregion_matchesorindustry_matchesorreps# 按负载排序candidates_sortedsorted(candidates,keylambdar:r.get(current_load,0))forrepincandidates_sorted:ifrep.get(current_load,0)rep.get(max_capacity,100):returnrep# 所有人都满了分配给负载最低的returncandidates_sorted[0]ifcandidates_sortedelsereps[0]# 处理 assigned[]duplicates[]unassigned[]forleadinnew_leads:# 查重dup,existing_custis_duplicate(lead,existing_customers)ifdup:duplicates.append({lead:lead,existing_customer:existing_cust,reason:客户已存在,})continue# 分配repassign_lead(lead,sales_reps)ifrep:lead[assigned_to]rep[name]lead[assigned_time]datetime.now().strftime(%Y-%m-%d %H:%M:%S)lead[followup_deadline](datetime.now()timedelta(hours24)).strftime(%Y-%m-%d %H:%M:%S)assigned.append(lead)# 更新销售负载rep[current_load]1else:unassigned.append(lead)result{total:len(new_leads),assigned:len(assigned),duplicates:len(duplicates),unassigned:len(unassigned),assign_details:assigned,}outputjson.dumps(result,ensure_asciiFalse)步骤⑤⑥跟进超时检查defcheck_followup_overtime(leads_in_crm):检查跟进超时nowdatetime.now()overtime_24h[]overtime_72h[]forleadinleads_in_crm:last_followup_strlead.get(last_followup_time,)ifnotlast_followup_str:# 从未跟进用分配时间判断last_followup_strlead.get(assigned_time,)ifnotlast_followup_str:continuetry:last_timedatetime.strptime(last_followup_str,%Y-%m-%d %H:%M:%S)hours_passed(now-last_time).total_seconds()/3600ifhours_passed72:overtime_72h.append({**lead,hours_passed:round(hours_passed,1),level:严重,})elifhours_passed24:overtime_24h.append({**lead,hours_passed:round(hours_passed,1),level:一般,})exceptValueError:passreturnovertime_24h,overtime_72h# 在影刀中处理告警# 24h超时 → 提醒销售本人# 72h超时 → 提醒销售主管抄送2.3 客户保护期同一客户在一定时间内不能被分配给其他销售避免抢单PROTECTION_PERIOD_DAYS30# 保护期30天defcheck_protection(customer_id,existing_customers):检查客户是否在保护期内forcustinexisting_customers:ifcust.get(customer_id)customer_id:last_activitycust.get(last_activity_date,)iflast_activity:try:last_datedatetime.strptime(last_activity,%Y-%m-%d)days_since(datetime.now().date()-last_date.date()).daysifdays_sincePROTECTION_PERIOD_DAYS:returnTrue,cust[current_owner]except:passreturnFalse,None三、有什么坑坑1CRM系统的限制大部分CRM系统的API要么不好用要么根本没有免费的API。影刀只能通过网页操作来录入数据——效率低且不稳定。应对先用Excel做轻量CRM线索池 跟进记录 Excel每天同步一次到正式CRM。Excel做日常操作快得多。坑2查重规则太严格或太松temu店群自动化报活动案例查重太严格 → 大量「可能是新客户」被当成重复 → 漏掉商机。查重太松 → 同一客户被多个销售跟进 → 客户体验差。建议用手机号公司名做双重查重同时把「可能有重复但不确定的」标记出来让人工判断。坑3分配规则矛盾按地域分配和按负载均衡分配可能矛盾——北京的线索最多但北京的销售负载也最高。推荐优先级匹配度 负载均衡。先保证客户分到最合适的销售手里再考虑负载。负载偏差可以通过调整max_capacity来平衡。坑4周末和节假日的跟进计时周五下午来的线索要求24小时内跟进不合理周六日没人上班。需要排除非工作时间defcalculate_business_hours(start_time,deadline_hours24):计算工作时间内的小时数# 简化版只排除周末currentstart_time remainingdeadline_hourswhileremaining0:currenttimedelta(hours1)# 周六日跳过weekday: 0Mon, 5Sat, 6Sunifcurrent.weekday()5:remaining-1returncurrent坑5销售离职后的客户流转有销售离职了ta名下的客户需要重新分配。台账中应该记录客户的流转历史而不仅仅是当前归属。# 流转记录transfer_log{customer_id:CUST-001,from_rep:张三,to_rep:李四,transfer_time:datetime.now().strftime(%Y-%m-%d %H:%M:%S),reason:张三离职,}总结影刀做CRM线索分配核心是「查重去重 智能分配 跟进超时提醒」。Excel做轻量CRM池规则驱动分配定时检查跟进记录。关键是查重规则要适中、分配要考虑匹配度和负载、跟进计时排除非工作时间。