如何在Salesforce中创建公开表单以获取用户数据(替代FormAssembly)
解决方案:Salesforce原生实现邮件嵌入表单按钮创建/更新Contact/Lead
一、先明确:Dynamic Forms为啥不适用
Dynamic Forms是仅用于Salesforce内部记录页面的布局工具,无法生成对外可访问的表单链接,也不能直接嵌入邮件,所以你的尝试方向不对,换用以下原生方案即可实现需求。
二、方案1:Salesforce Sites + Visualforce表单(最成熟稳定)
步骤1:编写Visualforce页面与Apex控制器
- 创建带表单逻辑的Visualforce页面,支持创建新记录或更新已有记录(通过URL参数区分):
<apex:page controller="ContactLeadFormController" showHeader="false" standardStylesheets="true"> <apex:form> <apex:pageBlock title="客户信息提交"> <apex:pageBlockSection columns="1"> <apex:inputField value="{!targetRecord.FirstName}" label="姓名"/> <apex:inputField value="{!targetRecord.LastName}" label="姓氏"/> <apex:inputField value="{!targetRecord.Email}" label="邮箱"/> <!-- 按需添加其他字段 --> <apex:inputHidden value="{!recordId}" /> </apex:pageBlockSection> <apex:pageBlockButtons> <apex:commandButton action="{!saveOrUpdate}" value="提交"/> </apex:pageBlockButtons> </apex:pageBlock> </apex:form> </apex:page> - 配套Apex控制器
ContactLeadFormController:通过recordId参数判断是创建新Contact/Lead,还是更新已有记录,完成数据持久化逻辑。
步骤2:配置Salesforce Sites权限
- 在Setup中找到Sites,创建或使用现有站点,给站点分配该Visualforce页面的访问权限,确保Guest用户拥有Contact/Lead对象的创建、更新权限及对应字段的访问权限。
- 生成页面公网URL,格式示例:
https://your-site-domain.force.com/contact-lead-form
步骤3:邮件模板嵌入按钮
- 使用HTML邮件模板,插入带参数的按钮链接:
<a href="https://your-site-domain.force.com/contact-lead-form?recordId={!Contact.Id}" style="background:#0070d2;color:#fff;padding:10px 20px;border-radius:4px;text-decoration:none;">点击更新您的信息</a> - 若用于创建新记录,直接使用不带
recordId参数的基础URL即可。
三、方案2:Public Quick Action + Experience Cloud(轻量化快速实现)
步骤1:创建Public Quick Action
- 针对Contact/Lead对象创建Public Quick Action(需先启用Experience Cloud),配置需要收集的字段,开启公网访问权限。
- 生成公网访问链接,支持拼接
recordId参数指定待更新记录。
步骤2:嵌入邮件模板
- 将公网链接做成按钮嵌入邮件,客户点击后直接打开Salesforce原生公网表单,提交后自动完成记录的创建或更新。
四、关键注意事项
- 权限校验:务必配置Guest用户(Sites方案)或Public Access设置(Quick Action方案)的对象及字段权限,避免提交失败。
- 数据验证:在控制器或Quick Action中配置字段验证规则,拦截无效数据。
- 跟踪统计:可在URL中添加自定义参数(如
emailMsgId={!EmailMessage.Id}),用于后续统计客户提交行为。
内容的提问来源于stack exchange,提问作者Abdul Qayyum
相关产品推荐
相关产品推荐

