如何修改系统生成的 Hubspot javascript 表单
How do I modify a Hubspot javascript form that is system generated
我遇到了一个问题,我试图在他们的 CMS 中扩展 Hubspot 表单以从中获得一些额外的功能。
不幸的是,我无法编辑他们在 CMS 中的代码,所以我想可能有一种方法可以在他们的代码之后添加一些 javascript 来添加我想做的事情。
他们生成的代码如下所示:
hbspt.forms.create({
portalId: '435515',
formId: '19046100-d845-4f9c-96cf-974286fc6b45',
});
我想在提交后抓取表单数据,所以它需要像这样:
hbspt.forms.create({
portalId: '435515',
formId: '19046100-d845-4f9c-96cf-974286fc6b45',
onFormSubmit: function($data) {
console.log( $("input[name=firstname]").val() );
}
});
但我无法编辑它们生成的代码。有没有办法在不编辑它们生成的代码的情况下将 onFormSubmit 添加到此函数。
所以像这样:(这不起作用)
//Their original code
<script>
hbspt.forms.create({
portalId: '435515',
formId: '19046100-d845-4f9c-96cf-974286fc6b45',
});
</script>
//My added function
<script>
onFormSubmit: function($data) {
console.log( $("input[name=firstname]").val() );
}
</script>
谢谢
选项 #1: 在 COS 富文本模块中使用可嵌入的表单——我知道这听起来有点倒退,但它是可行的。这使您可以访问 onFormSubmit,这是根据开发人员文档可嵌入 HubSpot 表单的有效选项:http://developers.hubspot.com/docs/methods/forms/advanced_form_options
选项 #2(需要 HubSpot Pro 或 Enterprise): 在提交表单时触发工作流并将 webhook 作为一个步骤——负载无法修改,但它发送将整个联系人记录发送到您选择的端点:http://developers.hubspot.com/docs/methods/workflows/webhook_information
选项 #3(适用于所有产品层级——付费,但最低 $$): 使用 Zapier.com 将 HubSpot 连接到其他 SaaS 平台。 Zapier 还包括一种自定义 webhook 负载的方法,以将所需数据发送到您的最终目的地。
另一种方式,除了@Kirk H 提到的方式,可能是监视页面的事件消息并在消息发布时执行与 HubSpot 表单相关的操作,例如表单提交。
当然,这不是最佳解决方案,因为您实际上是在监视一般页面的事件,但就成本而言,它不需要任何外部库、服务或任何 Pro/Enterprise 帐户,并且应该在简单而不是繁重的工作负载场景中完成工作。
例如,这可能有助于与其他系统集成,such as Google Tag Manager:
window.addEventListener("message", function(event) {
// An event regarding HS form occured, and it is a form submission here.
if(event.data.type === 'hsFormCallback' &&
event.data.eventName === 'onFormSubmitted') {
window.dataLayer.push({
'event': 'hubspot-form-success',
'hs-form-guid': event.data.id
});
}
});
最简单的方法是使用 HubSpot global form events:
window.addEventListener('message', event => {
if (
event.data.type === 'hsFormCallback'
&& event.data.eventName === 'onFormSubmit'
) {
console.log("Form Submitted!");
}
});
如果您的页面上有多个表单,您还可以使用 event.data.id
.
检查其 id
我遇到了一个问题,我试图在他们的 CMS 中扩展 Hubspot 表单以从中获得一些额外的功能。
不幸的是,我无法编辑他们在 CMS 中的代码,所以我想可能有一种方法可以在他们的代码之后添加一些 javascript 来添加我想做的事情。
他们生成的代码如下所示:
hbspt.forms.create({
portalId: '435515',
formId: '19046100-d845-4f9c-96cf-974286fc6b45',
});
我想在提交后抓取表单数据,所以它需要像这样:
hbspt.forms.create({
portalId: '435515',
formId: '19046100-d845-4f9c-96cf-974286fc6b45',
onFormSubmit: function($data) {
console.log( $("input[name=firstname]").val() );
}
});
但我无法编辑它们生成的代码。有没有办法在不编辑它们生成的代码的情况下将 onFormSubmit 添加到此函数。
所以像这样:(这不起作用)
//Their original code
<script>
hbspt.forms.create({
portalId: '435515',
formId: '19046100-d845-4f9c-96cf-974286fc6b45',
});
</script>
//My added function
<script>
onFormSubmit: function($data) {
console.log( $("input[name=firstname]").val() );
}
</script>
谢谢
选项 #1: 在 COS 富文本模块中使用可嵌入的表单——我知道这听起来有点倒退,但它是可行的。这使您可以访问 onFormSubmit,这是根据开发人员文档可嵌入 HubSpot 表单的有效选项:http://developers.hubspot.com/docs/methods/forms/advanced_form_options
选项 #2(需要 HubSpot Pro 或 Enterprise): 在提交表单时触发工作流并将 webhook 作为一个步骤——负载无法修改,但它发送将整个联系人记录发送到您选择的端点:http://developers.hubspot.com/docs/methods/workflows/webhook_information
选项 #3(适用于所有产品层级——付费,但最低 $$): 使用 Zapier.com 将 HubSpot 连接到其他 SaaS 平台。 Zapier 还包括一种自定义 webhook 负载的方法,以将所需数据发送到您的最终目的地。
另一种方式,除了@Kirk H 提到的方式,可能是监视页面的事件消息并在消息发布时执行与 HubSpot 表单相关的操作,例如表单提交。
当然,这不是最佳解决方案,因为您实际上是在监视一般页面的事件,但就成本而言,它不需要任何外部库、服务或任何 Pro/Enterprise 帐户,并且应该在简单而不是繁重的工作负载场景中完成工作。
例如,这可能有助于与其他系统集成,such as Google Tag Manager:
window.addEventListener("message", function(event) {
// An event regarding HS form occured, and it is a form submission here.
if(event.data.type === 'hsFormCallback' &&
event.data.eventName === 'onFormSubmitted') {
window.dataLayer.push({
'event': 'hubspot-form-success',
'hs-form-guid': event.data.id
});
}
});
最简单的方法是使用 HubSpot global form events:
window.addEventListener('message', event => {
if (
event.data.type === 'hsFormCallback'
&& event.data.eventName === 'onFormSubmit'
) {
console.log("Form Submitted!");
}
});
如果您的页面上有多个表单,您还可以使用 event.data.id
.