• Live group demo of Marketing Hub + Data Agent

    Standardize reporting, reduce manual work, and introduce AI without cleanup

    Join us on March 12
  • Ready to build your local HubSpot community?

    HUG leaders host events, spark connections, and create spaces where people learn and grow together.

    Become a HUG Leader

How do I view traffic/contacts generated by Microsoft Ads in Hubspot?

TwanV
Participant

We are currently running a test campaign to see if Microsoft Ads could be valuable to our business. I have already read other posts explaining that there is no current integration with Bing Ads in Hubspot. However, in order to evaluate the effectiveness at all, is there any way to recognize which contacts were generated by Microsoft Ads? Or recognize traffc from this source? I have conversion tracking set up in Google Tag Manager but this is not fool proof.

2 Accepted solutions
karstenkoehler
Solution
Hall of Famer | Partner
Hall of Famer | Partner

Hi @TwanV,

 

Are your Bing ads appending utm parameters to your ad landing pages? Or are you making sure that these utm parameters are added? (overview post on utm codes here) HubSpot's attribution of contacts or revenue to certain marketing touchpoints is heavily revolving around these utm parameters.

 

HubSpot will automatically categorize these contacts into different Original source buckets. These bucketing rules are explained here: https://knowledge.hubspot.com/reports/understand-hubspots-traffic-sources-in-the-traffic-analytics-t...

 

For example, if the utm source parameter conains "ppc" or "cpc" it would receive the value "Paid search" in the Original source contact property. The Original source drill-down 1 property will include the paid campaign name, the Original source drill-down 2 property the search term (if available), see here: https://knowledge.hubspot.com/contacts/understand-source-properties

 

In other words, if you want to identify these contacts generated by Bing ads in your HubSpot portal, your campaign name utm parameter needs to include a reference to Microsoft or Bing ads.

 

Once you've confirmed that this is working as expected, you can create reports based on these properties, for example a custom contact report, filtering for contacts whose Original source drill-down 1 contains "bing". There wouldn't be an out of the box report here, so let me know if you need further assistance in creating such a report and what visualization you'd expecting to see.

 

Let me know if you have any follow-up questions!

Karsten Köhler
HubSpot Freelancer | RevOps & CRM Consultant | Community Hall of Famer

Beratungstermin mit Karsten vereinbaren

 

Did my post help answer your query? Help the community by marking it as a solution.

View solution in original post

Sweely
Solution
Member

The short answer is:

 

Your issue stems from the fact that HubSpot's default tracking often fails to reliably capture the full UTM set or the Microsoft Click ID (`msclkid`) when a user browses multiple pages, causing it to incorrectly fall back to Organic Search when it sees BING as the referrer.


Your scenario #1 is losing the critical paid context during the page hops before the form submission.


The immediate fix is to add hidden form fields for the UTMs and the `msclkid` on every form to force HubSpot to capture them.


However, a better, future-proof solution is to implement a server-side tracking pipeline using the HubSpot API and the Bing Ads API, which ensures the paid click context is always correctly attributed, regardless of the user's browsing journey or cookie consent status

 

The long answer is:

 

The discrepancies you are seeing, where a paid click is incorrectly logged as Organic Search, are unfortunately common when relying on client-side (browser-based) tracking.


In scenario #1, when the user clicks the ad and lands on the homepage, HubSpot's tracking code successfully registers the UTMs and `msclkid` in the browser's local storage or cookies.


However, when the user navigates from the homepage to the "Request a demo" page, something is causing the paid context to be lost before the form is submitted.


This could be due to a redirect, a link that strips parameters, or an aggressive cookie setting, forcing HubSpot to default to the last known source, which in this case is the natural BING referrer from the browser, classifying it as Organic Search.


Scenario #2 works because the user lands directly on the form page, and the paid parameters are present at the moment of submission, which HubSpot can reliably associate with the contact.


While using hidden fields is a quick fix to manually enforce the capture of `utm_source=ppc` and `utm_medium=bing` on all forms, the superior solution is to establish a server-side data pipeline.


You would use Google Tag Manager and a server environment like Stape or Google Cloud Platform to capture the Microsoft Click ID (`msclkid`) from the landing URL immediately upon the first page view.


When the user submits the form, your server-side environment is triggered and performs two actions using APIs.


First, it uses the Bing Ads API's conversion upload function, providing the `msclkid` and the conversion timestamp, which allows Bing to confirm the revenue or conversion.


