mcpField
C
customer-support-integration

customer-support-integration

github.com/finsilabs其他6083 次安装5 天前更新
代码仓库

关于 customer-support-integration

用于规划电商客服系统集成的技能,将订单信息带入工单并支持路由和更新自动化。内容涵盖 Shopify、WooCommerce、BigCommerce 及自定义店面的平台选择与实施方式。

主要功能

  1. 01选择客服系统与平台
  2. 02在工单中显示订单信息
  3. 03配置 VIP 工单路由规则
  4. 04按订单事件创建工单
  5. 05提供 CSAT 同步指导

适用场景

  1. 01让客服查看订单详情
  2. 02将高价值客户转给 VIP 团队
  3. 03为配送或欺诈事件创建工单
  4. 04将客服评分同步到 CRM

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill customer-support-integration

安装后在 Claude Code 中输入/customer-support-integration确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

tile.json
evals/intercom-canvas-kit-order-context-sideba/
criteria.json
task.md
evals/zendesk-ticket-auto-creation-from-order-/
criteria.json
task.md
evals/zendesk-webhook-csat-sync-and-vip-ticket/
criteria.json
task.md

详细介绍

客户支持集成

概述

将帮助台连接到商店后,每张支持工单都会自动显示订单历史、物流跟踪信息和客户消费金额,从而减少 40–60% 的平均处理时长,因为客服人员无需在不同系统之间切换。对于 Shopify,Gorgias 是专为该平台打造的原生帮助台。对于其他平台以及 Zendesk/Intercom 用户,可通过专用集成应用连接系统。只有在需要深度双向自动化(根据订单事件自动创建工单、VIP 路由、将 CSAT 同步回 CRM),而现成应用无法提供这些功能时,才构建自定义集成。

何时使用此技能

  • 支持人员反复向客户索要订单号,因为工单中不会自动填入订单号
  • 实施 Zendesk Sunshine Apps 或 Intercom Canvas Kit,以便在客服人员界面中显示订单详情
  • 根据订单事件自动创建工单(配送失败、欺诈审核、延期交货)
  • 根据订单金额路由工单,优先处理 VIP 客户
  • 将支持 CSAT 评分同步回 CRM,用于客户健康度评分

核心说明

步骤 1:确定平台并选择合适的帮助台
平台推荐帮助台原因
ShopifyGorgias专为 Shopify 打造;可深入访问订单数据,宏变量可提取订单信息,并可在工单中一键退款、取消订单或重新下单
ShopifyZendesk适合已在使用 Zendesk 的团队;从 App Store 安装 Zendesk 的 Shopify 应用
WooCommerceGorgias 或 FreshdeskGorgias 支持 WooCommerce;使用 Freshdesk 的团队可安装 Freshdesk + WooCommerce 插件
BigCommerceGorgias 或 Zendesk两者都在各自的应用市场提供 BigCommerce 集成
自定义 / 无头平台Zendesk 或 Intercom 搭配自定义集成构建侧边栏应用,将订单上下文注入工单

步骤 2:按平台进行设置

Shopify

选项 A:Gorgias(Shopify 推荐)

Gorgias 是使用最广泛的 Shopify 客户支持帮助台,提供了最深入的平台集成。

  1. 从 Shopify App Store 安装 Gorgias
  2. 授权 Gorgias 访问 Shopify 商店数据
  3. 当客户使用其 Shopify 账户所绑定的邮箱地址发送邮件时,Gorgias 会自动将订单历史、客户详情和配送状态提取到每张工单中

Gorgias 会自动向客服人员显示:

  • 客户姓名、邮箱、消费总额、订单数量
  • 所有历史订单的状态、商品和物流跟踪信息
  • 所有渠道的实时聊天记录

设置自动化规则:

  1. 前往 Gorgias → Automation → Rules
  2. 创建规则,例如:
    • 当客户生命周期价值 > $500 时,自动为工单添加“VIP”标签
    • 自动将 VIP 工单分配给高级支持团队
    • 当工单包含“我的订单在哪里”时,自动回复订单状态

在 Gorgias 中一键执行的操作:

  • 直接在工单侧边栏中退款、取消订单或复制订单
  • 无需离开 Gorgias,即可为订单应用折扣码
  • 为换货创建草稿订单

Gorgias 宏(含动态变量的模板回复):

  • 创建可自动提取订单数据的宏:Your order {{order.name}} is currently {{order.fulfillment_status}}
  • 前往 Settings → Macros 创建和管理宏

WooCommerce

WooCommerce 的 Gorgias:

  1. 从 WordPress.org 安装 Gorgias WooCommerce 插件,或通过 Gorgias 集成进行连接
  2. 连接你的 WooCommerce 商店 — Gorgias 会自动拉取订单历史记录

WooCommerce 的 Freshdesk:

  1. 从 WordPress 插件目录安装 Freshdesk Help Desk for WooCommerce
  2. 该插件会根据 WooCommerce 订单事件创建 Freshdesk 工单
  3. Freshdesk 客服人员可通过集成在工单侧边栏中查看客户订单详情

与 Zendesk 手动集成:

  1. 从 Zendesk App Marketplace 安装 Zendesk for WooCommerce
  2. 客服人员可以通过电子邮件搜索客户,并在工单侧边栏中查看其订单历史记录

BigCommerce

BigCommerce 的 Gorgias:

  1. 从 BigCommerce App Marketplace 安装 Gorgias
  2. 连接你的商店 — 与 Shopify 的深度集成相同

BigCommerce 的 Zendesk:

  1. 从 Zendesk App Marketplace 安装 BigCommerce 应用
  2. 客服人员可在工单侧边栏中查看客户详情和订单历史记录

自定义/无头架构

构建 Zendesk Sunshine App(侧边栏面板)或 Intercom Canvas Kit 应用,将订单上下文注入每张工单:

