文档
如何启用插件?
购买后,您需要将插件安装到您的 WordPress 网站上。以下是安装方法。.
步骤 1:安装
登录您的 WordPress 网站并导航至 插件 → 添加插件 → 上传插件. 上传压缩文件并激活。.
步骤 2:注册插件
在左侧导航栏中,导航至 表单 → 设置 → Salesforce. 在 执照 点击部分 管理许可证, 输入您的许可证密钥并点击 激活许可证.
步骤 3:连接 Salesforce
获得许可后,滚动到 Salesforce Connection 同一设置页面上的“部分”(标题为: 添加 Salesforce 帐户 (账户存在后)并连接您的第一个 Salesforce 账户(完整说明如下)
好了!您现在可以开始将表单映射到 Salesforce 了。.
如何将 Salesforce 帐户与 OAuth 连接?
第一步:了解应用类型
在 Salesforce 中,您可以创建外部客户端应用程序(这是现代选项,也是 Salesforce Spring '26 版本之后创建的新组织唯一可用的选项)或连接应用程序(这是旧选项,仍然支持允许使用该选项的现有组织)。该插件对这两种应用程序的处理方式完全相同。.
在 Salesforce 设置中,导航至以下选项之一:
- 设置 → 外部客户端应用程序管理器 → 新外部客户端应用程序 (受到推崇的)
或旧版连接应用程序(在新组织中默认禁用)
- 设置 → 应用管理器 → 全新互联应用
连接前须知:授权连接的 Salesforce 用户需要对您要同步的每个对象拥有创建权(对于会更新的数据源,还需要拥有编辑权)。该插件仅列出用户实际可以创建的对象。.
步骤 2:创建新的外部客户端应用程序
注意:在下面的截图中,未勾选或为空的设置表示无需更改,请保持原样。.
登录 Salesforce 后,点击屏幕右上角的齿轮图标:

在屏幕左侧的“快速查找”搜索框中,搜索“外部客户端应用程序”,然后选择“外部客户端应用程序管理器”:

在屏幕右侧,点击“新建外部客户端应用”按钮:

在“基本信息”栏中输入以下内容:
- 外部客户端应用程序名称(API 名称将自动生成,请勿更改)
- 联系邮箱
- 将分发状态保留为“本地”。”

在“API(启用 OAuth 设置)”下,执行以下操作:
- 启用 OAuth
- 输入您的回调 URL(位于插件设置中的“表单”>“设置”>“Salesforce”>“OAuth 回调 URL”下)。
- 在 OAuth 范围下,选择以下选项:
- “通过 API 管理用户数据 (api)”
- “随时执行请求(refresh_token,offline_access)”

以下设置请勿更改:

以下其余设置也请保持不变:

点击“创建应用”,即可进入步骤 3:

步骤 3:编辑应用授权策略
应用创建完成后,我们需要编辑应用策略。点击返回“外部客户端应用管理器”。”

然后选择您新建的应用,并点击如下所示的“编辑”按钮:

然后打开“OAuth 策略”下拉菜单,将刷新令牌策略设置为“特定时间后过期”,并将其设置为 365 天或更长。插件会自动刷新短期访问令牌,但一旦刷新令牌本身过期,Salesforce 将拒绝连接,您必须在“表单”→“设置”→“Salesforce”下重新连接帐户。更长的策略意味着您最多每年只需执行一次此操作,而不是每 30 天一次。.
我们建议您设置提醒,以便检查网络连接,以防万一。.

步骤 4:将新的外部客户端应用程序连接到 Gravity Forms
Salesforce 设置已完成,现在我们需要将 Gravity Forms 连接到该应用。在 Salesforce 中,返回“外部客户端应用管理器”并选择您的应用。.

点击“设置”,向下滚动到“OAuth 设置”并打开。你会看到一个名为“消费者密钥和密钥”的按钮,点击该按钮。.

您很可能会看到身份验证页面,并且系统会向您发送一个验证码。输入验证码并点击“验证”。”

验证完成后,您将看到消费者密钥和消费者密文。保持该标签页打开,在新标签页中转到“表单”>“设置”>“Salesforce”下的插件设置,并按照以下屏幕截图所示添加这些密钥。填写完这两个字段后,按钮就会出现:点击“连接帐户”(如果您已连接帐户,则会显示“添加帐户”)。.

您会看到 Gravity Forms 现在已连接到 Salesforce,我们可以进入步骤 5(最后一步):

步骤 5:向表单添加 Salesforce 数据源
转到要连接到 Salesforce 的 Gravity Forms 的设置,然后添加新的数据源:

最后,根据你的喜好配置订阅源设置:

现在一切就绪!如果您想连接其他 Salesforce 帐户并为其他表单创建数据源,请重复以上 5 个步骤。.
如何连接到组织 ID?(Web 到销售线索/Web 到个案)
如果您的 Salesforce 组织没有 API 访问权限(某些 Essentials/Professional 版本),您可以回退到旧版 Web-to-Lead / Web-to-Case 端点。.
第一步: 在 Salesforce 中,找到您的 组织 ID 在下面 设置 → 公司信息.
第二步: 在 WordPress 中,在 Salesforce 设置页面上,切换 连接方式 下拉菜单选择“组织 ID(Web 到潜在客户/案例)”。.
步骤 3: 粘贴您的组织 ID 并点击 保存组织 ID 帐户. 从 1.5.0 版本开始,它会读取表单中输入的值,因此不再需要先单独保存设置。.
小心: 组织 ID 模式仅支持线索和个案。更新、删除、文件上传、预填充和选项列表映射需要 OAuth 帐户。.
如何设置订阅源?
第一步: 编辑表单 → 表单设置 → Salesforce → 添加新表单.
第二步: 选择 Salesforce 帐户, Salesforce 对象 (潜在客户、联系人、客户、自定义对象……) 同步模式 (默认值,, 如果记录已存在,则创建或更新记录。, (在大多数情况下是正确的)。.
步骤 3: 将 Gravity Forms 字段映射到 Salesforce 字段。必填的 Salesforce 字段会用星号标记,以免您遗漏。.
步骤 4(可选): 在下面 重复匹配, , 打钩 启用主键重复匹配 更新按电子邮件、外部 ID 或任何其他可筛选字段匹配的现有记录。.
步骤 5(可选): 配置条件逻辑、冲突检查、所有者分配、文件上传、备注或活动成员资格。.
步骤 6: 保存信息流并提交测试条目。查看条目详情页面中的 Salesforce 侧边栏。由于同步在后台运行,您可能会短暂看到蓝色的“待处理”状态,然后是新记录的 ID 以及指向 Salesforce 中该记录的直接链接。.
我需要启用哪些同步行为?
一旦保存了信息流,记录创建功能就会立即生效。生命周期行为是可选的,具体请参阅相关说明。 表单 → 设置 → Salesforce → 同步设置, 在你勾选它们之前,这四个选项都处于关闭状态:
- 编辑条目时同步更新 将条目编辑推送至关联的 Salesforce 记录。.
- 当条目被永久删除时,也删除 Salesforce 记录。 清空回收站时,该记录也会被删除。将条目移至回收站不会对 Salesforce 产生任何影响。.
- 从回收站/垃圾邮件箱恢复条目时,重新同步条目数据 推送在条目被删除期间所做的任何编辑,如果记录在此期间在 Salesforce 中删除,则创建替代记录。.
- 将 Gravity Forms 表单条目备注作为备注记录发送到 Salesforce 镜像管理员添加到条目中的备注,并在删除备注时删除 Salesforce 副本。.
功能详情
连接方式
该插件支持两种将 Gravity Forms 连接到 Salesforce 的方式。请选择与您组织 API 访问级别相匹配的方式。.
- 使用 PKCE 的 OAuth 2.0(推荐). 使用连接应用或外部客户端应用(Spring '26+ 的替代方案)进行现代化的 Salesforce 身份验证。您的服务器上不会存储静态 API 密钥,插件会自动刷新访问令牌,只要应用的刷新令牌策略不使其过期,连接就会一直保持有效。所需权限范围:
api和refresh_token/offline_access. 适用于所有具有 API 访问权限的 Salesforce 版本(企业版、无限版、性能版、开发人员版或带有 API 访问插件的专业版)。. - 网络线索转化/网络案例转化(组织 ID). 仅使用 Salesforce 组织 ID 的旧版提交端点。适用于没有 API 访问权限的组织(部分 Essentials 和 Professional 版本)。限制:仅限潜在客户和个案对象,不支持更新、删除、文件上传、预填充和选项列表映射。.
两种模式可以同时用于同一个 WordPress 站点。您可以为主组织创建一个 OAuth 帐户,为辅助组织创建一个组织 ID 帐户,每个订阅源都会独立选择同步到哪个帐户。.
多账户支持
您可以将任意数量的 Salesforce 帐户连接到同一个 WordPress 网站。常见设置:
- 沙盒和生产环境:在沙盒环境中测试数据,然后通过一个下拉菜单更改切换到生产环境。.
- 机构每个客户端组织都有自己的连接;每个数据源选择与哪个客户端同步。.
- 母公司和子公司:不同的表格会路由到您公司结构中的不同组织。.
系统始终会将一个帐户标记为默认帐户,这样简单的网站就无需考虑使用哪个帐户。它也是备用帐户:未设置帐户或帐户被移除的订阅源将同步到默认帐户。移除帐户前会发出警告,因此如果默认组织并非订阅源的写入位置,请先将受影响的订阅源指向其他帐户。.
每个账户都有自己的连接健康状况。插件会记录每个账户的上次刷新时间、上次成功时间和上次失败时间,账户列表会显示“已连接”(包含上次验证时间)、“需要注意”或“需要重新连接”状态,以便在提交失败之前发现连接中断。每个账户都会保留其连接的 Salesforce API 版本(新连接默认使用旧版本)。 v63.0删除并重新连接帐户,即可将其迁移到更新的版本。删除帐户会撤销其在 Salesforce 中的令牌,而不仅仅是将其从本地删除。.
支持的 Salesforce 对象
您可以同步到 任何 Salesforce 对象 已连接用户可以访问标准对象或自定义对象。对象下拉菜单会根据您组织的实际架构动态构建,因此您将看到 Salesforce 提供的所有标准对象(客户、联系人、潜在客户、商机、个案、市场活动、任务、事件、备注、用户等等),以及您定义的每个自定义对象。.
对于自定义对象,请选择 “自定义(请在下方输入)” 并输入 API 名称(例如,, My_Object__c)。选项列表值、查找关系、文件附件和预填充功能对自定义对象和标准对象都适用。.
跨数据源链接记录
一次提交可以创建多个相关记录。为每个对象添加一个动态,然后将动态列表中的行拖动到所需的顺序。动态会按此顺序在后台依次运行。在后续的动态中,将查找字段(AccountId、ContactId 或任何自定义查找字段)映射到 自定义值 并进入 {salesforce_id:FEED_ID}, 其中 FEED_ID 是先前订阅源的 ID。该标签解析为该订阅源为此条目创建或更新的记录,因此新记录会链接到该记录。订阅源 ID 是 fid= 编辑信息源时,地址栏中的值。.
典型的链式结构是先添加一个账户信息流,然后添加一个联系人信息流,并将账户 ID 设置为…… {salesforce_id:12} (12 为客户信息流的 ID),然后创建一个 AccountId 设置相同的商机信息流。链中的每个信息流都应使用同一个 Salesforce 客户,因为记录 ID 仅存在于发出该记录的组织中。如果之前的信息流由于条件逻辑不匹配或冲突检查而未创建记录,则标签为空,查找字段保持未设置状态,而不是使用另一个信息流的 ID。.
字段级选择列表映射
对于下拉列表、多选列表、单选按钮和复选框字段,您可以直接从 Salesforce 选择列表中提取选项,而无需手动输入。每个字段有两种模式:
- 填充选项(可编辑) 将选项列表的值复制到 Gravity Forms 字段中一次。管理员之后可以编辑或删除选项。这适用于“我想要一个初始列表,但可能会对其进行精简”的情况。”
- 实时同步(始终与 Salesforce 保持一致) 每次表单渲染时都会刷新选项。选项在表单编辑器中锁定,以防止更改。当 Salesforce 是唯一数据源(状态字段、潜在客户来源、州/国家/地区选择列表等)时,请使用此功能。.
向表单用户显示 Salesforce 标签;提交 Salesforce 值。. 表格上显示的是“加利福尼亚州”,但提交的却是其他州。 CA, 这正是 Salesforce 州/国家选择列表所期望的,而且您不需要映射表。.
这里“记录类型”也是一个下拉列表。. 对于任何具有可选记录类型的对象,“记录类型”选项都会与实际的选择列表一起显示在同一字段映射 UI 中。表单会向用户显示记录类型名称(例如,“捐赠者”);提交的值是 Salesforce 记录类型 ID。将该字段映射到数据源中的 RecordTypeId,即可将所选记录类型设置到已创建或已更新的记录中。仅列出已连接的 Salesforce 用户实际可以分配的记录类型(隐式主类型和不可用类型将被过滤掉),并且支持“填充”和“实时同步”模式。.
字段映射侧边栏中的 Salesforce 对象下拉菜单会将八个最常用的标准对象(客户、联系人、潜在客户、商机、个案、市场活动、任务、备注)置顶显示,这样您就无需滚动浏览组织中的所有自定义对象来查找它们。在 Feed 设置屏幕上,更改对象或客户以及字段映射后,匹配字段和对象选择器会立即从 Salesforce 重新加载,而无需等待保存。.
主键匹配(无重复项)
大多数 Salesforce 管理员不希望每次表单提交都创建一个新的潜在客户。启用此功能 主键匹配 当有匹配项时,更新现有记录。.
- 选择任何可筛选字段、idLookup 字段或 externalId 字段作为匹配键(电子邮件是最常见的)。.
- 如果找到匹配的记录,则更新该记录。否则,创建新记录(当同步模式设置为“如果记录存在则创建或更新”时)。.
- 使用自定义外部 ID(
Customer_Reference__c) 用于跨系统匹配。. - 内置保护机制,可防止“匹配记录已在 Salesforce 中删除”的竞态条件。如果 Salesforce 对已存储的 ID 返回 404 错误,插件会透明地创建一个新记录。.
冲突检查
主键匹配会在找到匹配项时更新记录。有时您可能更希望停止数据推送。 冲突检查 在信息流创建任何内容之前,它会查找现有的 Salesforce 记录,如果找到记录则停止。.
重复匹配仅基于单个键,而冲突检查则将多个字段合并到一个查找中。例如,将“名字”和“姓氏”映射在一起,就能检测到同一个人使用不同的电子邮件地址提交的记录,而仅匹配“电子邮件地址”则会直接放行。只有当映射的每一行都与同一条记录匹配时,才会停止匹配,因此部分重叠不会触发冲突检查。.
- 根据需要,将任意数量的 Salesforce 字段映射到 Gravity Forms 字段,包括自定义值。.
- 您可以自行设置冲突消息。该消息会记录在条目中,并包含在失败邮件中,以便您了解记录创建失败的原因。.
- 仅当数据源会创建记录时才适用。通过重复匹配找到的记录仍会照常更新。.
- 每个订阅源,并且可通过 OAuth 帐户访问。.
文件上传
Gravity Forms 文件上传字段可以附加到 Salesforce 记录中,作为 内容版本/内容文档链接, 这样,它们就会出现在记录的“文件”相关列表中。可配置的最大文件大小,每个文件 1 到 25 MB,默认值为 10 MB。.
要附加文件,请将每个文件上传字段映射到 文件 — 附加到 Salesforce 记录 在数据源的 Salesforce 字段映射中添加一行。每个上传字段添加一次。每个映射字段都会附加一个文件,多文件字段会发送其包含的所有文件。文件会在数据源首次同步条目时上传,如果同步失败,则会再次使用“重新发送到 Salesforce”功能发送这些文件。.
笔记同步
将表单数据推送到 Salesforce 笔记 附加到父记录。备注标题和备注正文都支持合并标签,因此您可以根据需要设置格式。如果正文留空,则使用默认设置。 {all_fields}.
(可选)将管理员在 Gravity Forms 中添加的条目备注也同步到 Salesforce 的“备注”中,这样可以将对话历史记录集中在一个地方。删除 Gravity Forms 中的备注时,Salesforce 中的副本也会随之删除。.
竞选会员
将表单创建的潜在客户或联系人添加到 Salesforce 活动. 勾选复选框,为其指定一个“市场活动 ID”(可以使用合并标签,因此隐藏字段可以指定市场活动),插件会创建一个 CampaignMember 记录,将新的潜在客户或联系人链接到该市场活动。您可以设置自己的成员状态,也可以保留默认设置,插件将使用默认状态。 Responded.
所有权转让
每饲料:
- 设置自定义 OwnerId (支持合并标签,因此您可以根据表单值进行路由)。.
- 切换
Sforce-Auto-Assign: FALSE需要时,可通过标头绕过标准赋值规则。.
预填充 Salesforce
向老用户发送个性化表单,表单已预先填写了他们现有的 Salesforce 数据。包括续订表单、账户更新表单和个人资料完善流程。.
- 将 Salesforce 中的任何字段映射到 Gravity Forms 中的任何字段即可进行预填充。预填充对象默认为数据源写入的对象,但您也可以从其他对象读取数据,例如,数据源创建个案时,预填充对象为联系人。.
- 启用预填充功能后,已登录的管理员即可立即使用。要在公共表单中使用,请勾选。 允许在前端表单上公开预填请求 也一样。.
- 使用 TTL 的 HMAC 签名 URL 禁止在公共表单上枚举记录 ID,并且默认启用签名功能,有效期为 15 分钟。如果没有签名,任何人都可以重复执行。
?sfid=001000...并获取他们不应该获取的数据。. - 这 签名预填充链接生成器 已内置于信息流设置中。粘贴记录 ID,即可获得带有过期时间的签名 URL。可将其用于营销邮件、客户门户或自助服务流程。.
- 已登录的管理员可以使用未经签名的原始记录 ID 进行测试。.
- 每个数据源查询参数(默认值)
?sfid=保持 URL 简洁。.
入口生命周期同步
保存数据源后,系统会自动创建记录。其余生命周期功能由您自行开启,具体操作路径为:表单 → 设置 → Salesforce → 同步设置,这样集成就只会写入您请求的数据。.
- 编辑条目 → 启用“编辑条目时同步更新”后,Salesforce 记录将更新(
gform_after_update_entry). - 删除条目 → Salesforce 记录是 未受影响, 一直如此。在 WordPress 中,删除文件是可逆的,所以记录会保留在原处。.
- 从回收站恢复 → 启用“从回收站/垃圾邮件箱恢复条目时重新同步条目数据”后,条目被删除期间所做的任何编辑都会同步到该记录。如果该记录在此期间已在 Salesforce 中被手动删除,且数据源的同步模式为“如果记录存在则创建或更新”(默认设置),则会创建一个新的替代记录。.
- 永久删除条目 (清空回收站,或“永久删除”)→ 如果您已启用“永久删除条目时删除 Salesforce 记录”,则 Salesforce 记录将被删除。.
后台同步
访客等待期间,Salesforce API 调用不会运行。提交完成后,信息流会在后台处理,使用 Gravity Forms 自带的异步信息流处理功能,因此 Salesforce 响应缓慢不会导致感谢页面加载缓慢。.
后台任务获取到数据流后,该条目就会显示蓝色。 待办的 状态会在 Salesforce 响应后立即被最终的成功或错误结果所取代。提交后立即打开测试条目,您可能会首先看到“待处理”状态。例如,如果某个数据源需要在感谢页面显示之前完成,则需要显示此状态。 {salesforce_id} 在上面打勾 在提交过程中处理此信息 在那条信息流上。.
支付附加组件感知
如果您的表单通过 Gravity Forms 的支付插件(Stripe、PayPal Standard、PayPal Commerce、Authorize.Net、Square、2Checkout、Mollie 等)收取款项,请启用此功能。 “仅在收到付款时处理 Salesforce 数据。” 在下面 付款后操作 在支付插件的 Feed 设置中(表单有 Salesforce Feed 后才会出现此选项),将 Salesforce 同步延迟到付款成功确认后,这样就不会留下未完成的潜在客户。.
提交时,如果条目存在待处理的付款,Salesforce 同步将被延迟。当付款插件确认交易(通过 Gravity Forms 的标准延迟推送框架)后,Salesforce 同步将正常运行。如果付款失败或被放弃,则同步将不会运行。.
适用于任何基于 Gravity Forms 标准支付插件框架构建的支付插件,也就是所有官方的支付插件。.
日志和 CSV 导出
每次 Salesforce 同步,无论成功还是失败,都会记录同步状态以及 Salesforce 返回的确切消息。 Salesforce 日志 页面(表单 → Salesforce 日志)显示:
- 条目 ID、表单、状态、记录 ID、消息和同步时间
- 按表单筛选,每页显示 50 行
- 将当前视图导出为 CSV 文件,因此可以按表单筛选导出表单。
启用 Gravity Forms 日志记录后,您还可以将传出的请求负载和 Salesforce 返回的错误消息写入 Gravity Forms 日志,这通常是查看 Salesforce 究竟反对什么的最快方法。.
如果您完全不想保留同步历史记录,, “禁用存储 Salesforce 条目日志(状态/消息/同步历史记录)” 停止录制并保留 wp_gf_entry_meta 精简。勾选此设置前需要了解:Salesforce 日志页面会读取历史记录,因此启用此设置后,页面会变得空白,条目侧边栏会显示记录链接和“重新发送”按钮,并且现有历史记录会被清除。记录 ID 会保留在条目中,因此合并标签和记录链接仍然有效。.
同步失败时的电子邮件通知
当 Salesforce 拒绝请求时,立即收到通知,其中包含条目 ID 和 Salesforce 返回的确切错误消息。勾选 “发送错误通知邮件” 在插件的 Salesforce 设置中的“错误报告”下,设置一次收件人。 通知邮件 (如果留空,则默认使用您的 WordPress 管理员邮箱)。.
适合捕捉:
- Salesforce 中一个必填字段突然未映射(有人编辑了表单)。
- Salesforce 中已不存在的选项列表值
- API 限制、验证规则或工作流规则拒绝了记录
- 需要重新授权的联网应用程序
达到 Salesforce API 请求限制会被报告为速率限制,而不是神秘的提交失败,因此你知道应该等待,而不是开始调试字段映射。.
修复问题,点击 重新发送至 Salesforce 对受影响的条目进行修改,记录就会录入系统。否则,两周后你就会发现有30条销售线索根本没有进入客户关系管理系统。.
Salesforce 按条目侧边栏
每个 Gravity Forms 表单条目详情屏幕都会显示一个专用的 Salesforce 侧边栏框显示同步的实时状态:
- 地位, 颜色编码:绿色表示成功,红色表示错误,蓝色表示待处理,灰色表示已跳过。
- 目的, 创建了哪个 Salesforce 对象(潜在客户、联系人、自定义对象等)?
- 记录 ID, 点击后,将在 Salesforce 的新标签页中直接打开。
- 账户, 哪个关联的 Salesforce 帐户负责同步(当您有多个帐户时非常有用)
- 已同步, 最近一次同步尝试的时间戳
- 错误信息, 如果适用,则提供 Salesforce 返回的确切错误信息。
- 饲料结果, 当多个数据流运行在同一表单上时,需要进行逐个数据流的细分。
这是确认表单是否真的将数据推送到 Salesforce 的最快方法,也是在出现问题时找出失败的具体条目的最快方法。.
重新发送至 Salesforce
条目带有 重新发送至 Salesforce 在条目详情页面上有一个按钮,供有权管理插件设置的用户使用。它的功能不仅限于重新同步主记录:它还会清除副作用去重标记,以便笔记、文件和活动成员资格也会重新同步。适用场景:
- 原始同步运行时 Salesforce 服务中断
- 在一批提交失败后,您修复了一个信息流映射问题。
- 你想将测试数据推送到沙箱环境,但不想重新提交表单。
合并标签
{salesforce_id} 这是 Salesforce 记录 ID,由该条目的最新数据源创建或更新。使用组织 ID 模式(Web 到 Lead/Web 到 Case)的数据源会发布到不返回记录 ID 的端点,因此它们永远不会设置此标签或其每个数据源的变体。.
{salesforce_id:FEED_ID} 这是由特定数据源创建的 Salesforce 记录 ID。当多个数据源在同一表单上运行时,请使用此 ID。.
Feed 特定标签也适用于 Feed 设置。将查找字段映射到 自定义值 并进入 {salesforce_id:FEED_ID} 将该记录链接到先前创建的订阅源。订阅源按订阅源列表顺序运行,订阅源 ID 即为订阅源 ID。 fid= 信息源编辑 URL 中的值。对于未创建任何记录的信息源,标签解析为空。.
{salesforce_link} 这是一个指向 Salesforce 记录的直接链接,由该帐户的实例 URL 和记录 ID 构建而成,例如 https://yourorg.my.salesforce.com/00Q5g00000ABCDE. Salesforce 会将该信息发送到 Lightning 记录页面。.
{salesforce_link:FEED_ID} 这是指向特定数据源创建的记录的直接链接。当表单包含多个数据源,分别写入不同的 Salesforce 组织(例如,一个写入沙盒环境,一个写入生产环境)时,此功能非常有用,因为每个变体都使用该数据源自身的帐户实例 URL。.
这两个标签在 Gravity Forms 评估合并标签的任何位置都有效,但有一个时间限制。表单提交完成后,信息流会在后台运行,因此确认消息和表单提交时发送的任何通知会在记录创建之前渲染,此时标签为空。同步完成后,它们会在 Gravity Forms 评估合并标签的任何位置填充。要让它们显示在确认页面和提交通知中,请勾选此选项。 在提交过程中处理此信息 在信息流中;访客随后等待 Salesforce 的响应。常见用途:
- 跨数据源链接记录:在后续数据源中,将 AccountId 或 ContactId 等查找字段设置为自定义值。
{salesforce_id:FEED_ID}创建父记录的源。. - 稍后发送的通知:“Salesforce 中的新潜在客户 → {salesforce_link}”在同步运行后,当您对条目使用 Gravity Forms 的’重新发送通知”功能时填充。.
- 任何在同步后评估合并标签的附加代码或自定义代码,例如为了传递
{salesforce_id}到下游系统。.
翻译
此插件已做好翻译准备。您可以使用免费的翻译工具将其翻译成任何语言。 Loco 翻译 插件或任何其他 WordPress 翻译工具。.
默认语言:英语(en_US)
常见问题解答
这需要重力形态吗?
是的。必须安装并启用 Gravity Forms 2.7 或更高版本。这是一个 Gravity Forms 的附加组件,因此它本身无法运行。.
支持哪些WordPress和PHP版本?
兼容 WordPress 6.5+ 和 PHP 8.0+。已测试至 WordPress 7.0。.
我可以连接到 Salesforce 沙盒环境吗?
是的。使用 https://test.salesforce.com 将此地址作为连接帐户时的登录 URL。您可以同时将沙盒帐户和生产帐户连接到同一个 WordPress 站点。.
此功能是否支持在同一个站点上使用多个 Salesforce 帐户?
是的。您可以连接任意数量的帐户。每个数据源都会自行选择同步到哪个帐户。常见使用场景:沙盒环境和生产环境、代理客户组织或母公司和子公司公司架构。.
我可以同步到自定义 Salesforce 对象吗?
是的。在数据源的 Salesforce 对象下拉菜单中,选择“自定义(在下方输入)”,然后输入自定义对象的 API 名称(例如,, My_Object__c选项列表、文件上传、查找和预填充功能对自定义对象的操作方式相同。自定义对象需要 OAuth 帐户;组织 ID 模式仅限于潜在客户和个案。.
能否通过一个表单创建关联起来的客户、联系人和商机?
是的。为每个对象添加一个数据源,然后按顺序拖放到数据源列表中:先是客户,然后是联系人,最后是商机。数据源会按此顺序运行。在联系人和商机数据源中,进行映射。 账户ID 到 自定义值 并进入 {salesforce_id:FEED_ID} 通过帐户源的 ID,即 fid= 其编辑 URL 中的值。每条记录的查找字段都已指向同一提交中的帐户。只要数据源使用同一个 Salesforce 帐户,任何查找字段(标准字段或自定义字段)都适用。.
为什么我的 Salesforce 对象没有出现在下拉菜单中?
对象列表来自 Salesforce,仅包含已连接用户可以创建的对象。如果缺少潜在客户、联系人或自定义对象,则表示授权用户没有该对象的创建权限,通常是因为其仅持有 API 集成许可证,而没有附加任何权限集。请在 Salesforce 中修复此问题,然后等待插件的六小时对象缓存刷新;重新连接帐户并不会清除缓存。“自定义(如下类型)”可作为临时解决方案。.
它是否与 Salesforce Pardot(客户互动)兼容?
并非直接如此。该插件通过 Salesforce REST API 写入标准的 Salesforce 记录,例如潜在客户和联系人,不包含任何 Pardot 特有的代码。如果您的组织运行 Salesforce-Pardot 连接器,Pardot 会像处理其他 Salesforce 记录一样处理这些记录。此插件的作用 不 操作方式:直接写入 Pardot 潜在客户或 Pardot 列表,绕过 Salesforce,或与 Pardot 特定对象(自定义重定向、Pardot 表单等)交互。.
选项列表映射如何处理带有代码的州/省和国家/地区字段?
该插件显示了 Salesforce 标签 向表单用户(例如,“加利福尼亚州”)提交选项列表 价值 (例如,, CA),这正是 Salesforce 州/国家选择列表所需要的,因此您无需在自己这边创建翻译表。.
选择列表的“填充”模式和“实时同步”模式有什么区别?
- 填充 只需将 Salesforce 选择列表的值复制到表单字段一次即可。之后,您可以编辑、精简或重新排列这些选项。如果您需要一个初始列表,但之后可能需要对其进行调整,这将非常有用。.
- 实时同步 每次表单渲染时都会重新应用 Salesforce 中的设置,因此 Salesforce 中的更改会在插件六小时字段缓存刷新后自动反映在表单上。表单编辑器会锁定这些设置,以防止意外更改。当 Salesforce 是唯一数据源(状态字段、潜在客户来源、国家/地区列表等)时,此功能非常有效。.
我可以允许表单用户选择 Salesforce 记录类型吗?
是的。打开下拉/多选/单选/复选框字段,启用 Salesforce 字段映射,选择对象,然后从字段列表中选择记录类型。表单会向用户显示记录类型名称(例如,“捐赠者”);提交的值是 Salesforce 记录类型 ID。然后,将该 Gravity Forms 字段映射到 Feed 映射中的 RecordTypeId,以便在创建或更新的记录中设置所选的记录类型。列表中仅列出已连接 Salesforce 用户可用的记录类型。.
如何避免创建重复记录?
是的,有两种方式。启用 主键匹配 在信息源设置中选择一个唯一字段(最常用的是电子邮件,也可以是任何自定义外部 ID)。如果找到匹配项,信息源将更新现有记录;如果找不到匹配项,则创建新记录。.
如果你宁愿停止订阅也不愿写任何内容,请使用 冲突检查 相反,它会将多个字段合并到一个查找表中,因此将名字和姓氏一起映射可以检测到同一个人使用不同的电子邮件地址提交的内容。当所有映射的行都匹配到同一条记录时,数据流就会停止,并将您针对该条目的冲突消息记录下来。.
主键匹配和冲突检查有什么区别?
主键匹配找到一条记录 更新 冲突检查发现一条记录,并且 停止. 当重复提交需要保持一条记录最新时,请使用匹配;当第二次提交是您想要了解而非吸收的问题时,请使用冲突检查。它们协同工作:冲突检查仅在源即将创建记录时触发,因此通过重复匹配找到的记录仍会正常更新。.
我能否使用现有的 Salesforce 数据预先填充表单?
是的,启用 预填充 Salesforce 在信息流和映射中,选择要导入的 Salesforce 字段。对于公共表单,也请勾选此项。 允许在前端表单上公开预填请求, 否则,预填充功能仅对已登录的管理员运行。然后向用户发送类似这样的 URL: ?sfid=001XXXXXXXXXXXX. 默认情况下,请求必须经过签名,有效期为 15 分钟;请使用内置的 签名预填充链接生成器 创建用于电子邮件营销活动或自助服务流程的 URL。.
编辑条目是否会更新 Salesforce 记录?
启用后即可启用。条目更新、永久删除、从回收站恢复同步以及条目备注同步,每个功能在“表单”→“设置”→“Salesforce”→“同步设置”下都有各自的复选框,并且所有功能默认启用。创建记录无需任何设置,只需保存数据即可;任何写回现有记录的操作都是有意为之,因此插件绝不会以您未要求的方式触及您的组织。.
如果我删除一个条目,然后再恢复它会发生什么?
Salesforce 记录会在删除/恢复周期中保留。 永久删除 删除 Salesforce 记录,前提是您已在插件设置中启用该选项。这与 WordPress 的原生行为一致:删除操作可逆,永久删除操作不可逆。.
为什么我的条目显示蓝色“待处理”状态?
这是正常现象,通常刷新页面后就会消失。Feed 会在后台处理,因此 Salesforce API 调用不会阻塞表单提交。在调用 Salesforce 之前,后台任务会将条目标记为“待处理”,然后在 Salesforce 响应后立即将其覆盖为成功或错误状态。状态一直显示为“待处理”表示任务已启动但未完成,通常是由于 PHP 超时或请求过程中发生致命错误,因此请启用 Gravity Forms 日志记录并检查插件日志。如果某个 Feed 本应运行但条目完全没有显示 Salesforce 状态,则表示队列从未运行过该 Feed,这通常意味着网站阻止了对 Salesforce 的回环请求。 admin-ajax.php 备用方案 WP-Cron 已被禁用。.
我可以重试一次失败的同步吗?
是的。打开条目详情页面并点击 重新发送至 Salesforce. 它还会清除副作用去重标志,因此笔记、文件和活动成员资格会与主记录一起重试。.
它是否支持支付插件(Stripe、PayPal 等)?
是的。支付插件(Stripe、PayPal 等)的数据流会得到一个 付款后操作 包含一个部分 “仅在收到付款时处理 Salesforce 数据。” 选中此复选框,即可将 Salesforce 同步延迟到支付插件确认交易成功后再进行,这样就不会因为放弃结账而留下未完成的潜在客户。.
它支持从 Gravity Forms 上传文件吗?
是的。Gravity Forms 文件上传字段可以作为 ContentVersion / ContentDocumentLink 附加到 Salesforce 记录,这样它们就会显示在记录的“文件”相关列表中。可配置最大文件大小,每个文件 1 到 25 MB,默认值为 10 MB。.
我可以停止插件存储同步历史记录吗?
是的。勾选 “禁用存储 Salesforce 条目日志(状态/消息/同步历史记录)” 插件设置中未写入任何状态、消息或同步时间戳 wp_gf_entry_meta. 首先需要了解两点:Salesforce 日志页面基于历史记录构建,因此启用此设置后,它将不再显示结果,条目侧边栏将仅显示记录链接和“重新发送”按钮;现有历史记录将被清除。记录 ID 和帐户 ID 仍会保留,因此合并标签、记录链接和“重新发送”功能仍然有效。.
如何通过编程方式自定义 Salesforce 有效负载?
使用 pb_gfsf_payload 筛选:
add_filter( 'pb_gfsf_payload', function ( $payload, $context ) {
// $context['feed'], ['entry'], ['form'], ['object'], ['account_id'], ['method']
return $payload;
}, 10, 2 );完整的信息流、条目、表单、目标对象、帐户 ID 和连接方式(oauth 或 org_id)有 $context 所以你可以根据其中任何一项做出决定。.
如果我的 Salesforce 组织没有 API 访问权限怎么办?
使用 组织 ID 模式. 它使用 Salesforce 的旧版 Web-to-Lead / Web-to-Case 端点,而非 REST API。限制:仅支持 Lead 和 Case 对象,且不支持更新、删除、文件上传、预填充或选项列表映射。对于大多数生产环境,OAuth(默认)是更合适的选择。.
该插件支持哪些 Salesforce OAuth 策略?
该插件使用基于 PKCE 的 OAuth 2.0 授权码流程,并支持刷新令牌轮换,因此您可以在已连接的应用或外部客户端应用中启用这两项功能,而不会中断连接。唯一不兼容的刷新令牌策略是“立即过期刷新令牌”,该策略会在每次访问令牌过期时强制执行完整的重新授权,并且与任何无人值守集成都不兼容。.
OAuth连接如何保持登录状态?
该插件使用 OAuth 2.0 和 PKCE,并利用刷新令牌自动刷新访问令牌。只要连接的应用或外部客户端应用的刷新令牌策略没有使其过期(例如‘有效期至撤销’或设置了较长的固定过期时间,如我们设置指南中提到的 365 天),连接就会保持有效。当刷新令牌过期时,您只需重新连接一次帐户即可。如果连接失效,请参阅下一个问题。这几乎总是连接的应用策略或范围设置的问题。该插件支持刷新令牌轮换,因此注重安全的管理员也可以启用该策略。.
Salesforce连接总是断开,我不得不重新连接。这是为什么?
几乎总是 Salesforce 端的以下三种情况之一:已连接应用程序的刷新令牌策略设置为“过期”而不是“有效直至撤销”;应用程序的权限范围设置为“完全访问 (full)”,这种权限永远不会颁发刷新令牌;或者登录 IP 地址范围阻止了您的服务器,在这种情况下,Salesforce 会拒绝所有刷新请求,即使从同一服务器重新连接也无济于事。从 1.3.0 版本开始,“帐户”屏幕会明确指出具体是哪种情况,而不是显示通用的会话错误,并记录每个帐户上次刷新、上次成功和上次失败的时间。.
卸载插件时数据会被删除吗?
仅当您选择加入时才会启用。 “卸载时删除所有插件数据” 卸载前请在插件设置中进行更改。默认情况下,您的同步日志和连接设置将被保留(因此如果您以后重新激活,不会丢失历史记录)。.
它支持缓存/CDN吗?
是的。该插件在表单提交时完全在服务器端运行,因此缓存和 CDN 设置不会干扰 Salesforce 的同步。表单编辑器 JS 仅在 WordPress 管理后台加载(而 WordPress 管理后台通常禁用缓存)。.
这个功能适用于 WordPress 多站点网络吗?
太长不看
- 无限制许可: 启用一次网络模式;一个按键即可管理所有子站点的设置和支持。.
- 网络模式已开启: 每个子站点都会继承网络密钥,因此所有子站点都可以运行 Salesforce 数据源并立即接收更新。单独激活插件的网络功能并不会为子站点授权。.
- 有限套餐/无子站点许可: 该子站点的 Salesforce 设置已锁定,其信息流日志显示“Salesforce 同步在插件许可证激活之前不可用”,而不是进行同步。.
- 支持服务遵循许可协议: 有效密钥覆盖范围内的站点均符合条件。.
如果您拥有无限许可证,则可以从主站点启用网络模式,并将该密钥一次性推送至所有子站点(实时更新进度)。这些子站点将自动继承许可证管理的设置和支持。.
钩子
过滤器
pb_gfsf_payload
过滤即将发送到 Salesforce 的有效负载。此操作会针对每个数据源的每次创建和更新运行,并包含同步的完整上下文(数据源配置、条目、表单、目标对象、帐户和连接方法)。它会在应用字段映射和所有者 ID 之后、API 调用之前触发,返回空数组的处理方式与未映射任何字段的数据源相同。.
参数:
$payload(大批):Salesforce 字段名称 → 即将发送的值的关联数组。.$context(大批):同步上下文。键:feed,entry,form,object,account_id,method(oauth对于 OAuth 连接,,org_id(适用于 Web-to-Lead/Case)。.
例如:为每个销售线索设置默认的线索来源。.
add_filter( 'pb_gfsf_payload', function ( $payload, $context ) {
if ( $context['object'] === 'Lead' && ! isset( $payload['LeadSource'] ) ) {
$payload['LeadSource'] = 'WordPress Form';
}
return $payload;
}, 10, 2 );例如:将不同的数据源路由到不同的记录类型。.
add_filter( 'pb_gfsf_payload', function ( $payload, $context ) {
$feed_id = (int) ( $context['feed']['id'] ?? 0 );
if ( $feed_id === 12 ) {
$payload['RecordTypeId'] = '0125g000000XYZAAA';
}
return $payload;
}, 10, 2 );例如:根据表单 ID 重写 LeadSource。.
add_filter( 'pb_gfsf_payload', function ( $payload, $context ) {
$form_id = (int) ( $context['form']['id'] ?? 0 );
$payload['LeadSource'] = match ( $form_id ) {
7 => 'Webinar Signup',
12 => 'Demo Request',
default => 'Website',
};
return $payload;
}, 10, 2 );pb_gfsf_multi_value_delimiter
更改用于连接多选或复选框字段选项的分隔符。默认值为 Salesforce 多选列表要求的分号。如果其中一个字段映射到需要其他分隔符的纯文本字段,则可以覆盖此默认值。.
参数:
$delimiter(细绳): 分隔符,,;默认情况下。.$sf_field(细绳):正在写入 Salesforce 字段 API 名称。.$raw_value(细绳):映射 Gravity Forms 字段 ID 或合并标签。.$feed(大批)Gravity Forms 馈送对象。.
add_filter( 'pb_gfsf_multi_value_delimiter', function ( $delimiter, $sf_field ) {
return 'Interests__c' === $sf_field ? ', ' : $delimiter;
}, 10, 2 );pb_gfsf_allowed_salesforce_domains
该插件会在向 Salesforce 发送凭据或条目数据之前,检查每个登录 URL、实例 URL 和 Web-to-Lead URL 是否与 Salesforce 自身的域名匹配。默认列表如下: salesforce.com, force.com, cloudforce.com 和 salesforce.mil, 以点边界进行匹配。如果您的组织是通过自定义 Salesforce 域访问的,请添加此信息。.
参数:
$domains(大批):可注册的后缀,以点为边界进行匹配。.$url(细绳):正在检查的 URL。.
add_filter( 'pb_gfsf_allowed_salesforce_domains', function ( $domains ) {
$domains[] = 'example-crm.com';
return $domains;
} );pb_gfsf_http_timeout
更改应用于每个 Salesforce 请求的超时时间(以秒为单位)。默认值为 20 秒。网络速度较慢或需要上传大文件的站点可能需要更长的超时时间;低于一两秒的超时时间会导致正常运行中断。.
add_filter( 'pb_gfsf_http_timeout', function () {
return 45;
} );