Second, and more importantly for HubSpot, your script uses the HubSpot API to directly create or update the contact record.


By directly calling the HubSpot API, you can programmatically pass the desired `Original Source` properties (Paid Search, Campaign name, BING) directly into the contact record based on the presence of the `msclkid`, entirely bypassing the reliance on the browser-side tracking code.


This server-side approach is more robust because it captures the crucial paid identifier once and uses the reliable HubSpot API to force the desired attribution, eliminating data loss from subsequent page navigation and ensuring both your ad platform and your CRM correctly attribute the contact to your Microsoft Ads test campaign.

 

This comment was generated with the assistance of an AI tool, incorporating my expertise in conversion tracking 🙂

View solution in original post

0 Upvotes
12 Replies 12
Gercek
Participant

Any timeline on the Microsoft Ads integration like Google Ads?

0 Upvotes
AutomationAce
Participant

We have been asking since 2017 for an integration or anything mildly similar to what we have to Google ads. 

SDavisII
Member

Are there any plans to develop an integration with Microsoft Ads and HubSpot?  Google Ads has tons of shared features with Microsoft Ads but currently there is no integration between the two.

TwanV
Participant

Thanks for the quick response Karsten,

 

I just realized UTM tag features are not automatically turned on for Microsoft Ads :'). This will probably solve the issue indeed. I had already tried generating my own Hubspot UTM links and adding them to each landing page link but this was tedious and also changes the preview of the link in the advertisement which was also undesirable. 

 

Thanks for your help! Should be able to work out a report if the utm data is included.

karstenkoehler
Solution
Hall of Famer | Partner
Hall of Famer | Partner

Hi @TwanV,

 

Are your Bing ads appending utm parameters to your ad landing pages? Or are you making sure that these utm parameters are added? (overview post on utm codes here) HubSpot's attribution of contacts or revenue to certain marketing touchpoints is heavily revolving around these utm parameters.

 

HubSpot will automatically categorize these contacts into different Original source buckets. These bucketing rules are explained here: https://knowledge.hubspot.com/reports/understand-hubspots-traffic-sources-in-the-traffic-analytics-t...

 

For example, if the utm source parameter conains "ppc" or "cpc" it would receive the value "Paid search" in the Original source contact property. The Original source drill-down 1 property will include the paid campaign name, the Original source drill-down 2 property the search term (if available), see here: https://knowledge.hubspot.com/contacts/understand-source-properties

 

In other words, if you want to identify these contacts generated by Bing ads in your HubSpot portal, your campaign name utm parameter needs to include a reference to Microsoft or Bing ads.

 

Once you've confirmed that this is working as expected, you can create reports based on these properties, for example a custom contact report, filtering for contacts whose Original source drill-down 1 contains "bing". There wouldn't be an out of the box report here, so let me know if you need further assistance in creating such a report and what visualization you'd expecting to see.

 

Let me know if you have any follow-up questions!

Karsten Köhler
HubSpot Freelancer | RevOps & CRM Consultant | Community Hall of Famer

Beratungstermin mit Karsten vereinbaren

 

Did my post help answer your query? Help the community by marking it as a solution.

egsanchez1
Participant

Hi @karstenkoehler and @TwanV !

 

Re-opening this in case you can help. I'm having an issue tracking Microsoft Ads contacts (and therefore, revenue).

 

Two scenarios here:

  • #1: A contact clicks on a Microsoft Ad and land in my homepage. Browse the site. And then submit a form in my "Request a demo" page.
  • #2: A contact clicks on the Microsoft Ad, land in my "Request a demo" page and submit a form there —without browsing—.

In both cases the UTM addended is as follow: 

landing-url?utm_term={keyword}&utm_campaign={keyword}&utm_source=ppc&utm_medium=bing&msclkid=XXXXX

 

The scenario #1 got the following "Original Source" related properties (both cases, clicking in the ad is the first touch with the brand):

  • Original Source: Organic Search
  • Drill down 1: Unkown URL (SSL)
  • Drill down 2: BING

While in the #2 I got:

  • Original Source: Paid Search
  • Drill down 1: Campaign name
  • Drill down 2: Keyword

How can I solve this so scenario #1 and #2 got the following (my desired result):

  • Original Source: Paid Search
  • Drill down 1: Campaign name
  • Drill down 2: BING

Thanks a lot folks!

Sweely
Solution
Member

The short answer is:

 

