Marketing reporting that showed where every dollar went
When I joined a B2B technology company, there was very little marketing reporting, and it was hard to tell where leads and won business came from. I set up tracking, cleaned up the CRM, and built reporting from leadership dashboards down to each channel, plus forecasts and a budget calculator. In year one, the landing page conversion rate rose from 0.19% to 6.23%.
Landing page conversion rate
Before the rebuild compared with year one
Challenge
There was very little marketing reporting. The CRM data wasn’t well maintained, and it was hard to tell where leads and won business had come from.
What I did
Set up tracking from my first weeks, cleaned up the CRM, and built reporting at three levels, with forecasts and a budget calculator on top.
Result
A full view from first visit to closed-won. In year one, the landing page conversion rate rose from 0.19% to 6.23%.
The challenge
When I started, there wasn’t a great deal of reporting at all. The CRM data wasn’t well maintained, and there was no clear picture of the pipeline from marketing qualified lead to sales qualified lead, to deal, to closed-won.
It was also unclear where leads were coming from. The business wasn’t always asking people how they found us, and there were no UTMs, so most traffic showed up as direct or referral. Without that, there was no way to know which marketing was bringing in business and which wasn’t.
Budgets follow past results. In an EMARKETER and StackAdapt survey from 2025, 77% of B2B enterprise marketers said they use past performance to decide how to split their budget across channels.
My approach
I started by fixing the data, then built separate reporting for leadership and for my own day-to-day work. Leadership needed the pipeline and what it was likely to bring in. I needed the channel-level detail to decide what to change.
Tracking from the start. In my first weeks I wrote a tracking plan that set out what our UTMs should be and where tracking tags should go. We added them to every ad, every social post, and every third-party site, including review sites. From then on, every visitor arrived with their platform, medium, source, and campaign attached, and the ad or content they clicked if we were A/B testing.
A clean CRM. When we moved from our old CRM to HubSpot, I went through every contact, company, and deal. Working with sales and management, I traced where each one had come from wherever I could and cleaned up the rest. I then built the marketing and sales pipelines, so every lead could be followed from first touch to closed-won. (The full story of that move is in my HubSpot case study.)
I then built reporting at three levels.
What I built
Level 1: Leadership dashboards. For management, I kept it to the numbers that run the business: traffic, leads, cost per lead, sales qualified leads, deals at each stage of the pipeline, the value of deals and clients won from marketing, cost per acquisition, and return on ad spend. These lived in HubSpot dashboards alongside the pipelines themselves.
Because the pipelines held real conversion rates from previous months, leadership could also see what was likely to close. Using those rates, we could predict how much revenue the next six months would bring in.
I also built more detailed HubSpot dashboards for sales, marketing, and each channel (Google Ads, LinkedIn, organic social, the website, and individual landing pages), for anyone who wanted to dig further.
Level 2: My monthly report. For myself, I kept a much more detailed monthly report. At the end of each month I added a new row for every channel, entered the raw numbers, and formulas calculated the rest.
For each paid channel (Google Ads, Microsoft Ads, LinkedIn, and Meta), it tracked every step of the funnel:
- spend, impressions, and cost per thousand impressions
- clicks, cost per click, and click-through rate
- contacts created (with spam and poor-fit contacts filtered out), cost per contact, and click-to-contact rate
- deals created, cost per deal, contact-to-deal rate, and average deal value
- deals won, cost per won deal, return on spend, and revenue won
A combined sheet then pulled all the paid channels together into one view of paid media.
| Channel | CPC | CTR | Cost per contact | Return on spend |
|---|---|---|---|---|
| Google Ads | ● | ● | ● | ● |
| Microsoft Ads | ● | ● | ● | ● |
| ● | ● | ● | ● | |
| Meta | ● | ● | ● | ● |
Green beats the benchmark, red falls short. Each cell notes where its benchmark came from.
It also covered:
- Website and SEO: new users, search impressions, clicks, click-through rate, and average position from Google Search Console, referring domains and ranking keywords from Ahrefs, Google PageSpeed scores, outstanding HubSpot SEO recommendations, and organic leads.
- Landing pages: views, users, engagement time, form submissions, and conversion rate for each main landing page.
- Content: users and engagement time for case studies and blog posts.
- AI search: scores from an AI search grader for ChatGPT, Perplexity, and Gemini, alongside visitors arriving from AI tools.
- LinkedIn: audience, posts, interactions, tracked clicks, shares, and impressions, each with month-on-month growth.
- Email: for every newsletter, a report 48 hours after sending covering delivery, opens, clicks, replies, bounces, unsubscribes, spam reports, and how much of the email people read. The same for each email in our nurture workflows.
- Pipeline: the full funnel in one place, from site visitors to contacts, marketing and sales qualified leads, deals, discovery sessions, proposals, contracts, closed-won, and closed-lost, with the conversion rate between each stage.
Six-month comparisons. At our deal sizes, single months swing a lot, and some periods (like Christmas) are hard to judge on their own. So every table also showed the last six months, the six months before that, the last 12 months, and all time. Comparing six-month blocks removed most of the noise.
Benchmarks built in. I researched benchmarks for each platform, for Australia and our industry where I could. The summary rows turned green when we beat the benchmark and red when we fell short, with a note in the cell explaining where the benchmark came from.
Notes on what we changed. Whenever we made a change (a new campaign, new messaging, new form fields, a website update) or there was an algorithm update, I added a note to the report. Over time, I could line up the changes against the numbers.
Level 3: Inside each platform. The monthly report still wasn’t the most detailed view. Inside each platform, I looked at results by ad, campaign, location, and audience. I checked Google Ads search terms every day, reviewed keywords and ads at least weekly, and used a statistical significance calculator to decide when to retire a losing ad. I also checked LinkedIn campaigns daily.
Each month I exported our new LinkedIn followers and sorted them into prospects, clients, partners, job seekers, and people selling to us. If someone from one of our target accounts started following us, sales knew about it, even if that person wasn’t yet in HubSpot.
A quarterly keyword report. Every quarter I exported our top 1,000 ranking keywords from Google Search Console, added monthly search volumes from Google’s Keyword Planner, and merged them into a master list of every keyword we’d ever ranked for. Formulas grouped keywords by theme (healthcare, branded, client names, and each service) and highlighted the ones that mattered most, such as those containing our core service terms with enough search volume. That showed where a small push could move a keyword onto page one, and where the effort wasn’t worth it. I tracked the average position of our top 30 or so keywords in the monthly report.
Forecasts and a budget calculator. With all of that history in one place, I could make forecasts:
- Next month’s paid media. Enter the planned budget, and it estimated impressions, clicks, click-through rate, and cost per click from the past six months.
- Organic growth. Six-month projections for new users, search impressions, and visits, based on the average growth rate.
- Quick calculators. Impressions to contacts, clicks to contacts, contacts to cost, budget to contacts, and one showing how much a change in cost per click would change the number of leads we got.
- The annual budget calculator. This was probably the most important report. Enter a budget for the year, and it used our paid and organic history to estimate contacts, deals, won deals, the cost of each, and the revenue we could expect. Change the budget, and every number updated.
| Estimate | Paid | Organic |
|---|---|---|
| Contacts | ||
| Deals | ||
| Won deals | ||
| Cost per won deal | ||
| Expected revenue |
Change the budget and every number updates, using past paid and organic results.
I tried Looker Studio first. It worked well for some sources, but it didn’t connect to every platform we used, LinkedIn in particular, without extra connectors. Since leadership already had visual dashboards in HubSpot, it was simpler to keep my detailed reporting in one spreadsheet that every source fed into.
An end of year report. Each year, and sometimes at the end of the financial year too, I wrote a report for leadership covering every channel: where we started, what we did, the results, and my recommendations for the year ahead.
How I used it
Every Friday I met with our co-founder to run through the week’s work, results, and anything that stood out in the data. I used the reports as the basis for what I recommended next: where to focus, which campaigns to start, and what to repeat or roll back.
I looked past this month against last month, for trends and changes, and asked why. If organic leads dropped but website users held steady, then the conversion rate had dropped. Had our messaging changed? Had the form fields changed? Had the website changed? If traffic dipped, was it coming from blogs, case studies, or somewhere else?
Not every number got the same attention. On Google Ads, I paid little attention to impressions and cost per thousand impressions, because volume wasn’t the problem. Cost per click was a big focus, because it was high in our category. Better alignment between search, ad copy, and landing page improved our quality scores and brought it down. On LinkedIn, where the goal was awareness, impressions and cost per thousand impressions mattered more.
The biggest decision the reporting shaped was how our six-figure annual marketing budget was split. Using the previous year’s and the last six months’ results, I made the case for how much went to each channel and where our focus should be. The budget calculator showed what each option was likely to return before we committed to it.
As the only marketer, my time was just as limited as the budget. The same reporting showed which channels were generating leads, which helped me decide which platforms and campaigns got my attention each month.
Other decisions it led to:
- Moving budget to healthcare. Testing industry campaigns side by side showed healthcare converting best, so budget moved there. (More in my Google Ads case study.)
- Planning around seasonal dips. Knowing how long results took to recover after the Christmas shutdown helped set December and January budgets.
- Investing in SEO and digital PR. Search impressions had grown strongly, but clicks from Google had stayed fairly flat. That made the case for more SEO work and a digital PR agency. Over the following year, the number of sites linking to us more than tripled, and blog visitors grew too.
Results
Landing page conversion rate
Before
0.19%
Year one
6.23%
Compared with 2022, the year before I joined, my first year showed:
- landing page conversion rate rose from 0.19% to 6.23%
- Google Ads leads grew from 4 to 75
- Google Ads click-through rate rose from 2.59% to 6.63%
- website traffic grew 151% and organic traffic 52%
- referring domains grew 231%, case study views 310%, and blog views 244%
Over the longer term, the same reporting showed Google Ads returning 5x its spend in closed-won revenue.
Leadership could use the pipeline forecasts to plan ahead, and the channel reports gave me a clearer basis for where budget and time went.
Sources: EMARKETER and StackAdapt B2B Enterprise Advertising Survey, 2025.
Not sure what your marketing is really returning?
I’ll look at what your data can tell you.
What I’d do next
- Automate more of the monthly data entry. Entering the raw numbers by hand worked at our size, but connectors or a data warehouse would save time and reduce errors as the business grows.
- Add multi-touch attribution. With long B2B sales cycles, most deals have several touchpoints. Reporting on all of them would show more of what LinkedIn and email contribute.
- Set targets alongside benchmarks. Targets tied to the annual budget calculator would show progress against the business’s own plan, alongside the market benchmarks.
FAQs
What should marketing report to leadership?
I keep it to leads, cost per lead, deals at each pipeline stage, revenue won from marketing, cost per acquisition, and return on ad spend, with more detail a click away.
How do you forecast what a marketing budget will return?
Use your own history. Track each stage from impressions to closed-won, with the cost and conversion rate at each step. Then multiply a planned budget through those rates to estimate contacts, deals, and revenue.
Should you use Looker Studio for marketing reporting?
It’s a good option if it connects to all your sources. Ours didn’t connect to LinkedIn without extra connectors, so I used a spreadsheet for detailed reporting and HubSpot dashboards for leadership.