跳转到主要内容
这是一个使用工作流创建公式字段的示例——具体为日期计算。
跟踪商机进入各阶段的时间有助于识别瓶颈并衡量交易速度。 本指南将引导你设置自定义字段和一个工作流,以自动记录商机进入各阶段的时间,并计算其在上一个阶段停留的天数。

步骤 1:创建自定义字段

每个阶段需要两种字段:
  • 日期与时间字段:记录商机进入各阶段的时间
  • 数字字段:存储商机在各阶段停留的天数

创建“最近进入”字段

  1. 进入 设置 → 数据模型 → 商机
  2. 针对每个阶段,点击 + 添加字段 并进行配置:
    • 名称:最近进入[阶段名称](例如:“最近进入 新建”、“最近进入 已合格”)
    • 类型:日期与时间
    • 描述:商机进入此阶段的时间戳
  3. 单击 保存
创建以下字段:
  • 最近进入 新建
  • 最近进入 已合格
  • 最近进入 会面
  • 最近进入 提案
  • 最近进入 谈判
  • 最近进入 赢单
  • 最近进入 输单

创建“阶段停留天数”字段

  1. 针对每个阶段,点击 + 添加字段 并进行配置:
    • 名称:[阶段名称]停留天数(例如:“新建停留天数”、“已合格停留天数”)
    • 类型:数字
    • 描述:在此阶段停留的天数
  2. 单击 保存
创建以下字段:
  • 新建停留天数
  • 已合格停留天数
  • 会面停留天数
  • 提案停留天数
  • 谈判停留天数
赢单和输单为最终阶段,因此无需创建“停留天数”字段。

可选:将字段设为只读

如果不希望用户手动编辑这些计算字段:
  1. 进入 设置 → 角色
  2. 选择要配置的角色
  3. 找到商机对象
  4. 将“最近进入”和“停留天数”字段设置为只读

步骤 2:创建工作流

此单个工作流同时处理两项任务:
  • 记录进入新阶段的时间戳
  • 计算在上一个阶段停留的天数

创建工作流

  1. 进入 工作流
  2. 点击 + 新建工作流
  3. 命名为”跟踪阶段时长”

配置触发器

  1. 添加一个记录已更新触发器
  2. 将对象选择为商机
  3. 筛选条件:阶段字段已更新

为每个阶段添加分支

要创建新分支,在工作流画布上右键点击并选择 新建操作。 然后,从上一个节点拖动箭头到此新操作,将其与上一个节点连接。

分支 1:阶段 = 新建(第一阶段) 由于这是第一阶段,我们只需记录进入时间戳——无需计算上一阶段。
  1. 添加一个筛选节点:阶段 = 新建
  2. 添加一个代码操作:
export const main = async (): Promise<object> => {
  return { now: new Date().toISOString() };
};
  1. 添加一个更新记录操作:
    • 记录:触发的商机
    • 字段:最近进入 新建
    • 值:来自代码节点的now

分支 2:阶段 = 已合格 当进入“已合格”阶段时,同时记录进入时间并计算在“新建”阶段停留的天数。
  1. 添加一个筛选节点:阶段 = 已合格
  2. 添加一个代码操作:
export const main = async (params: {
  lastEnteredPreviousStage: Date;
}): Promise<object> => {
  const { lastEnteredPreviousStage } = params;

  const now = new Date();
  const entryDate = new Date(lastEnteredPreviousStage);
  const diffTime = Math.abs(now.getTime() - entryDate.getTime());
  const daysInPreviousStage = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

  return {
    now: now.toISOString(),
    daysInPreviousStage: daysInPreviousStage
  };
};
  1. 配置代码节点输入:将lastEnteredPreviousStage映射到最近进入 新建字段
  2. 添加一个更新记录操作:
    • 记录:触发的商机
    • 要更新的字段:
      • 最近进入 已合格 = now
      • 新建停留天数 = daysInPreviousStage

分支 3:阶段 = 会面 当进入“会面”阶段时,同时记录进入时间并计算在“已合格”阶段停留的天数。
  1. 添加一个筛选节点:阶段 = 会面
  2. 添加一个代码操作:
export const main = async (params: {
  lastEnteredPreviousStage: Date;
}): Promise<object> => {
  const { lastEnteredPreviousStage } = params;

  const now = new Date();
  const entryDate = new Date(lastEnteredPreviousStage);
  const diffTime = Math.abs(now.getTime() - entryDate.getTime());
  const daysInPreviousStage = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

  return {
    now: now.toISOString(),
    daysInPreviousStage: daysInPreviousStage
  };
};
  1. 配置代码节点输入:将lastEnteredPreviousStage映射到最近进入 已合格字段
  2. 添加一个更新记录操作:
    • 记录:触发的商机
    • 要更新的字段:
      • 最近进入 会面 = now
      • 已合格停留天数 = daysInPreviousStage

对剩余阶段继续如下操作:
阶段记录计算
提案最近进入 提案会面停留天数
谈判最近进入 谈判提案停留天数
赢单最近进入 赢单谈判停留天数
输单最近进入 输单谈判停留天数
各分支无需合并——当满足其阶段条件时,各自独立运行。

步骤 3:分析阶段时长

在记录了时间戳和天数后,你现在可以分析交易速度。

创建“慢速交易”视图

  1. 创建商机的表格视图
  2. 添加列:名称、阶段、[上一阶段]停留天数、金额
  3. 按“停留天数”字段排序(降序)
  4. 按阶段筛选,以便一次专注一个阶段
位于顶部的交易在上一阶段停留时间最长。

使用汇总

在你的销售管道看板视图中:
  1. 点击阶段名称旁的数字
  2. 选择平均值
  3. 选择一个“停留天数”字段
即可显示交易在各阶段的平均停留时间。

摘要

组件用途
“最近进入”字段存储商机进入各阶段的时间
“停留天数”字段存储在各阶段停留的天数
工作流一次性记录时间戳并计算天数
视图与汇总分析交易速度并识别瓶颈

相关内容