How to Find Your True Paid Ads Performance with HubSpot Reporting
by Charlotte Andrade | Updated Oct 15, 2024
While HubSpot's reporting capabilities are incredibly powerful for marketing analytics, the out-of-the-box reports for paid ads have some big limitations.
In the webinar from Hub X OS and the blog below, we explore the issues around paid ads analytics in HubSpot and how you can fill in the gaps to uncover your true return on ad spend.
Hi, everyone. Thank you for joining. My name is Charlotte Andrade, and I am the director of client success at Digitopia. Digitopia is an agency that is all about b to b growth through marketing and HubSpot and paid ads. And I'm just an all around HubSpot enthusiast.
So I'm really excited to be sharing with you today everything that comes to paid ad analytics and some of the ways that you can fill in a lot of the big gaps that HubSpot has when it comes to ads and, you know, reporting on those ad interactions throughout the entire customer journey. So with that, I will be monitoring the chat during this, so please be sure to ask any questions in there as I go through. Also, I will be showing you a dashboard that we routinely install for our clients, and I'm actually gonna be giving that away for free. So if that's something of interest to you, just put a comment and say ads in the comment, and I will reach out to you and coordinate getting you this free dashboard installed. To find me on LinkedIn, you can search for me at Charlotte Andrade on LinkedIn here.
I would love to connect with any of you, and then you can also, find Digitopia by going to digitopia.agency. Alright. So picture this. You've just connected your ads account to HubSpot, and you're expecting to have a wealth of information available to you. You go to your ads analytics page, and, unfortunately, what you find is a little underwhelming.
And the reason for that is there's a lot of things on here that look like they should be really helpful, but in actuality, they're really not. So if you look at your clicks here, it says 4 k clicks, but you can't actually click into this to see what contacts are doing those clicks. You have no visibility into where those are coming from. You can click into contacts here, but the 22 number here, and it'll show you a list of the contacts, but it won't show you the number of or the different campaigns that they interacted with. So you can see who was created, but it takes a little bit more legwork to find out the campaign that they were interacting with and came from.
And, additionally, they could be interacting with multiple campaigns and only convert on 1, and you lose that visibility on the other campaigns. You also have ROI here, but which seems helpful on the outside, but if you dig into this number, it really is just calculated based off an average deal amount that you put into your settings in HubSpot. So this has no real revenue ties to it whatsoever. It's just an estimate based off of that. So in truth, it really isn't that helpful.
But that's okay. I mean, HubSpot has a lot of reporting capabilities. So instead of looking at just their out of the box ads analytics page, you can make your own reports, which is great. But then when you try, you're gonna run into some other issues. So when you go to your custom reports, you can report easily on if paid ads was the first thing that created the conversion, and that would also have to be a form submission.
So an ad click wouldn't count, if they clicked on your ad and then converted some other way. It would have to be a form submission from paid ads in order to create a contact that has an original source of paid ads or paid social. So that's still only a small piece of the entire puzzle. And you can also only, report on last touch. So you could do it last touch.
That's the last thing they interacted with was a paid ad. But that is really limiting because it doesn't show you so much of everything that could happen with your ads, and so you're leaving a lot out. One really great thing is HubSpot recently launched in their custom ads data sources a, the ads interactions by campaign per contact. So you're able to select that as a data source, which is super exciting and definitely a step in the right direction. As you can see, this top report here is that.
And if nothing else, I would highly recommend making this report for yourself, so you can see the count of ad interactions broken down by campaign. But the problem with this still is it only looks at create date of the contact is how it pulls information. And as you'll see in a second, the ad interaction date and the create date of the contact can be extremely different. So the data here is still gonna be differing in terms of what and when the interactions are actually happening. And the other issue is it doesn't look at deals.
So you still aren't being able to pull an actual deal revenue associated with these ad interactions. So it's a step in the right direction, but you still have some issues here. And this is a really big problem because according to HubSpot, it takes on average 8 interactions and marketing touch points to make a sale for b to b's. So if you're only looking at your last touch and your first touch, that's 6 or more opportunities where ads could have interacted with or been a pivotal moment in that person's journey to becoming a sale for you that you're not crediting. It's not getting counted and and you have no visibility into that.
So here's a couple scenarios where you would have no visibility into the ads interaction and the ad would get no credit, if you're just using the out of the box native HubSpot reporting. So in this scenario, someone clicks on your ad. This takes them to a landing page and the contact learns more about your brand, but they don't convert yet. They may be thinking about your brand, and a few days later, could be a year later, it could be however much later, they come back when they're ready to, to take the next step with you. And let's say they search you on Google, they go to your landing page again or your website, and they convert.
Well, HubSpot, this will show as a original source of organic search. The ad interaction will only live on the contact record timeline. So unless you're going through and you're digging manually through all of your contact records to try to find all of these ad interactions, you're not gonna see them anywhere in a way that you can, like, pull into reports or really have in any meaningful way. You can use lists to some degree, but you really won't have that insight into the ad interaction and the campaign that you would that we would want to have and our desired end state. So this is scenario 1.
Scenario 2 is when it's in the middle of the journey. So let's say you have a contact that converted a long time ago. They've been sitting in your database in HubSpot. It could be for a very long time. And then you do a remarketing campaign.
So you run some retargeting ads and they click on it. And that takes them back to your website or a landing page. They learn more and they leave. And a few days later or a little while later, they'll search you on Google and they will then convert from there. Well, again, that one will also not be counted because the first touch was something completely different.
Their original source is gonna not include ads, and their latest source is not ads either. It's gonna be organic search. So in this sense, you're losing out on a lot of credit that ads should be having where they aren't just natively getting that visibility into performance. So this is what we would want to have, and this is the dashboard that I'm giving away for free. So please comment ads if you would like this installed in your portal for free.
But this is our desired end state. We want to be able to see reports on who clicks on what ad campaign, when they click on it, what deal revenue should be attributed to those clicks, you know, what deals are being influenced by these ad clicks, and a really deep dive into by campaign, which ones are actually moving contacts along their buyer's journey and what are creating actual revenue for your company. So how do we get there? That's the big question. So I'm gonna start getting into the behind the scenes of this dashboard.
And really to power these reports, there's a whole system that we had to create in order to get this information in a reportable format. So the first problem that we had to solve for is because so the there's different objects in HubSpot. You have your contacts, deals, companies, objects. You might even have some custom objects. There's also kind of sub objects in HubSpot.
So you have your campaigns tool and you also have ad interactions. Those all live on their own island, and you can see them on timeline in your contact record. You can see you can use them into some limited capacity and lists. You can use them in workflow actions. That's really all you can do with them.
They're they're not full objects that have their own properties like contacts and companies and, and deals. So the limitations there are we needed to be able to pull information into reports that was usable and also gives us a lot more flexibility in terms of all the different HubSpot tools that you can use with properties. So what we did was we ended up creating our own properties, our own custom properties. So here you can see we have our 1st ad interaction date, and what that is is a date custom date property where we could stamp and record the date that the first ad interaction happened. And this will come into play a little bit later when we look at deals and deal revenue, but this is a very important one that we needed to have to solve for the issue here.
The second or however many you have, the the other ones that you need to create would be, multi check drop down properties for each of the types of ads you're running. So whether that's Google, LinkedIn, Meta, you would want to have a multi check box property, and each of the drop down options to check would be the names of the campaigns that you want to track. And then we need a way to automate that. So once we have those in place, we created, one workflow that sets that ad interaction date. So when the ad interaction occurs, then we set that first ad interaction date if they didn't already have 1.
And the second workflow will go through it'll just be a really simple one step workflow where when the ad interaction happens on a certain campaign, we then append that multi check drop down with whatever campaign they interacted with. And you will have multiples of these, but they're they're very quick. Like I said, they're just one step, so very easy to add as needed. And what this does is it actually unlocks a ton of different reports for you just by doing those simple things right there. So you'll be able to now report on ad interactions by life cycle stage.
So you can see, you know, how many leads were influenced by ads, MQLs have been influenced by ads, SQLs have been influenced by ads, and so on. You know, if you have custom life cycle stages, you can use those too. The other one that it can do is you can have reports on the interaction date, and break it down by campaign. So before where the Hub Spot one that they provide is based off of the create date of the contact, this one looks at the 1st ad interaction date. So you're really pulling kind of a different set of information there.
Same numbers, but in a different format. So you're able to now base it off of when they interacted and showing the data versus when they were actually created as a contact. And then here, we can also do a deep dive chart. So you can see per campaign, what are all the different life cycle stage stages that have been generated by these different campaigns and how are people moving through or aren't moving through the life cycle stages and their buyer's journey. So, this can be really helpful in terms of monitoring ad performance and and what's actually making a difference and what's not.
So that's great. We have contacts all set. The next part is now we need to solve for deals. So for deals, we needed to be able to pull in what revenue was attributed or should be influenced by the different ad interactions. So the easy way to do this is to say, okay.
Well, we have all this information now that lives on the contact record. So we can now pull reports based off of deals associated with those contacts, which is true. But we ran into another issue, which is sometimes a contact has a deal that had closed a year ago and interaction happened a year later. And we don't want that deal that happened before the interaction counted in those revenue reports because those actually weren't ever influenced by an ad. That one closed all on its own, and we don't want to have those numbers inflated when we look at influenced revenue.
So in order to fix that, we created a mirrored property on the deal record. So how we have the 1st ad interaction date on the contact record, we then copy that over to the deal record as well. And the reason we do that is so we can compare the close date of the deal that is associated with the contact to this first ad interaction date. And if it's after, then we want to count it. And if it's closed before the ad interaction, we don't wanna include it in the reports.
And we manage that by this influence paid ad checkbox property. So this is just a simple checkbox property on the deal record that then checks yes to that they have been influenced by paid ads if this first ad interaction date comparison with the closed date, shows that it did actually get influenced. And that's how we, then we go into the deal reports and we make sure that every report has this filter. So we're only pulling in deals that have this checkbox property. So to manage this with workflows, we actually just need 1.
So this workflow copies over that first ad interaction from the deal from the contact to the deal, and then we do a quick comparison. And if, if the date the close date is after that interaction date occurred, then they will go down this branch here, this yes branch, and they will have their checkbox set to yes. So this unlocks a whole bunch of other reports that we can now do once we have this step set up. So now you can report on on deal revenue that was influenced by paid ads. You can do all deals, total active pipeline.
You can do total closed won, total lost. You can really do anything that you want here in order to see that revenue, that was being that's being driven by paid ads. You can also see the, deals influenced by Google Ads and what campaign influenced them or campaigns. And you can see your sales pipeline. So all the deals that are in your sales pipeline and what stage they're in that have been influenced by ads.
So you can see if anything's getting stuck, how many are are lost, how things are flowing through. And then you can also see you can add a couple new rows to the deep dive chart now. So before, we could do all of the life cycle stages. And now we can add number of deals that have been created from these campaigns and or influenced by these campaigns and then the deal total amount, that was created from these campaigns. So you can really see by campaign which ones are actually driving revenue for your company and which ones aren't.
Alright. So now you have this set up. You have your basic dashboard. What else can you do with it? And the truth is you can really do so so much with this.
You can add company level reports. So let's say you do target accounts. You can now report on how your target accounts are interacting with your ads, what campaigns they're interacting with, where you're being successful there. You can use, OpsHubs for any custom calculations, and reports with datasets. So something you could do with this is create an actual ROAS reports.
You know, you the ROAS tool in HubSpot we that we covered previously is just an average deal size that you've input once. It doesn't actually change unless you change it, but you could actually use your real numbers to get ROAS calculated with Opshub. You can also, you know, filter these reports for certain pipelines. Let's say, you only want to have revenue tied to ads if it's in the new sales pipeline. You don't want to have a renewals pipeline put in there.
Then you can definitely edit that and add any filters you need to make sure you're only showing revenue from certain deal pipelines. You can also, make sure that you choose weighted deal amounts instead of the just face value deal amounts, for active pipeline. So that will just give you a little bit better idea of the percentage to close and what percentage of that revenue is actually going to be attributed to that ad before it closes and all those other pre, won and lost deal stages. You can use lists as a way to just easily filter for all your reports, and toggle between in the filters. What numbers are from ads from contacts and deals created as a first touch from paid ads and which ones were influenced by paid ads, which means that they were just somewhere else in their journey.
They're in the middle or the last touch was when they interacted. You can also now report on historically tricky ad types to monitor like, advantage plus and p max campaigns, which is exciting. And you really can do so much more. It's it's up to your imagination and and what you wanna see, but this really gives you a good foundation for anything that you want to report on now in HubSpot on your ads and ad influence. So thank you so much.
If I didn't have a chance to get to your questions, I will reach out and answer those. This deck will be sent to you afterwards. If you would like it, please connect with me on LinkedIn. Please, ask for that dashboard. If you don't have a chance to put it in the, the comments, feel free to message me on LinkedIn, and I would be happy to set this up for you.
And And if you wanna try it yourself, let me know if you have any questions while you do. I'm happy to help any way that I can, and I hope you have a great rest of your day.
Blind Spots in HubSpot’s Native Paid Ad Reports
What are the limitations in HubSpot reporting?
Picture this: you've just connected your ads account to HubSpot, and you're expecting to have a wealth of information available to you. You go to your ads analytics page and, unfortunately, what you find is a little underwhelming.
And the reason for that is there are a lot of things on the ads analytics page that look like they should be helpful, but in actuality are not.
- Lack of insights into who is clicking on your ads. If you look at your clicks, you can't actually see what contacts in your database are doing those clicks. You have no visibility into where those are coming from.
- No visibility into what campaigns should be attributed. You can click into contacts created but it won't show you the different campaigns that they interacted with. So you can see who was created, but it takes a little bit more legwork to find out the campaign that they were interacting with and came from.
- Oversimplified ROI reporting. HubSpot also has an ROI report, which seems helpful on the outside, but if you dig into this number it’s calculated based on an average deal amount that you put into your settings in HubSpot. It's just an estimate based on that. So in truth, it isn't that helpful.
Why is this an issue?
This is a big issue because according to HubSpot and Salesforce, it takes an average of 8 marketing touch points to make a sale for B2Bs. That’s a lot of touch points that could be a paid ad that wasn’t credited.
It takes on average 8 interactions and marketing touch points to make a sale for B2B's. So if you're only looking at your last touch and your first touch, that's 6 or more opportunities where ads could have been a pivotal moment in that person's journey that you're not crediting. It's not getting counted and and you have no visibility into that.
Here are a couple of scenarios where you would have no visibility into certain ad interactions and the ad would get no credit if you're just using the out-of-the-box HubSpot reporting.
Scenario 1: An Ad Interaction Doesn’t Lead to a Conversion
In this scenario, someone clicks on your ad. This takes them to a landing page and the contact learns more about your brand, but they don't convert yet. They may be thinking about your brand and however much later, they come back when they're ready to take the next step with you. Let's say they search for you on Google, they go to your landing page again or your website, and they convert.
In HubSpot, this will show as an original source of organic search. The ad interaction will only live on the contact record timeline. Unless you're digging manually through all of your contact records to try to find these ad interactions, you're not going to see them anywhere.
Scenario 2: Ad Interactions Happen in the Middle of the Journey
Let's say you have a contact that converted a long time ago. They've been sitting in your database in HubSpot. It could be for any length of time.
You then run some retargeting ads and they click on it. That takes them back to your website or a landing page where they learn more and they leave. A few days later or a little while later, they'll search you on Google and they will then convert from there.
That middle-of-journey ads interaction will also not be reportable in HubSpot because the first touch attribution was something completely different.
Your original source is not going to include ads, and your latest source is going to be organic search.
So in both of these scenarios, you're losing out on a lot of credit that ads should be getting but aren't visible in native HubSpot reporting.
To overcome these limitations, you need to build custom reports that capture all touch points—first, middle, and last—that ads have with your contacts throughout the buyer’s journey. HubSpot’s recent introduction of custom ads data sources and the ability to track "ad interactions by campaign per contact" is a step in the right direction. But there’s still much more you can do.
Creating a System for Capturing Paid Ads Influence in HubSpot
Here’s how to build a system in HubSpot that provides better visibility into your paid ads performance. After following the steps in the guide below, you'll be able to create an amazing Paid Ads Influence dashboard like the one pictured below.
You can get the pictured dashboard and system set installed in your portal for free with one of our HubSpot experts.
Step 1: Create Custom Properties
The key to unlocking better ad reporting in HubSpot lies in setting up a few custom properties. This will allow you to track not just the contact creation source, but all ad interactions along the way. Here are the two main custom properties you’ll need to create:
- First Ad Interaction Date: This property records the first time a contact interacts with any of your ads. This helps you track how long it takes a contact to move through your funnel from initial ad interaction to deal closure.
- Campaign Interaction Tracker: Set up a multi-checkbox property for each paid ads channel that lists all your campaigns. Every time a contact interacts with a campaign, this checkbox is updated automatically through workflows, ensuring no interaction goes unnoticed.
Step 2: Automate Tracking with Workflows
Once you’ve created these custom properties, you’ll need to set up workflows to automate the process of populating them. For example:
- When a contact interacts with a paid ad, the workflow should stamp the first interaction date in the "First Ad Interaction Date" property (if it hasn’t already been set).
- A second workflow should update the "Campaign Interaction Tracker" checkbox with the name of the campaign that the contact interacted with.
These workflows ensure that every interaction is tracked accurately without manual intervention, giving you more reliable data to work with.
Step 3: Deep-Dive Reporting on Contacts and Deals
With these custom properties in place, you can now create more detailed reports that provide deeper insights into how your ads influence both contacts and deals:
- Lifecycle Stage Reports: Track how ads influence contacts at different lifecycle stages. This allows you to see whether your paid ads are generating leads, converting leads into Marketing Qualified Leads (MQLs), or moving MQLs further down the funnel to become Sales Qualified Leads (SQLs).
- First Ad Interaction vs. Contact Creation: Most of HubSpot’s native reports focus on when a contact was created. But with your custom reports, you can look at when the first ad interaction happened, providing a clearer picture of how long it takes a contact to convert after seeing your ad.
- Campaign-Level Analysis: Break down your ad performance by campaign. See which campaigns are influencing the most contacts, driving the highest deal value, or moving contacts through the buyer's journey the fastest.
Step 4: Attribution on Deals
Contacts are only one part of the equation—what about deals? You also need to know which deals were influenced by paid ads and how much revenue those ads are generating.
To do this, you can set up workflows that copy the "First Ad Interaction Date" from the contact record to the associated deal record. This allows you to compare the deal close date with the ad interaction date. If the deal was closed after an ad interaction, you can attribute that revenue to the ad.
You’ll also need to create a custom property on the deal record, such as "Influenced by Paid Ads," and set it to "Yes" for deals that meet this criterion. This lets you filter deals in your reports, ensuring you’re only attributing revenue to ads that truly influenced the sale.
This unlocks a world of options for reporting on actual pipeline value that was influenced by paid ads.
Advanced Reporting Options
Once you’ve set up the basic dashboard, you can take your reporting even further. Here are some advanced options to consider:
- Target Account Reporting: If you’re using an Account-Based Marketing (ABM) strategy, create reports that show which of your target accounts have been influenced by ads.
- Custom Return on Ad Spend (ROAS): Instead of relying on HubSpot’s built-in ROAS metric, which uses an average deal size, create a custom report using actual deal values for more accurate insights.
- Pipeline Stages: Create reports that show which pipeline stages have been influenced by ads, helping you identify bottlenecks and opportunities to optimize your campaigns further.
- Weighted Pipeline: Use weighted deal amounts in your reports to better forecast the potential revenue from deals influenced by paid ads, based on the probability of closing.
The Power of Holistic Paid Ads Reporting
By creating a custom dashboard HubSpot that tracks every ad interaction throughout the customer journey, you gain the insights you need into:
- Proving the ROI of your paid ads with real revenue data.
- Understanding which campaigns are driving the most valuable leads and deals.
- Identifying opportunities to optimize your ad spend by focusing on campaigns that move leads through the funnel faster.
Ultimately, this approach helps you make more informed decisions about your paid ads strategy, ensuring you maximize the return on your marketing investments.
Get the Free Dashboard in Your Portal
We're giving away free installations for this paid ads influence dashboard and system! Click below to claim your free installation with one of our HubSpot experts.