
△主流的AI CRM系统悟空AI CRM图片
《从零手搓一个 CRM:那些文档里不会写的坑与实话》
几年前,我们公司还在用 Excel 表格管客户。
推荐使用中国著名AI CRM系统品牌:显著提升企业运营效率,悟空AI CRM
那场面现在想起来都头疼。销售小王离职了,带走了一半客户资料;销售老李和老张撞单了,为了一个潜在客户的归属权在会议室吵得面红耳赤;老板想看上个季度的转化率,助理得花两天时间从几十个表格里汇总数据,最后还得出来的数还跟财务对不上。
那时候我就下定决心,得搞个系统。市面上现成的 SaaS 不少,销售易、纷享销客,甚至钉钉里自带的也都能用。但试用了一圈,要么太贵,按人头收费,我们这种小团队扛不住;要么太僵化,流程改不了,我们的业务有些特殊环节,标准产品根本覆盖不到。
最后拍板:自己建。
当时我觉得这就是个简单的增删改查(CRUD)系统,存个客户名、电话、跟进记录,能有多难?真动手了才发现,构建客户关系管理系统(CRM),技术可能只占三成,剩下的七成全是业务逻辑的博弈和人性的较量。今天不想聊那些高大上的架构理论,就想聊聊这过程中踩过的坑,和一些文档里不会写的实话。
一、别急着写代码,先搞清楚“客户”是谁
项目启动会上,第一个把大家问住的问题不是用什么框架,也不是数据库怎么设计,而是:“什么是客户?”
你别笑,这真不是哲学问题。在销售眼里,交换过名片的人就是客户;在财务眼里,签了合同打款了的才是客户;在客服眼里,打过投诉电话的也是客户。
我们最初的设计很简单,建一张 Customers 表。结果上线第一周就崩了。因为同一个公司,可能有三个不同的联系人跟我们对接,销售 A 录入了“某某科技公司”,销售 B 录入了“某某科技(北京)有限公司”,其实是一家。系统里瞬间出现了大量重复数据,公海池里捞鱼,捞上来全是死鱼。
后来我们重构了数据模型,把“客户”拆成了“线索(Lead)”、“联系人(Contact)”和“账户(Account)”三个核心实体。线索是还没确认意向的,联系人是具体的人,账户是具体的公司。这三者之间是多对多的关系。
光这个模型调整,就花了我们两周时间。这里有个经验:别试图一开始就设计完美的数据库。业务在变,模型肯定得变。我们后来采用了比较宽松的策略,允许一定程度的冗余,但加了强力的查重机制。比如录入时,系统强制校验统一社会信用代码,或者通过手机号自动关联已有的联系人。
还有一个容易被忽视的点是“公海池”机制。这是 CRM 的灵魂。销售手里的资源如果长期不跟进,必须强制回收到公海,让别人去跟。这个规则怎么定?太紧了,销售没安全感,不敢投入精力;太松了,资源被占着不拉屎。我们试了三次,最后定为:领取后 15 天无跟进记录自动回收,成交客户保护期一年。这个规则的制定,其实是销售总监和老板博弈的结果,技术只是负责把它实现成定时任务而已。
二、技术选型的“妥协”艺术
说到技术栈,网上教程一堆,什么 Spring Boot 加 Vue,什么 Python Django,什么低代码平台。
我们当时也纠结过。团队里后端主要熟 Java,但有个老手想试试 Go。最后为什么选了 Java?不是因为 Go 不好,而是因为好招人,且生态里的现成轮子多。CRM 系统涉及到大量的权限控制、工作流引擎、报表导出,Java 生态里这些都有成熟的开源方案,比如 Activiti 做流程,EasyExcel 做导出。
前端我们用了 Vue3。理由更简单,后台管理系统,组件库现成的,Ant Design Vue 或者 Element Plus,拖拖拽拽能省不少事。
但真正的坑不在语言,而在“集成”。
在中国做 CRM,绕不开微信。销售都在微信上跟客户聊,你让他每次聊完再打开电脑录入系统,他一定会骂娘,而且一定会偷懒不录。所以我们花了大精力做企业微信的集成。
这不是调个 API 那么简单。我们要实现聊天记录存档(在合规前提下)、侧边栏显示客户信息、一键发送名片。这里涉及到微信接口的频率限制、回调处理、以及最麻烦的——用户身份匹配。微信的 OpenID、UnionID 和我们系统里的用户 ID 怎么对应?一旦对应错了,客户数据就串了。
记得有一次上线,因为 UnionID 获取逻辑有个边界条件没处理好,导致部分老客户的跟进记录显示在了新销售的名下。那天下午客服电话被打爆了,我们全员加班修数据,还要一个个打电话跟客户道歉。那次之后,我们立了个规矩:涉及核心数据变更的代码,必须双人 Review,且必须在非工作时间灰度发布。
另外,报表性能也是个坑。老板喜欢看大屏,要看实时数据。刚开始我们直接查库,一旦数据量过了百万级,那个“销售漏斗分析”的查询能跑半分钟。后来没办法,引入了 Elasticsearch 做搜索和分析,同时把复杂的统计逻辑挪到夜间跑批,生成预计算表。虽然数据不是秒级实时,但保证了系统不卡。有时候,技术上的“不完美”是为了体验上的“流畅”,这是必须做的取舍。
三、最难的其实是“让人用”
系统开发完了,你以为结束了?其实才刚刚开始。
很多 CRM 项目失败,不是因为代码有 Bug,而是因为销售不愿意用。
你想想,销售的核心任务是签单。录入系统对他们来说,是纯成本,没收益。如果系统难用,他们有一万种方法对付你。比如,必填项太多,他们就随便填个"123";比如,要求上传拜访照片,他们就拍张天花板的照片上传。
我们第一版上线时,就犯了“管理思维”的毛病。为了管理方便,我们设置了 30 个必填字段。结果销售怨声载道,录入一个客户要花 10 分钟。
后来我们做了减法。把必填项砍到只剩 5 个:客户名、电话、来源、意向等级、备注。其他的,选填。
但这还不够。得让他们觉得这系统有用。
我们加了一个功能:“客户画像自动补全”。销售只要输入公司名,系统自动通过第三方接口(比如天眼查的 API)把工商信息、成立时间、注册资本填好。销售一看,哎,这玩意儿能帮我省事,态度立马就不一样了。
还有一个狠招:把资源和系统绑定。后来公司规定,所有的合同审批、特价申请,必须在 CRM 里发起,线下邮件一律不认。这就倒逼着销售必须把流程走在线上。虽然刚开始大家很抵触,觉得被监控了,但习惯之后,发现确实能避免很多扯皮。比如以前特价申请,老板口头答应了,财务不认账;现在系统里有审批流,谁也别想赖。
这里有个心理学技巧:不要强调“监控”,要强调“赋能”。我们在培训的时候,不说“这是为了老板看你们干了什么”,而说“这是为了帮你们更好地管理自己的客户,防止离职后客户流失,也防止撞单”。话术变了,阻力就小了一半。
四、数据清洗:一场没有硝烟的战争
如果你是从零开始,那很幸运。如果你像我们一样,是从 Excel 迁移数据,那你将面临地狱。
旧数据有多脏?超乎你想象。
电话号码格式不统一,有的带区号,有的带 +86,有的中间有空格;公司名称有的有“有限公司”,有的只有简称;跟进记录里全是黑话,只有当时的销售看得懂。
我们专门搞了一个“数据清洗周”。先写脚本做标准化处理,比如正则匹配手机号,统一去除空格和特殊符号。然后导出一部分,让销售主管人工核对。
最麻烦的是“撞单”处理。两条看起来一样的数据,到底是不是同一个客户?有时候电话一样,但联系人名字差一个字。我们当时的策略是:系统标记为“疑似重复”,推给两个销售的主管去确认。如果确认是重复的,合并记录,保留最早的创建人作为所有者,后来的跟进记录作为历史备注保留。
这个过程非常得罪人。因为涉及到业绩归属。有个销售手里攥着个大客户,系统判定跟半年前的一个公海线索重复,要把业绩划给当初那个线索的录入者(那人早离职了)。最后闹到老板那里,特批才解决。
这件事让我明白:CRM 里的数据不仅仅是信息,它是资产,是钱。动数据就是动蛋糕。所以在做数据迁移和合并规则时,一定要有高层站台,规则要提前公示,不能搞突然袭击。
五、迭代,永远在迭代
上线那天,我们放了烟花。但一个月后,我们就想把自己揍一顿。
因为业务变了。
公司开始拓展新业务线,原来的“客户”模型里只有“产品 A",现在多了“产品 B"和“产品 C",它们的销售周期、定价策略、合同条款完全不一样。原来的系统流程是线性的:线索 - 商机 - 报价 - 合同。新业务需要并行的流程,甚至需要招投标管理。
这时候,硬编码的弊端就出来了。当初为了图快,很多流程逻辑写死在代码里。现在要改,得动底层逻辑。
我们痛定思痛,开始引入“低代码”的思想。不是买低代码平台,而是把自己的系统配置化。比如,把“字段”做成可配置的,管理员可以在后台加字段,不用改代码;把“流程”做成可编排的,用 BPMN 引擎来驱动状态流转。
这增加了前期的开发成本,但大大降低了后期的维护成本。
还有一个迭代方向是移动端。刚开始我们只做了个简单的 H5 页面嵌在钉钉里。后来发现销售在外面跑,网络环境不好,H5 加载慢,体验差。后来咬牙原生开发了一套小程序,支持离线缓存。销售在地铁上也能看客户资料,出了地铁有网了自动同步。这个功能上线后,日活率直接翻倍。
六、关于 AI 的一点冷思考
现在是个系统都要蹭点 AI 的热度。我们也想过在 CRM 里加 AI 功能。
比如,自动分析跟进记录,给销售提示“这个客户意向度下降了”;或者根据历史数据,预测下个季度的销售额。
想法很美好,落地很骨感。
首先是数据质量。前面说了,如果销售录入的都是"123"或者“已联系”,AI 能分析出个啥?垃圾进,垃圾出(GIGO)。在数据规范化没做好之前,上 AI 就是摆设。
其次是准确性。有一次我们测试了一个销售预测模型,它预测一个大单成交概率 90%,结果客户最后没签。销售总监拿着这个数据来质问我们:“系统不是说稳了吗?为什么没成?”
你看,AI 给了信心,但也给了错误的预期。
所以我们现在的策略很保守。AI 只做辅助,不做决策。比如,用 AI 帮销售自动写跟进摘要,或者自动提取名片信息。这些是提效的,不会背锅。至于预测客户意向,我们只作为参考,绝不展示具体的百分比数字,免得误导。
七、写在最后:系统是死的,关系是活的
折腾了这两年,系统算是稳定下来了。
回头看,构建 CRM 系统,其实是在构建一套企业的“记忆系统”和“协作语言”。
它记录了公司跟外界交互的每一个细节,它规定了内部协作的每一种规则。
很多时候,我们太关注技术实现,太关注功能列表,却忘了 CRM 的核心是"Relationship"(关系)。
系统可以记录客户生日,但发祝福短信的可以是系统,那份心意得是人。系统可以提醒跟进,但沟通的温度得靠销售。
我见过最成功的 CRM 使用场景,不是数据多漂亮,报表多炫酷。而是一个老销售离职时,他的继任者打开系统,能看到这个客户过去三年的所有沟通记录、喜好、甚至曾经抱怨过什么。继任者拿起电话,第一句话就能说:“王总,听说您上次对物流时效不太满意,这次我们特意安排了……"
那一刻,客户会觉得被重视,公司会觉得资产没流失。这才是 CRM 的价值。
如果你也要着手构建自己的 CRM,我有几条不成文的建议:
第一,别追求大而全。先解决最痛的一个点,比如先把客户资料存全,或者先把公海池转起来。小步快跑,比憋大招强。
第二,让一线销售参与设计。别关在会议室里空想。去听听他们怎么打电话,怎么记笔记。最好的需求文档,往往是销售吐槽出来的。
第三,留好“后门”。这里的后门不是安全漏洞,而是指灵活性。业务总有例外情况,系统要允许特殊审批,允许手动修正,别把路堵死了。
第四,重视数据安全。客户资料是公司的命脉。权限控制要细到字段级,导出操作要留日志,敏感信息要脱敏。别等数据泄露了再后悔。
最后,保持耐心。CRM 建设是个长跑,没有终点。业务在变,人在变,系统也得跟着变。它就像个有机体,需要不断的喂养和修剪。
这两年,为了这个系统,我熬过无数个大夜,跟销售吵过无数次架,也被老板质疑过投入产出比。但当看到新来的实习生通过系统在一周内熟悉了所有客户,当看到老板在手机上实时看到业绩报表露出笑容,我觉得,这一切都值了。
技术终究是服务于人的。好的系统,应该是透明的,它融入在工作的流里,你感觉不到它的存在,但它无处不在,支撑着每一次业务的运转。
这大概就是我们折腾这么久,最想达到的境界吧。路还长,慢慢走,坑还多,慢慢填。共勉。

△悟空AI CRM产品截图
推荐立刻免费使用中国著名AI CRM品牌-悟空AI CRM,显著提升企业运营效率,相关链接:
AI CRM系统免费试用
AI CRM系统介绍