Our client helps fast-growing companies manage employee laptops and IT gear across cities, countries, and continents. From sourcing to delivery, retrieval to recycling, they handle the full lifecycle of remote IT hardware so teams can work smoothly without worrying about logistics.
As they scaled, they ramped up their marketing, too. Campaigns went live on Google, LinkedIn, Reddit, Meta, and Bing. Budgets were spent. Ads were running. Leads started coming in.
But the pipeline stayed quiet.
They knew something was off, and they wanted to fix it. That meant answering questions like:
What they wanted was simple: to know how much each Lead, Marketing Qualified Lead (MQL), Sales Qualified Lead (SQL), Opportunity, and Customer cost them, per channel, per campaign.
A dream dashboard might look like this:
The problem? The numbers lived in two different worlds:
And HubSpot with its limited ad reporting didn’t help:
So you end up with a lot of data… but very little insight.
The team found themselves bouncing between platforms, exporting reports, cleaning spreadsheets, and still struggling to answer basic questions like:
No marketing team wants that. So they brought us (OneMetric) to solve it.
We did what most would: started with Looker Studio.
The idea was to centralize campaign cost data from ad platforms and then later pull in funnel data from HubSpot.
But Looker didn’t play nice:
It was clear this wasn’t going to scale. We needed a better solution.
Instead of adding more tools, we went back to the basics and asked: What exactly do we want to measure?
Answer:
And for that, we didn’t need a Business Intelligence platform. We needed structured campaign data in one place.
Here’s how we broke it down:
We weren’t blocked by missing data. But small issues made reporting harder than it should’ve been.
To link ad spend from Google to funnel performance in HubSpot, campaign names needed to match. But even within Google Ads, naming varied a lot.
Example:
- Google Ads had two campaigns: GS_23 and GoogleSearch_23 (same month, same goal, different names)
- HubSpot recorded both under a single UTM like: adwords
Without standard names, nothing aligned.
So, we standardized campaign names and UTM sources.. Then built a cleanup workflow to keep things tidy going forward.
HubSpot exported dates as long Unix timestamps. For example, instead of “Jan 2024,” we got something like 1704067200000.
We didn’t need time-to-the-second — we just wanted the month for each contact. So we used a formula in Google Sheets to convert Unix timestamps into clean, readable dates.
Most of the ad platforms were reporting in euros. But LinkedIn? It gave us costs in dollars. That broke any clean comparison between platforms.
If we had gone ahead with mixed currencies, the spend numbers would’ve looked inflated or deflated—completely distorting cost per lead or SQL calculations, and making LinkedIn seem more (or less) efficient than it actually was.
So, we used the GOOGLEFINANCE function inside the sheet to convert USD to EUR in real time. This kept all spend data aligned without manual adjustments and ensured fair, apples-to-apples comparisons across every channel.
Once the campaign and funnel data were cleaned and standardized, we were ready to stitch it all together.
We had:
Now that campaigns were aligned, we could map:
We used Pivot Tables along with COUNTIF formulas in Google Sheets to combine this.
And every row was labeled by month, so we could break down:
We rolled up the campaign-level data to show monthly performance for each platform. This gave a clear, side-by-side comparison of how each channel was performing over time.
This gave a month-on-month view of performance by platform. Something they never had before.
Finally, we added a column that categorized each channel into:
Using this, we created monthly summaries like:
This structure helped them:
We pulled in all the key metrics and structured them month by month. This included:
This gave the team full visibility from first click to closed customer, with performance and cost mapped at every stage.
We wanted to make sure that the data stayed fresh without manual effort.
The result? A live, always-on dashboard that told the team:
No delays. No refresh buttons. Just real-time insights, every day.
This wasn’t just a reporting fix. It completely changed how the team approached marketing decisions.
Example: Let’s say they were spending $1,000* on each channel.
After the dashboard went live, they saw that only 3 campaigns on Google and 2 on LinkedIn were actually bringing in customers*.
The rest were generating impressions and clicks—but nothing beyond that.
Now, instead of guessing what to tweak, they could:
With visibility into every stage from spend to revenue, they finally had a marketing engine guided by real-time data and not gut feel.
Now that the team had a clear view of what was working and what wasn’t, they wanted to go one level deeper — reverse engineer the journey.
They weren’t just asking which campaign brought in leads. They wanted to know:
But tracking that wasn’t straightforward.
RevenueHero was handling form fills and pushing data into HubSpot, which meant the actual landing page visits weren’t being captured directly.
Here’s how we solved it:
This gave the team clear insight into which pages were driving conversions — not just traffic. And it helped them decide exactly where to double down, improve messaging, or test new ideas.
Now, there was no more guessing which channels work because campaigns now connect directly to pipeline and revenue. And the impact was in pocket:
What they have now is clean, simple, and scalable — exactly how reporting is supposed to look.