> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orriven.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Salesforce

> 将业务单元连接到 Salesforce。活动对应 Campaign，人对应 Contact，报名对应 Campaign Member。

[开发工具](/zh/developers/dev-tools)的 **CRM** 标签页将一个业务单元连接到一个 Salesforce 组织。连接之后，orriven 写入：

* 活动为 **Campaign**
* 每个人为 **Contact**
* 每条报名为 **Campaign Member**

[Webhook](/zh/developers/webhooks) 向 HTTPS 端点发送事件。本连接器用固定映射写入 Salesforce 记录。

## 谁能连接

组织的**所有者（Owner）和管理员（Admin）**——与登记 Webhook 端点是同一项权限。连接会把本业务单元的姓名、邮箱与参会记录写入另一个系统。一个业务单元只持有**一个** CRM 连接。

## 建立连接

<Steps>
  <Step title="打开抽屉，选择「CRM」">
    抽屉标题旁的业务单元选择器决定连接的是哪个单元。
  </Step>

  <Step title="连接 Salesforce">
    浏览器打开 Salesforce 登录页以授权 orriven。返回后控制台显示该单元的活动列表，标签页显示连接信息。
  </Step>

  <Step title="确认连接卡片">
    卡片显示 Salesforce 组织名称（或其实例地址）、**实例地址**、**最近同步**时间，以及连续出错后的**连续失败次数**。
  </Step>
</Steps>

<Note>
  登录指向 Salesforce 正式环境还是**沙箱（sandbox）**，由平台按 orriven 部署统一设置，而不是按业务单元设置。上线前需要对接沙箱测试，请联系平台管理员。尚未注册 Salesforce 应用的部署显示「尚未开放」，连接按钮不可用。
</Note>

## 同步内容

映射是固定的。人写为 **Contact，不写为 Lead**。把参会者记为 Lead 会产生重复的 Contact。

| orriven | Salesforce          | 字段                                                                 |
| ------- | ------------------- | ------------------------------------------------------------------ |
| 活动      | **Campaign**        | 名称、类型 `Conference`、活动已发布时为启用状态、开始与结束日期，以及一段注明 orriven 活动公开 id 的描述。 |
| 联系人     | **Contact**         | 邮箱、名与姓（按第一个空格拆分；只有一个词时作为姓）。按**邮箱**匹配。                              |
| 报名      | **Campaign Member** | 所属 Campaign、所属 Contact，以及状态：已确认的报名为 `Responded`，其余为 `Sent`。        |

字段值在**同步执行时**读取，而不是事件发生的那一刻。同步执行前更正的姓名，写入的就是更正后的值。

## 同步时机

某人加入活动时排入同步：**组织者在控制台录入参会者**、**报名确认**（结账完成或审核通过）、以及在活动门口**签到**。每次按顺序排入三项——Campaign、Contact，然后是 Campaign Member。Campaign Member 会等待前两项完成，而不是判为失败。

订单过期、问卷提交等其他事件不同步。只同步连接建立**之后**产生的记录。此前的报名不会回填。

## 重复记录

同一个人报名第二场活动——或在同一场活动报名多次——在 Salesforce 中仍然只有**一条 Contact**，只是多一条 Campaign Member。每个本地对象对应一条 Salesforce 记录。Salesforce 按邮箱匹配是第二道检查。

## 同步记录

连接卡片下方列出最近的同步：**对象**（Campaign、Contact、Campaign Member）、**对应内容**（活动名称或此人邮箱）、生成后的 **Salesforce ID**，以及状态——**排队中**、**同步中**、**已同步**或**失败**。

失败按与 Webhook 相同的时间表重试——立即一次，之后距上一次分别为 1 分钟、5 分钟、30 分钟、2 小时、6 小时，合计六次——之后标记为「失败」。失败行提供**重试**。失败会增加连接卡片上的计数。平台不会断开该集成。

Salesforce 出错不会阻塞或回滚排入同步的报名或结账。

## 断开连接

**断开连接**立即停止后续同步。已写入 Salesforce 的记录保留，既有的对应关系也会保留，因此日后重新连接不会产生第二份副本。连接与断开都记入[审计日志](/zh/organization/audit-logs)。

## 注意事项

* **一个业务单元，一个连接。** 连接的范围就是建立它的那个单元。
* **写 Contact，不写 Lead。** 映射固定，没有字段映射器。
* **字段取同步当时的值。** Salesforce 收到的是同步执行时的值。
* **擦除不传播。** 在 orriven 中执行数据隐私擦除，不会删除 Salesforce 里对应的记录。该 CRM 遵循其自身的保留策略。
* **不回填。** 只同步连接之后的报名。

## 相关页面

<CardGroup cols={2}>
  <Card title="开发工具" icon="terminal" href="/zh/developers/dev-tools">
    「CRM」标签页所在的抽屉。
  </Card>

  <Card title="Webhook" icon="webhook" href="/zh/developers/webhooks">
    面向 Salesforce 之外系统的 HTTPS 事件推送。
  </Card>

  <Card title="参会者" icon="users" href="/zh/events/attendees">
    报名与联系人的来源。
  </Card>

  <Card title="成员与角色" icon="user-shield" href="/zh/organization/members-roles">
    为什么连接只属于所有者/管理员。
  </Card>
</CardGroup>
