Notice the 2 ? in this url. One for the gclid and one for the utm_term. While this url actually works and we can see the Original Source Drill Down, referrer and original source the Ads attribution doesn't work.
After further investigation, we have found that the Google Ads tracking template method, which HubSpot uses, is incompatible with single-page applications using hashes and AJAX fragments like /#/.
If you use an anchor or AJAX fragment in your final URL and your tracking template appends extra parameters to the end of the final URL, then you must put all the tracking parameters in your final URL.
In practice, this means that you must manually add:
Per Google's documentation, all parameters which lie between an {ignore} token and a # will be treated as tracking parameters. This method of inserting tracking parameters before hashes and fragments is also consistent with RFC 3986 section 4.2.
For best results, I also recommend:
Toggling off HubSpot auto-tracking for the "Momentum IoT" Google Ads account here in Settings > Marketing > Ads > Accounts.
Removing the existing HubSpot tracking template from the account level in your Google Ads account. See the GIF below for the location of this setting.
Disabling auto-tracking and removing the tracking template from your Google Ads account is not necessary, but will prevent hsa_ and utm tracking parameters from applying twice to your final URLs.
I am sorry that we couldn't find an ideal solution for you. The ads team now knows that Google Ads tracking templates are not compatible with URLs containing hashes or anchors and will try to advocate on behalf of customers like you until Google supports such URL structures. Please let me know if you have any additional questions.
Apologies for the delayed response. Our team has been working to address posts as quickly as possible.
I've touched base with Kristen and can confirm that the different sets of query strings, delineated by the two ? symbols, prevent HubSpot's ads tool from recognizing the hsa_... parameters and properly attributing contacts.
I'll need to touch base with the ads team to determine whether we can apply the ads tracking template in a manner compatible with Vue.js URL hashes (e.g. appending the parameters to gclid instead of in their own query string). Stay tuned.
In the meantime, can you expound upon exactly what you mean by "Internet Explorer needs the # in the url to be compatible with Vue.js applications"? I know a little about Vue.js' compatibility issues with, for example, IE8, but I haven't found anything specifically citing hashes/fragment identifiers. Thanks for your help on this!
The ads team is still investigating the issue. I'll update here when I have more information. You may also hear directly from Kristen, as she's looped in as well.
After further investigation, we have found that the Google Ads tracking template method, which HubSpot uses, is incompatible with single-page applications using hashes and AJAX fragments like /#/.
If you use an anchor or AJAX fragment in your final URL and your tracking template appends extra parameters to the end of the final URL, then you must put all the tracking parameters in your final URL.
In practice, this means that you must manually add:
Per Google's documentation, all parameters which lie between an {ignore} token and a # will be treated as tracking parameters. This method of inserting tracking parameters before hashes and fragments is also consistent with RFC 3986 section 4.2.
For best results, I also recommend:
Toggling off HubSpot auto-tracking for the "Momentum IoT" Google Ads account here in Settings > Marketing > Ads > Accounts.
Removing the existing HubSpot tracking template from the account level in your Google Ads account. See the GIF below for the location of this setting.
Disabling auto-tracking and removing the tracking template from your Google Ads account is not necessary, but will prevent hsa_ and utm tracking parameters from applying twice to your final URLs.
I am sorry that we couldn't find an ideal solution for you. The ads team now knows that Google Ads tracking templates are not compatible with URLs containing hashes or anchors and will try to advocate on behalf of customers like you until Google supports such URL structures. Please let me know if you have any additional questions.