HubSpot Ads ROI vs True Cost per Customer

The Margin Gap · HubSpot

HubSpot Ads ROI vs True Cost per Customer: Why the Numbers Don’t Match

If you run Meta or Google ads and track sales in HubSpot, you have probably seen three different answers to the same question: what the ad platform reports, what HubSpot’s ads tools report, and what your bank account says. Here is how HubSpot calculates cost per contact, cost per deal and ROI, the documented reasons its numbers differ from Meta and Google, and how to get to what a customer from each campaign really cost you.

Key takeaways

  • HubSpot’s ads dashboard pulls spend, clicks and impressions from the ad network, then calculates cost per contact, cost per deal and ROI itself, from the contacts and deals it can attribute to each ad.
  • HubSpot’s own troubleshooting guide names time zone and date range as the number one cause of mismatches with the ad network, followed by different conversion definitions, attribution rules and tracking setup.
  • Cost per deal and ROI use deal revenue and ad spend. Refunds, partner payouts, processing fees and the cost to deliver the work are separate costs of each sale.
  • A campaign can show a strong return in HubSpot and still keep very little. The way to see it is to count every cost against the revenue each campaign actually kept.

What HubSpot’s Ads Tools Show

HubSpot connects to Facebook, Google and LinkedIn ad accounts. According to HubSpot’s documentation of the ads dashboard, some numbers come straight from the ad network and some are calculated by HubSpot.

  • From the ad network: amount spent, clicks, impressions and network conversions, which are the times an ad hit the goal that was set when the campaign was created.
  • Calculated by HubSpot: total contacts attributed to each ad, cost per contact (the amount spent on the ad divided by its attributed contacts), and the closed-won deals tied to those contacts.
  • Marketing Hub Professional or Enterprise: cost per deal (spend divided by closed-won deals tied to attributed contacts), revenue from deals, and ROI.

Two details matter. A deal counts only if it is associated with an attributed contact, has a close date inside the date range you selected, and the contact sits in the default Customer lifecycle stage. And cost per contact and deal counts are reported only for tracked campaigns, so an ad without HubSpot tracking has spend but no attributed contacts to divide it by.

How HubSpot Calculates Ads ROI

HubSpot’s ROI settings give you two ways to count revenue:

  1. Revenue from your deals. HubSpot uses your default deal amount settings. Deals must be closed won and associated with an attributed contact who is in the default Customer lifecycle stage. HubSpot recommends this option if you use deals.
  2. Estimated revenue. You enter an average sale price and an average contact-to-customer rate, and HubSpot estimates revenue from the contacts each ad produced.

HubSpot lists Marketing Hub Professional or Enterprise (or legacy Marketing Hub Basic) for these ROI settings. Deals that use a custom lifecycle stage instead of Customer are left out of deal-based ROI, and if you report in each ad account’s own currency, you cannot report across accounts that use different currencies.

In short: HubSpot’s ROI answers “how much deal revenue did the contacts from this ad produce, against what I spent on the ad.” That is a useful question. It is not the same question as “how much did this campaign keep.”

Why HubSpot and Meta or Google Disagree

HubSpot has a troubleshooting guide for ads data that lists why its numbers can differ from the ad network. In plain terms:

1. Different time frames and time zones

HubSpot calls this the number one cause of discrepancies. LinkedIn ad accounts always report in UTC, so a HubSpot account set to another time zone will show different numbers for the same day.

2. Different definitions of a conversion

You can define a conversion however you like inside Meta or Google. HubSpot counts contacts created through forms and tracked visits, so the two systems may be counting different actions.

3. Attribution report rules

HubSpot’s attribution reports follow specific rules, and the report you choose changes which contacts are credited to which ad.

4. Tracking setup

Auto-tracking turned off, shortened destination URLs or click-tracking redirects can strip the parameters HubSpot relies on. HubSpot also cannot attribute ad clicks that happened before the ad account was connected.

5. Lead ads that do not sync

Missing permissions, a non-default email field or invalid email addresses can stop lead-form submissions from syncing into HubSpot, while clicks and impressions still appear.

6. Timing

HubSpot keeps refreshing data from the ad platforms, so live numbers can differ slightly from what the platform shows at that moment.

None of these are mistakes by Meta, Google or HubSpot. Each system measures what it can see by its own rules. The result is that no single dashboard gives you the number you actually want.