Zendesk 侧边栏应用 — 数据端点:

// GET /api/support/[email protected]
export async function getZendeskContext(req: Request, res: Response) {
  const customerEmail = (req.query.email as string)?.toLowerCase();
  if (!customerEmail) return res.json({ customer: null, orders: [] });

  const [customer, recentOrders] = await Promise.all([
    db.customers.findByEmail(customerEmail, { include: ['segmentScore'] }),
    db.orders.findMany({
      where: { customerEmail },
      orderBy: { createdAt: 'desc' },
      take: 5,
      include: { lineItems: { include: { product: true } }, shipments: true },
    }),
  ]);

  res.json({
    customer: customer ? {
      lifetimeValue: customer.totalSpentCents / 100,
      orderCount: customer.orderCount,
      segment: customer.segmentScore?.segment,
      tags: customer.tags,
    } : null,
    orders: recentOrders.map(o => ({
      number: o.orderNumber,
      status: o.status,
      total: o.totalCents / 100,
      createdAt: o.createdAt,
      trackingUrl: o.shipments[0]?.trackingUrl,
      items: o.lineItems.map(i => ({ name: i.product.name, quantity: i.quantity })),
    })),
  });
}

将高价值工单路由到 VIP 队列:

// Called when a new Zendesk ticket is created (via Zendesk webhook)
export async function applyTicketRouting(ticketId: string) {
  const ticket = await fetchZendeskTicket(ticketId);
  const customerEmail = ticket.requester?.email?.toLowerCase();
  if (!customerEmail) return;

  const customer = await db.customers.findByEmail(customerEmail, { include: ['segmentScore'] });
  if (!customer) return;

  const isVIP = ['champions', 'cannot_lose_them'].includes(customer.segmentScore?.segment ?? '');
  const isHighValue = customer.totalSpentCents >= 100000;  // $1,000+

  if (isVIP || isHighValue) {
    await fetch(`https://${process.env.ZENDESK_SUBDOMAIN}.zendesk.com/api/v2/tickets/${ticketId}.json`, {
      method: 'PUT',
      headers: { Authorization: getZendeskAuthHeader(), 'Content-Type': 'application/json' },
      body: JSON.stringify({
        ticket: {
          priority: 'urgent',
          group_id: process.env.ZENDESK_VIP_GROUP_ID,
          tags: [...(ticket.tags ?? []), 'vip-customer'],
        },
      }),
    });
  }
}

// Auto-create ticket on delivery failure
export async function onDeliveryFailed(shipmentId: string) {
  const shipment = await db.shipments.findById(shipmentId, { include: ['order.customer'] });
  await fetch(`https://${process.env.ZENDESK_SUBDOMAIN}.zendesk.com/api/v2/tickets.json`, {
    method: 'POST',
    headers: { Authorization: getZendeskAuthHeader(), 'Content-Type': 'application/json' },
    body: JSON.stringify({
      ticket: {
        subject: `Delivery failed — Order #${shipment.order.orderNumber}`,
        comment: { body: `Delivery attempt failed on ${new Date().toDateString()}. Carrier: ${shipment.carrier}. Tracking: ${shipment.trackingNumber}.` },
        requester: { email: shipment.order.customer.email },
        priority: 'high',
        tags: ['delivery-failure', 'auto-created'],
      },
    }),
  });
}

第 3 步:为 VIP 客户设置工单路由规则

将工单路由给最优秀的客服人员,确保最有价值的客户能更快获得回复。

Gorgias 路由规则:

  1. 前往 Automation → Rules → Create Rule
  2. 条件:Customer → Total spent → is greater than → $500
  3. 操作:Add tag → vip、Assign to → VIP Support Team、Set priority → Urgent

Zendesk 触发器:

  1. 前往 Admin → Business Rules → Triggers → Add trigger
  2. 条件:工单标签包含 "vip-customer"
  3. 操作:分配给群组(VIP Support),将优先级设为 Urgent

定义 SLA 目标:

  • VIP 客户:1 小时内首次回复
  • 普通客户:24 小时内首次回复
  • 在 Gorgias → Settings → Business hours and SLAs 或 Zendesk → Admin → SLAs 中设置这些目标

最佳实践

  • Shopify 商店使用 Gorgias — 它是专为此场景打造的解决方案;设置时节省的时间和集成的深度都值得订阅费用
  • 切勿将服务台 API 令牌存储在客户端代码中 — Zendesk 和 Intercom API 令牌拥有对所有工单的写入权限;始终通过服务器代理请求
  • 将订单 ID 附加到每张工单 — 这是将支持系统与商务数据库关联起来,并实现双向同步和自动化的关键
  • 确保侧边栏中的订单上下文保持最新 — 数据缓存时间最多为 60 秒;客服人员看到过时的订单状态,比看到加载指示器更糟
  • 记录客服人员对订单执行的每项操作 — 对从服务台内发起的退款、订单变更和状态更新保留审计记录

常见问题

问题解决方案
由于电子邮件查找区分大小写,客服人员看到的客户有误查找前将所有电子邮件统一转换为小写;[email protected] 和 [email protected] 必须匹配到同一位客户
未验证 Webhook 载荷在处理任何载荷前,使用 Zendesk/Gorgias Webhook 签名密钥实现 HMAC 签名验证
CSAT 同步创建了重复的客户记录始终先通过电子邮件查找;切勿根据支持 Webhook 创建新的客户记录 — 应关联到现有记录,否则跳过
自动创建的工单缺少订单上下文创建工单时,将订单 ID 设置到自定义工单字段中;这有助于实现双向同步和准确路由

相关技能

  • @live-chat-commerce
  • @customer-segmentation
  • @customer-lifetime-value

评论

支持 Markdown