如何在Kentico 13 Xperience中创建Webhook对接Zapier?
实现Kentico 13 Xperience BizForm提交数据到Zapier的Webhook方案
1. 监听BizForm提交事件并发送数据
Kentico 13没有内置的BizForm Webhook触发器,需要通过自定义代码监听表单提交事件,将数据推送到Zapier的Webhook地址:
编写全局事件处理类
在CMSApp项目的自定义类库(或App_Code目录)中创建如下类,监听表单提交后的事件:
using CMS; using CMS.BizForms; using CMS.Core; using System.Net.Http; using System.Threading.Tasks; [assembly: RegisterModule(typeof(BizFormZapierHookModule))] public class BizFormZapierHookModule : Module { public BizFormZapierHookModule() : base(nameof(BizFormZapierHookModule)) { } protected override void OnInit() { base.OnInit(); // 绑定表单提交完成事件 BizFormItemEvents.Insert.After += SendToZapier; } private async void SendToZapier(object sender, BizFormItemEventArgs e) { var formItem = e.Item; // 仅处理指定表单(可选,根据需求调整) if (formItem.BizFormInfo.FormName != "TargetFormName") return; // 构造Zapier需要的数据结构 var payload = new { FormIdentifier = formItem.BizFormInfo.FormDisplayName, SubmittedData = formItem.GetValues(true), SubmissionTime = formItem.ItemCreatedWhen }; // 替换为Zapier生成的Webhook地址 var zapierUrl = "YOUR_ZAPIER_CATCH_HOOK_URL"; using (var httpClient = new HttpClient()) { try { await httpClient.PostAsJsonAsync(zapierUrl, payload); // 记录成功日志(可选) Service.Resolve<IEventLogService>().LogInformation( "BizFormZapier", "SUBMISSION_SENT", $"Data from {formItem.BizFormInfo.FormName} sent to Zapier" ); } catch (HttpRequestException ex) { // 记录错误日志,避免影响表单提交流程 Service.Resolve<IEventLogService>().LogError( "BizFormZapier", "SEND_FAILED", $"Failed to send data: {ex.Message}" ); } } } }
2. 配置Zapier接收Hook
- 登录Zapier,创建新Zap,选择
Webhooks by Zapier作为触发应用,选择Catch Hook触发事件。 - 复制Zapier生成的专属Webhook地址,替换到上述代码中的
YOUR_ZAPIER_CATCH_HOOK_URL。 - 在Kentico中提交一次目标BizForm,Zapier会自动捕获请求数据,之后即可配置后续的分发动作(如同步到CRM、发送营销邮件等)。
3. 优化与调试建议
- 字段映射:如果Zapier下游工具需要特定字段名,可在构造
payload时手动映射字段,比如将SubmittedData["FirstName"]重命名为ContactFirstName。 - 异步处理:若表单提交量较大,可将发送请求的逻辑放到后台任务中执行,避免阻塞用户提交流程。
- 数据验证:在发送前可添加表单字段验证逻辑,确保推送的数据符合Zapier下游工具的要求。
内容的提问来源于stack exchange,提问作者BrandSampleAcct Brand
相关产品推荐
相关产品推荐

