资讯动态

制造企业云CRM实施路径:从主数据建模到ERP/MES集成

发布时间:2026/9/19 2:32:23 来源:尧图企业网站定制
简介此PDF文档以销售易云CRM为案例系统梳理制造业数字化转型的路径与方法面向制造企业管理者、数字化转型负责人及CRM实施人员。内容引用麦肯锡、IDC等机构数据指出中国制造业对工业互联网的认可度虽高但真正做好转型准备的企业不足六成同时围绕市场获客、销售周期长、渠道协同难、现场服务无追踪等常见痛点展开介绍营销云、销售云、伙伴云、客户服务云、现场服务云及IoT云模块如何协同通过移动端实现360度客户视图、线索培育、商机推进和售后服务闭环。文档还以“销售的一天”为线索展示一线人员如何用移动CRM高效跟进客户、共享信息并加速下单。全文共1个PDF文件大小3.33MB结构紧凑便于随身阅读。目前已有45人学习适合作为理解制造业CRM应用场景与数字化落地思路的快速入门材料。1. 为什么制造业比服务业更需要一套“云CRM”在制造业里CRM 长期被当成销售员的通讯录真正上了系统的企业却不多。直到订单被客户改得面目全非、交货期一拖再拖、销售离职带走整条客户链时大家才意识到制造业缺的不是管客户而是把客户需求转成制造指令的一整套可追溯流程。销售易云 CRM 的价值是把线索到现金的每个节点都留下可核对痕迹并和 ERP、MES 的主数据接上。接下来的内容偏重制造型企业的落地路径先理客户与物料主数据再跑通商机、报价、订单、回款、售后闭环最后用报表和接口暴露交付风险避免又变成一套只记电话号码的客户台账。2. 制造业数字化转型的 CRM 数据建模主数据与关联关系制造型企业和纯销售型公司的最大差异是“客户”和“产品”都分层。客户通常有集团、法人、工厂三套身份签合同的是集团收货开票的是法人下订单的是某个工厂。产品也有编码、批次、BOM 层级、计量单位等多套属性。如果 CRM 里的客户字段只建一个“公司名称”后面做订单关联和售后溯源时就只能靠人工比对。所以第一步不是急着配页面而是先在 CRM 里把主数据模型定下来。常见做法是客户对象复制成“客户主数据 收货方 开票信息”三个子对象产品对象先在外部 ERP 里维护再同步到 CRM 作为只读档案商机、报价、订单都通过查找关系关联到这些主数据。这样后续所有流程改动都不会破坏既有数据。2.1 客户主数据按“集团-法人-工厂”建模销售易云 CRM 的对象模型支持在客户对象上增加查找关系。我一般建议在标准客户对象里增加三个参数客户类型、控股关系、默认工厂。客户类型选“集团/法人/工厂”用于区分当前记录的角色控股关系用自关联指向集团记录默认工厂则关联到负责交付的工厂对象。这样运营人员看单个法人时能直接向上找集团、向下找工厂。用导入模板做初始数据时需要保留外部系统的唯一编码。常见做法是增加“源系统ID”和“数据来源”两个字段ERP 里的客户编码原样填进去后续做接口同步时用它做匹配键而不是用 CRM 自动生成的记录ID。{ customer: { source_system: ERP, source_id: CUST-10086, customer_type: plant, parent_customer_source_id: CUST-10001, default_warehouse: WH-SH-01, credit_term_days: 30 } }这段 JSON 是导入客户主数据的场景示例。source_id是外部 ERP 的唯一编码parent_customer_source_id用来建立工厂到法人的关联credit_term_days是账期配置会在后续回款计划里被引用。如果同步脚本发现source_id已存在就更新账期和关联关系而不是新建记录。CRM 字段类型取值说明同步方向source_system文本ERP / MES / 手工ERP→CRMcustomer_type单选集团 / 法人 / 工厂ERP→CRMparent_customer_source_id文本上级记录的 ERP 编码ERP→CRMdefault_warehouse查找工厂主数据记录ERP→CRMcredit_term_days数字账期天数决定回款计划ERP→CRM配置页面时这类主数据字段最好设为“新增可改、修改需审批”。制造业的客户档案经常会被销售员改动但法人和工厂编码一旦错了订单、回款、售后全都要返工。2.2 物料主数据从 BOM 视角对齐而不是“产品名”制造业在 CRM 里销售的不是“产品”而是“可交付的物料组合”。所以产品对象要至少包含物料编码、物料名称、规格型号、计量单位、主 BOM 版本、可售状态。不要把“产品系列”和“可销售物料”混在一个对象里。常见做法是CRM 产品对象同步 ERP 里“可售物料”视图系列、品牌只作为辅助字段。同步模型用增量更新比全量重建更稳。ERP 里要有一个最后修改时间字段CRM 同步任务每次只取增量。对应关系建议这样建ERP 表CRM 对象关键映射MDM 物料主数据产品item_code, item_name, uomBOM 抬头产品 BOMparent_item, component_itemMRP 视图产品扩展lead_time, min_order_qty销售视图产品扩展sale_unit, tax_rate这里容易踩的坑是BOM 里有半成品和原材料但不是所有层级都能在 CRM 里可售。同步时要在产品对象上增加is_saleable布尔字段只有值为true的物料才出现在商机产品选择器里。否则实施后会出现销售选择了带 BOM 的原材料订单到了 ERP 却无法转生产订单。2.3 商机、报价、订单的状态机设计制造型 CRM 的状态机不能只设置“跟单中/赢单/输单”要尽量贴近生产和交付。常见状态序列是线索确认→商机评审→方案报价→样件确认→小批量试产→批量订单→交付完成→回款关闭。每个状态都绑定一个“提交时必填”的字段集。比如“样件确认”状态要求上传客户签样件确认单“批量订单”状态要求关联一个发货计划。状态字段我一般用自定义选项列表而不是多条记录去传状态。这样报表可以直接按字段分组也能在销售易云 CRM 的流程配置里做字段修改校验。流程上状态从“商机”到“报价”时把负责人从销售代表改为售前工程师就是可选做法但订单阶段要改回销售负责人否则交付问题找不到人。配置好后商机模块的页面布局按状态显示不同区块是制造型 CRM 体验提升最明显的一步。3. 用销售易云 CRM 把“线索到现金”流程跑起来数据模型定好后要把线索、商机、报价、订单、回款串起来。制造型项目里最容易卡住的是报价环节客户要的不只是单价还要交期、账期、最小起订量、是否含运费。如果只给一个金额数字销售后面所有承诺都会变成订单执行的雷。因此流程设计上建议把“报价单”作为独立对象而不是商机的备注。报价单应继承客户和产品的默认账期同时允许销售按这次订单改交付日期。报价单提交后触发审批而不是销售自己点了发送就算报价。审批流里至少要检查两个参数毛利率是否低于下限、交期是否小于物料的正常提前期。3.1 用一段公式把“承诺交期”算出来制造业报价交期不能手填否则销售会给到不现实的日期。常见做法是在报价单对象上设置“承诺交期”字段用公式计算默认值等于当前日期 物料标准提前期 缓冲天数。如果报价单有多行物料取所有行提前期的最大值再加 3 个工作日的缓冲。IF( ISPICKVAL( DeliveryType__c , 紧急), TODAY() MAX( LeadTimeDays__r.MaxLead__c ), TODAY() MAX( LeadTimeDays__r.MaxLead__c ) 3 )这是用类 Salesforce 语法演示的计算逻辑。DeliveryType__c是交付类型“紧急”时不加缓冲LeadTimeDays__r.MaxLead__c指报价行产品关联的最大提前期MAX对多行明细取最大值。实际在销售易云 CRM 里公式语法会写成平台内置的表达式但计算思路一致交期来源必须是物料主数据而不是销售手动输入。3.2 报价转订单时的字段冻结与必填校验很多项目死在“报价一个价订单另一个价”。解决办法是在报价单转订单动作上做字段映射客户、物料、单价、税号、交期都从报价单带过来并在订单对象上把这些字段设置为“从报价锁定”。如果客户现场调价必须新建报价版本不能直接改已审批报价。操作步骤可以这样定先建一张“报价单→订单”字段映射表记录报价单上的来源字段和订单上的目标字段再在 CRM 工作流里加一条校验规则当订单金额与最新报价差异超过 5% 时触发销售总监审批最后在订单对象上把“交付工厂”字段设为必填默认取客户主数据的默认工厂。制造企业多工厂交付订单如果不知道从哪个厂发后面 MES 排产就会出错。动作触发条件执行内容报价转订单点击“转为订单”复制客户、物料行、单价、交期价格校验订单金额差异 5%进入销售总监审批工厂回填订单创建时从客户主数据默认工厂取值并锁死回款计划订单审批通过按账期生成回款计划字段这张表在实施时可以直接作为需求评审的输出物。注意回款计划不能等到月底财务对账再补应该在订单审批通过那一刻就生成首期款计划。制造业大客户的付款常常分预付款、到货款、质保金回款计划对象至少要有期数、比例、预计日期、实际回款日期四个字段。3.3 用脚本批量导入历史商机别让销售手工补想要新系统不变成“空壳”历史数据导入是必须做的一步。常见做法不是让销售逐个在 CRM 里录而是由实施人员从旧 CRM 或 Excel 整理成标准 CSV再通过导入工具或 API 批量写入。对于几十万条商机历史的制造企业我更推荐用 Python 脚本分批调用 CRM 的 REST API而不是直接页面导入因为页面导入失败后很难定位是哪一行出错。import csv import requests API https://api.example.com/crm/v1/opportunities TOKEN Bearer ${CRM_ACCESS_TOKEN} with open(history_opportunities.csv, encodingutf-8-sig) as f: rows list(csv.DictReader(f)) batch_size 200 for start in range(0, len(rows), batch_size): batch rows[start:startbatch_size] payload { records: [ { source_id: r[opp_id], customer_source_id: r[customer_id], name: r[opp_name], amount: float(r[amount]), close_date: r[close_date], stage: r[stage] } for r in batch ] } resp requests.post(API, jsonpayload, headers{Authorization: TOKEN}) if resp.status_code ! 200: print(start, resp.text)这段脚本按 200 条一批写入source_id保留旧系统商机编码customer_source_id指向上一章导入的客户源系统 ID。失败时打印批次起始行和响应体便于排查格式问题。一定要先在小批量上跑通再做全量导入。注意历史导入只适合静态数据。当前正在跟进的活跃商机要单独按模板导出并逐条确认负责人避免导入后所有商机都归到默认公共池导致销售不愿跟进。导入完成后跑一遍“无负责人的商机”列表按区域重新分派。4. 制造业绩效报表从订单积压到交付周期的三个指标口径CRM 上线后管理层问得最多的不是“我们有多少客户”而是“下个月能交付多少”“哪些订单要延期”。制造业绩效报表的起点是把销售进程和交付结果连接起来而不是只看商机金额的完成率。常见问题是销售看 CRM、生产看 MES两边都认为自己没延期最后在交付报表上对不上。在销售易云 CRM 里可以从订单对象和回款计划对象建报表再把结果同步到数仓。但有一个原则报表口径先定义再出数字。同一个“订单交付率”按订单数算、按金额算、还是按准时交付行数算结果差异很大。我一般先列清楚指标定义再交给 BI 工具或 CRM 报表模块取数。4.1 销售漏斗看“制造型转单”的堵点制造业销售漏斗和互联网短周期销售不一样从商机到订单通常要跨一个完整的签样周期。只看漏斗顶部到订单的转化率还不够要在每个阶段加上停留时长。停留最长的阶段就是组织能力的堵点。常见堵点是“样件确认”和“小批量试产”因为这两个节点需要售前和品质部介入销售常常把邮件里的“收到”误当成客户确认。阶段平均停留天正常范围处置动作线索确认31-5超期自动提醒销售方案报价72-10超期触发售前评审样件确认155-20超期需要回退商机小批量试产2010-30超期升级销售总监批量订单103-15超期检查客户采购计划这张表的“正常范围”来自项目复盘也可以在报表里做同比。更有效的做法是用自定义字段记录每个阶段的进入时间和退出时间这样报表才能算出平均停留而不是只看当前阶段。4.2 按 SKU 看毛利与交付延误的交叉报表单纯的销售金额排行会掩盖问题某个产品卖得多但毛利低、延期率高它占用了大量产能却没有贡献利润。所以在 CRM 报表里要把订单行、产品、回款、发票关联起来输出按 SKU 的交叉表。至少要有订单额、成本估算、毛利、准时交付率、平均延期天数五列。成本估算在 CRM 里不一定要精细到工单可以先用 BOM 成本明细或产品主数据上的成本字段。如果 CRM 的数据已经同步到数仓我一般这样写查询SELECT p.item_code, SUM(ol.net_amount) AS order_amount, SUM(ol.cost_amount) AS cost_amount, SUM(ol.net_amount - ol.cost_amount) AS gross_profit, ROUND(AVG(CASE WHEN ol.actual_delivery_date ol.plan_delivery_date THEN 1 ELSE 0 END) * 100, 2) AS on_time_rate, AVG(DATEDIFF(ol.actual_delivery_date, ol.plan_delivery_date)) AS avg_delay_days FROM fct_order_line ol JOIN dim_product p ON ol.item_id p.id WHERE ol.is_deleted 0 GROUP BY p.item_code ORDER BY gross_profit ASC;这段 SQL 把毛利和准时交付放在同一张表里。cost_amount来自 BOM 成本估算plan_delivery_date是报价转订单时带的承诺交期。gross_profit升序排列优先看亏损和低毛利产品。制造型企业往往先看毛利最差的 10 个 SKU再决定是否停产或调价。4.3 用回款计划找“纸面订单”风险制造业最大的隐性风险是订单确认了、货发了、钱收不回来。CRM 里的回款计划对象可以用来识别“纸面订单”已到期未回款比例超过 30% 的客户后续商机不应继续推进。报表需要统计每个客户“已回款金额 / 回款计划总额”并按逾期天数设置预警等级。用 CRM 报表做一个“到期未回款 Top20”视图字段包括客户、订单号、计划回款日期、逾期天数、逾期金额。超过 90 天的记录直接生成任务给对应销售。注意在制造业里回款逾期不一定是销售催款不力也可能是发票开错、收货方地址错误、质保金条款未满足。因此报表要支持下钻到订单和发票明细而不是只看数字。5. 让 CRM 与 ERP/MES 双向同步收尾在数据校验制造业数字化转型的终点不是“上线 CRM”而是让 CRM 里的客户承诺能被 ERP/MES 兑现。常见的做法是部署中间集成平台或同步脚本把客户、物料、报价、订单状态双向同步。这里最容易犯的错是权限和字段锁定外部系统回写时使用管理员账号导致哪条记录被谁改的看不出来。我一般会给外部系统分配专用集成用户并只开放必要的对象和字段权限。5.1 用“增量幂等”方式做订单状态回写当订单在制造端被确认、部分发货、完工后ERP/MES 要把状态回写到 CRM。同步脚本要保证幂等无论消息推送一次还是十次CRM 结果都一致。判断幂等一般用“订单号 状态 最后更新日期”三个键回调的时候先查询是否存在再做更新。def upsert_order_status(records): for r in records: existing crm.get_by_source_id(r[source_id]) if existing is None: crm.create_order({ source_id: r[source_id], status: r[status], updated_at: r[updated_at] }) elif existing[updated_at] r[updated_at]: crm.update_order(existing[id], { status: r[status], updated_at: r[updated_at] })这段伪代码的核心是后写覆盖前写。updated_at必须以来源系统的最后更新时间为准而不是脚本执行时间。如果先到了一条旧数据、后到新数据旧数据会因为updated_at较小被忽略不会覆盖新状态。5.2 上线后先跑一周的一致性核对表系统对接前不要盲目放开双向同步。我一般先只读启动物料和客户同步订单同步在测试环境跑满一周每天输出核对结果。核对表的必查项包括两边的source_id到 CRM 记录 ID 映射是否完整、物料的可售状态是否一致、订单状态是否按正常顺序流转、回款计划是否重复创建。最后一个建议是把核对脚本做成可重复运行的报表每天自动查一次两边数据不一致的数量。如果某一天不一致数量突然从 0 变到 100优先查当天的 ERP 接口日志而不是翻 CRM 后台。核对完成后再放开 CRM 侧的修改权限避免两边同一字段互相覆盖。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价