Your issue stems from the fact that HubSpot's default tracking often fails to reliably capture the full UTM set or the Microsoft Click ID (`msclkid`) when a user browses multiple pages, causing it to incorrectly fall back to Organic Search when it sees BING as the referrer.


Your scenario #1 is losing the critical paid context during the page hops before the form submission.


The immediate fix is to add hidden form fields for the UTMs and the `msclkid` on every form to force HubSpot to capture them.


However, a better, future-proof solution is to implement a server-side tracking pipeline using the HubSpot API and the Bing Ads API, which ensures the paid click context is always correctly attributed, regardless of the user's browsing journey or cookie consent status

 

The long answer is:

 

The discrepancies you are seeing, where a paid click is incorrectly logged as Organic Search, are unfortunately common when relying on client-side (browser-based) tracking.


In scenario #1, when the user clicks the ad and lands on the homepage, HubSpot's tracking code successfully registers the UTMs and `msclkid` in the browser's local storage or cookies.


However, when the user navigates from the homepage to the "Request a demo" page, something is causing the paid context to be lost before the form is submitted.


This could be due to a redirect, a link that strips parameters, or an aggressive cookie setting, forcing HubSpot to default to the last known source, which in this case is the natural BING referrer from the browser, classifying it as Organic Search.


Scenario #2 works because the user lands directly on the form page, and the paid parameters are present at the moment of submission, which HubSpot can reliably associate with the contact.


While using hidden fields is a quick fix to manually enforce the capture of `utm_source=ppc` and `utm_medium=bing` on all forms, the superior solution is to establish a server-side data pipeline.


You would use Google Tag Manager and a server environment like Stape or Google Cloud Platform to capture the Microsoft Click ID (`msclkid`) from the landing URL immediately upon the first page view.


When the user submits the form, your server-side environment is triggered and performs two actions using APIs.


First, it uses the Bing Ads API's conversion upload function, providing the `msclkid` and the conversion timestamp, which allows Bing to confirm the revenue or conversion.


Second, and more importantly for HubSpot, your script uses the HubSpot API to directly create or update the contact record.


By directly calling the HubSpot API, you can programmatically pass the desired `Original Source` properties (Paid Search, Campaign name, BING) directly into the contact record based on the presence of the `msclkid`, entirely bypassing the reliance on the browser-side tracking code.


This server-side approach is more robust because it captures the crucial paid identifier once and uses the reliable HubSpot API to force the desired attribution, eliminating data loss from subsequent page navigation and ensuring both your ad platform and your CRM correctly attribute the contact to your Microsoft Ads test campaign.

 

This comment was generated with the assistance of an AI tool, incorporating my expertise in conversion tracking 🙂

0 Upvotes
SDavisII
Member

This seems like a just workaround but not the best method.  The best method would be an integration such as Google Ads has.  Just to be clear, there is still no integration between Microsoft Ads and HubSpot the same way that Google Ads has. At least that I have been able to fiund.

 

Why is this not a standard feature? Microsoft and Google are easily the two of the largest ads platforms.  Any outlook on this becoming a feature or an app?  Seems like a significant miss by HubSpot.

0 Upvotes
chighsmith
Community Manager
Community Manager

Hi @SDavisII,

Thank you for posting to the Community!

Thank you for sharing your feedback and raising this important point. We understand how valuable a direct integration between Microsoft Ads and HubSpot, similar to what we offer with Google Ads, would be for many users. 

At the moment, this feature is not available, but we always appreciate user suggestions to help shape our product roadmap. 

I encourage you to post your idea in the HubSpot Ideas Forum, where our product experts regularly review feedback and consider it for future updates. Your input truly helps us improve!

Cassie, Community Manager

 

 





loop


Loop Marketing is a new four-stage approach that combines AI efficiency and human authenticity to drive growth.

Learn More




0 Upvotes
SDavisII
Member

From what I understand and based on nothing being done in at minimum 3 years, this is not a priority and doesn't seem to be on the HubSpot Product Roadmap in any way. 

 

If I am wrong, which I hope I am, could you please provide a projected timeline for when that integration could potentially be available?

 

It is quite an important integration for the HubSpot community.

0 Upvotes
MRatcliffe
Participant

Hello! Reading this thread your comment described my scenario also. Did you ever find a fix? 

Thanks

MarkMarketing
Participant

Hi MRatcliffe, We added the tracking template to the "Final URL Suffix" instead of to "Tracking Template" in Google Ads and Microsoft Ads. That works like it's shown in scenario 2 in egsanchez1s comment.

 

Hope that helps.

Best

0 Upvotes