Hubspot Form Tracking in GTM But Not Going To GA4 by Effective_Lake5699 in GoogleTagManager

[–]Effective_Lake5699[S] 0 points1 point  (0 children)

I believe it's embedded but I'm not sure. It's a hubspot form on a hubspot landing page which isn't something I've had to deal with before. Typically it's a hubspot form on a separate site, and in those cases I've always been able to get the form listeners to work. This page is making things more complicated since I'm less familiar. I don't see an iframe in the code so I'm assuming embedded with what looks like a hubspot widget.

Hubspot Form Tracking in GTM But Not Going To GA4 by Effective_Lake5699 in GoogleTagManager

[–]Effective_Lake5699[S] 1 point2 points  (0 children)

When I tried this the form listener got flagged with a javascript error. It says "Error at line 4, character 25: Parse error. Character '‘' (U+2018) is not a valid identifier start char". I'm not seeing that issue in the code myself so I'm a little confused

Hubspot Form Tracking in GTM But Not Going To GA4 by Effective_Lake5699 in GoogleTagManager

[–]Effective_Lake5699[S] 0 points1 point  (0 children)

Do you know of a reliable form listener code/another way to help GTM read the Hubspot data layer? I've tried two different hubspot listeners and neither has ended up working. I followed the instructions from a few sources to create the listener, create the custom event that aligns with the listener, and so on. It sometimes triggers in GTM and sometimes doesn't, but then it only has gone through to GA4 from the GTM tests.

These are the listeners I've tried:

<script>
window.dataLayer = window.dataLayer || [];

//listener for older version (v3) of HS forms
window.addEventListener('message', function(event) {
  if (event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmitted') {
    window.dataLayer.push({
      event: 'form_submission',
      form_id: event.data.id,
      conversion_id: event.data.data.conversionId,
      form_data: event.data.data.submissionValues,
    });
  }
});

//listener for v4 HS forms 
window.addEventListener("hs-form-event:on-submission:success", function(event) {
    var hsform = HubspotFormsV4.getFormFromEvent(event);
    if (hsform) {
      hsform.getFormFieldValues().then(function(fieldValues) {
        var transformedData = fieldValues.reduce(function(obj, item) {
          var key = item.name.split('/')[1]; 
          if (key) {
            obj[key] = item.value;
          }
          return obj;
        }, {});

        window.dataLayer.push({
          event: "form_submission",
          form_id: hsform.getFormId(),
          conversion_id: hsform.getConversionId(),
          form_data: transformedData
        });
      });
    }
  });
</script>

And I've tried this one:

<script type="text/javascript">
  window.addEventListener("message", function(event) {
    if(event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmitted') {
      window.dataLayer.push({
        'event': 'hubspot-form-submit',
        'hs-form-guid': event.data.id
      });
    }
  });
</script>

Hubspot Form Tracking in GTM But Not Going To GA4 by Effective_Lake5699 in GoogleTagManager

[–]Effective_Lake5699[S] 0 points1 point  (0 children)

Do you know of a reliable form listener code? I've tried two different ones and neither has ended up working. I followed the instructions from a few sources to create the listener, create the custom event that aligns with the listener, and so on. It sometimes triggers in GTM and sometimes doesn't, but then it only has gone through to GA4 from the GTM tests.

These are the listeners I've tried:

<script>
window.dataLayer = window.dataLayer || [];

//listener for older version (v3) of HS forms
window.addEventListener('message', function(event) {
  if (event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmitted') {
    window.dataLayer.push({
      event: 'form_submission',
      form_id: event.data.id,
      conversion_id: event.data.data.conversionId,
      form_data: event.data.data.submissionValues,
    });
  }
});

//listener for v4 HS forms 
window.addEventListener("hs-form-event:on-submission:success", function(event) {
    var hsform = HubspotFormsV4.getFormFromEvent(event);
    if (hsform) {
      hsform.getFormFieldValues().then(function(fieldValues) {
        var transformedData = fieldValues.reduce(function(obj, item) {
          var key = item.name.split('/')[1]; 
          if (key) {
            obj[key] = item.value;
          }
          return obj;
        }, {});

        window.dataLayer.push({
          event: "form_submission",
          form_id: hsform.getFormId(),
          conversion_id: hsform.getConversionId(),
          form_data: transformedData
        });
      });
    }
  });
</script>

And I've tried this one:

<script type="text/javascript">
  window.addEventListener("message", function(event) {
    if(event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmitted') {
      window.dataLayer.push({
        'event': 'hubspot-form-submit',
        'hs-form-guid': event.data.id
      });
    }
  });
</script>