All / Advanced / Conversions
HubSpot forms V4 trigger a conversion on submit
HubSpot embedded forms are not able to be selected as a conversion with button click selectors, as they are embedded in an iframe and security rules don’t allow for us to ‘watch’.
To catch a conversion in HubSpot forms v3 or v4
<script>
// MUST run before/independent of how the form is embedded
window.addEventListener('message', function (event) {
// HubSpot posts structured messages from its iframe
if (!event || !event.data || event.data.type !== 'hsFormCallback') return;
// v3 & v4 both emit onFormSubmitted on successful persist
if (event.data.eventName === 'onFormSubmitted') {
try {
abstConvert(1234); // CHANGE TO YOUR TEST ID
} catch (e) { console.error('abstConvert failed', e); }
// Optional: inspect event.data for formGuid, portalId, fields, etc.
console.log('HubSpot form submitted:', event.data);
}
});
</script>
HubSpot v2
You will need to modify your existing HubSpot form embed code to add a onFormSubmitted object
NOTE: this is a community snippet and has not been verified by the team. We recommending upgrading to HubSpot forms v4
<!-- 1) Load HubSpot forms v2 -->
<script src="https://js.hsforms.net/forms/embed/v2.js" async></script>
<!-- 2) Container to render the form -->
<div id="hs-form-container"></div>
<script>
//find your existing form embed and make changes as per below
window.addEventListener('load', function () {
if (!window.hbspt || !hbspt.forms) return;
hbspt.forms.create({
region: "na1", // adjust if your portal uses a different region
portalId: "YOUR_PORTAL_ID",
formId: "YOUR_FORM_GUID",
target: "#hs-form-container",
// add this to your create object change 1234 to your test ID
onFormSubmitted: function ($form) {
try { abstConvert(1234); } catch (e) { console.error(e); }
},
// Optional: fires right before data is sent
onFormSubmit: function ($form) {
// e.g., disable UI; do not fire conversions here
}
});
});
</script>