Custom Report Builder: combine Ad performance metrics with Deals for ROAS/CAC?

Hi everyone,

I’m building a leadership/CEO dashboard and need a few media-performance reports that tie ad spend to closed-won revenue — specifically:

  • ROAS / ROI of paid media (revenue ÷ ad spend)
  • CAC by channel (ad spend ÷ new customers)
  • Revenue by channel

The blocker: in the Custom Report Builder, I can’t combine “Ad performance metrics” with CRM objects like Deals in the same report. I tested both directions:

  • With Ad performance metrics as the primary data source, Deals isn’t available as a secondary source.
  • With Deals as the primary source, Ad performance metrics isn’t available as a secondary source.

So ad spend (which lives in the Ads tool) and deal revenue/customers can’t be brought into a single report to compute ROAS or CAC. The Ads tool does show spend, CPC, cost-per-contact and even an ROI figure, but those aren’t available as fields in the report builder — so I can’t place them on the same dashboard as my CRM reports.

My questions:

  1. Is there a supported way to combine ad spend with deal revenue/customers in a single report or dashboard tile?

  2. What workarounds do you use for ROAS / CAC by channel — revenue attribution reports, Marketing Hub Enterprise, or exporting to an external BI/spreadsheet?

  3. Is native support for joining Ad performance metrics with Deals on the roadmap?

    Thanks in advance!

Hey @ViniBernardo Thanks for posting! :slight_smile:

To answer your questions:

  1. Yes, but only through HubSpot’s built-in ads/campaign reporting, not a freeform custom report join. HubSpot’s Ads dashboard can show ad spend alongside ROI-derived deal/customer outcomes in the same reporting experience.
  2. Depending on your subscription, you can use revenue attribution reports for the closest native ROAS-by-channel answer, since that’s the supported revenue-by-source/channel reporting path. If that is not available in your subscription you can use Ads reporting for paid-only CAC/ROAS, and for a true blended channel view I’d recommend exporting to BI or a spreadsheet and optionally embed it back into a dashboard.
  3. At the moment, there isn’t a supported native way to join Ad performance metrics with Deals in a single custom report. I’d recommend posting it in our Ideas forum, our product team is always looking at ways to improve!

Hope this helps!

Jess
Community Manager

Ads and deals don’t directly connect, because a deal doesn’t engage with an ad. Only a contact engages with an ad.

Here is the start of a workaround for you. If you have Data Hub, you can combine Ad performance metrics, contacts, and deals. This should allow you to get amount spent on contact, that is associated to the deal, and from there you can either build your report on the data set, or set up formulas in the data set.

@jonmartin1’s Data Hub route is the real workaround, and @Jess_Nader’s summary is accurate - so first, the two catches worth knowing before this lands in front of leadership:

1. Spend doesn’t exist at the contact level. HubSpot stores spend per campaign/ad; contacts attach via clicks. So “amount spent on the contact associated to the deal” is an allocation you’re choosing, not a number HubSpot has. If three contacts touched a campaign and one became a $50K deal, does that deal absorb all the spend, or a third? The dataset formula will happily compute either. Decide the rule explicitly and write it down - otherwise two people build “the same” ROAS report and get two different numbers, and the dashboard loses the room’s trust on day one.

2. Your ROAS will disagree with Meta’s and Google’s ROAS - by design. Platform ROAS counts platform-attributed conversions; the CRM route counts closed-won deals through the ad → contact → deal association chain, which drops cross-device, consent-declined, and long-cycle touches. Neither is wrong; they count different things. Put one line under the CEO-dashboard tile saying which definition it uses. That sentence prevents the meeting where someone opens Ads Manager and asks why the numbers don’t match.

On your question 2 - full disclosure before I answer it, because I have a horse in this race: I got frustrated enough with exactly this spend-to-revenue math that I’m building Tulu, an AI-native analytics layer that sits on top of HubSpot. HubSpot stays your system of record; Tulu connects to it plus Paid Media (Google Ads, Meta Ads, etc), Search Console, and web analytics, reconciles everything into one dataset, and you just ask “what’s my CAC by channel this quarter?” and get the number. That’s the “external BI” slot in your list, minus the spreadsheet, the agency work, and the setup & maintenance costs.

The honest ranking across your options: revenue attribution reports (Enterprise) give you the revenue half only - spend still isn’t in that view, so the division still happens outside. Data Hub dataset works if you have it and you nail the allocation rule from point 1. Export/BI (or a layer like the one I’m building) is where the math actually lives today.

And +1 to Jess - post it to the Ideas forum too; this join is one of the most-asked-for gaps in the reporting model.

Hi @ViniBernardo,

You are reading the limitation correctly: if Ad performance metrics and Deals are unavailable together, HubSpot does not have a supported join path between those sources in the Custom Report Builder.

I would separate the requirement into three options:

  1. For native paid-ad ROI, configure the Ads tool to calculate ROI from revenue associated with HubSpot deals.
  2. For campaign-level leadership reporting, use Campaign ROI and the Attribution Report Builder where your subscription supports the required revenue model.
  3. If you need a strict reusable calculation such as ad spend divided by closed-won customers across several networks, use the ad account and campaign IDs as stable keys and schedule both datasets into an external BI layer. I would avoid joining on campaign display names because those can change or collide.

Before choosing the route, verify that closed-won deals are associated with the correct contacts and that the relevant ads or assets are connected to the corresponding HubSpot campaigns. Otherwise the native revenue figures will be incomplete even when the report itself is configured correctly.

I would not rely on a roadmap assumption unless HubSpot confirms it. Which HubSpot tier and attribution model are you using?

Can this now be achieved in Enterprise Solution with data Studio (Beta) ?

Hi @ViniBernardo
Great question. I’ve run into the same limitation when trying to build executive dashboards in HubSpot.

From what I’ve seen, there isn’t currently a native way to combine Ad Performance Metrics with Deals in the Custom Report Builder, which makes metrics like ROAS and CAC difficult to calculate in a single report.

The workaround I’ve had the most success with is using Revenue Attribution Reports to understand which channels are influencing closed-won revenue, then comparing that with ad spend from the Ads tool. If leadership needs true ROAS or CAC in one dashboard, exporting the data to a BI tool or even Excel/Google Sheets is often the most practical option.

It would definitely be valuable if HubSpot allowed Ad Performance Metrics to be joined with CRM objects in the report builder. That would eliminate a lot of manual reporting for marketing and leadership teams.

Out of curiosity, are you looking for first-touch, last-touch, or multi-touch ROAS? That could influence the best reporting approach.