What Cost per Deal Leaves Out

Even when HubSpot and the ad platform line up perfectly, cost per deal divides ad spend by closed-won deals. The costs that come with each of those deals sit elsewhere:

  • Refunds and chargebacks that arrive weeks after the deal closed, so the revenue was never kept.
  • Lead vendor and partner payouts paid for the leads or calls behind the deal.
  • Card processing and financing fees taken from every sale.
  • The cost to deliver the work or product the customer bought.

Our guide to marketing costs walks through each one, and true CAC shows how they change the cost of winning a customer.

Worked Example: HubSpot Return vs What the Campaign Kept

This is an illustrative example, not client data. A company spends $10,000 on one Meta campaign in a quarter. HubSpot attributes 20 closed-won deals to it, worth $2,400 each.

LineAmount
Revenue from deals (20 × $2,400)$48,000
Ad spend−$10,000
Deal revenue per $1 of ad spend$4.80
Refunds (2 deals)−$4,800
Partner payouts−$6,000
Card processing fees−$1,400
Cost to deliver the work−$24,000
Profit the campaign kept$1,800

HubSpot’s cost per deal for this campaign is $500 ($10,000 ÷ 20). After refunds, payouts, fees and the cost to deliver the work, the campaign kept $1,800 of the $48,000 it brought in. Same data, same campaign, a very different decision. Our ROAS calculator lets you run your own numbers through the same steps.

A 10-Minute Check Inside HubSpot

Before you trust any ads number, these checks remove the most common causes of a mismatch:

  1. Match the date range and time zone. Compare the same days in the same time zone in the ad platform and in HubSpot.
  2. Confirm auto-tracking is on and that your destination URLs are not shortened or redirected in a way that drops parameters.
  3. Check lifecycle stages. Closed-won deals only count in HubSpot’s ads reports when the contact is in the default Customer stage.
  4. Review your default deal amount settings if you use deal-based ROI.
  5. Test a lead form from each ad and confirm the contact appears in HubSpot with the right source.
  6. List the costs that live outside HubSpot: refunds, payouts, fees and delivery cost, and where each is recorded.

Getting to True Cost per Customer

Allocera’s CDAI engine connects your ad accounts (Meta and Google Ads in one click) to HubSpot or Salesforce, and every night works out what each campaign cost and kept after refunds, chargebacks, partner payouts and fees. Each campaign gets one plain call: scale it, hold it, cut it or pause it. It also goes back and checks whether its own past calls were right. You make the decision.

You keep HubSpot exactly as it is. CDAI reads it, adds the costs and revenue HubSpot’s ads reports do not hold, and shows the result per campaign. See how it works, or start with one campaign: the free audit takes your ad account and your HubSpot or Salesforce and shows what that campaign really earned.

HubSpot Ads ROI FAQs

Why does HubSpot show different ad spend or conversions than Meta Ads Manager?

HubSpot’s own guide lists time frame and time zone as the number one cause, followed by different conversion definitions, attribution rules, tracking setup and lead sync issues.

How does HubSpot calculate cost per deal?

Ad spend divided by closed-won deals tied to attributed contacts. A deal counts when it is associated with an attributed contact, has a close date in the selected range, and the contact is in the default Customer lifecycle stage. Cost per deal needs Marketing Hub Professional or Enterprise.

What does HubSpot ads ROI include?

You choose between revenue from your closed-won deals (using your default deal amount settings) or an estimate based on your average sale price and contact-to-customer rate. HubSpot’s documentation does not describe refunds, payouts or delivery costs as part of it.

Which HubSpot plan do I need for ads ROI?

HubSpot lists Marketing Hub Professional or Enterprise (or legacy Marketing Hub Basic) for its ads ROI settings. Most basic ad metrics are available on all plans.

Does Allocera replace HubSpot?

No. HubSpot stays your CRM. Allocera connects to it and to your ad accounts, calculates what each campaign really kept every night, and gives you one clear decision per campaign.

What do I need for the free audit?

One ad account (Meta or Google) and HubSpot or Salesforce. We show what one campaign really cost to win a customer and what it earned.

See What Each HubSpot Campaign Really Kept

Connect HubSpot and your ad accounts. CDAI works out what each campaign cost and kept after every cost and gives you one clear decision for it every night.

Scroll to Top