All Case Studies
Google Ads Custom Development Reporting

Custom Google Ads API Reporting Tools

We built bespoke reporting dashboards directly on the Google Ads API to give a multi-brand client real-time campaign transparency.

The Challenge

The client had well-established reporting processes built around Google Ads’ standard conversion tracking. Their internal stakeholders relied on these reports for budget decisions, and consistency in how conversion data was presented was non-negotiable — any change to the underlying conversion methodology needed to be invisible at the reporting layer.

At the same time, we had identified a significant opportunity to improve campaign performance by implementing HubSpot lifecycle stage data as offline conversions. Rather than optimising against website form submissions (which treats every lead equally), we wanted Google Ads to optimise against qualified pipeline stages — MQLs, SQLs, and opportunities — fed back from HubSpot. This gives Smart Bidding a far more accurate signal of what a valuable conversion actually looks like for this client.

The problem was that switching the primary optimisation goal to offline conversions would break the client’s existing reporting. Offline conversions report differently in the Google Ads interface — they appear under different conversion action names, attribute to different dates (conversion time vs. click time), and do not map neatly onto the historic data the client had been reviewing for years. We needed a way to adopt the new conversion model for bidding whilst preserving full reporting continuity.

Our Approach

We built a custom API layer using a Cloudflare Worker that sits between Google Ads and the client’s reporting infrastructure. A Google App script connects to the Worker on a scheduled basis, authenticating via a secure token exchange. The script requests a detailed conversion-level report for any specified time period using the Google Ads API (GAQL queries), pulling granular data across both the legacy website conversions and the new offline conversion actions.

The Worker processes and normalises this data, then outputs it in a format that slots directly into the client’s existing reporting system. The result is a unified view: the historic conversion metrics the client expects to see, alongside the new HubSpot lifecycle conversions, presented side by side without any disruption to the reporting cadence or format.

This dual view gives us a practical benchmark. We can monitor how our optimisation changes are affecting on-site engagement goals — calculator usage, resource downloads, contact form starts — through the legacy conversion lens, whilst simultaneously tracking the cost-per-lead impact through the offline conversion data that actually reflects pipeline quality. It separates the “what happened on the website” question from the “what happened in the sales process” question, which is exactly the visibility this client needed.

The Results

The client now has full reporting continuity despite a fundamental change in how their campaigns optimise. Stakeholders see the same familiar metrics in their reports, with the addition of pipeline-stage data that was previously invisible at the campaign level.

From a performance perspective, the shift to offline conversion optimisation means Smart Bidding is now working towards leads that genuinely progress through the sales pipeline, rather than treating every form fill as equally valuable.

The Cloudflare Worker architecture also gives us a lightweight but highly scaleable foundation for future reporting needs. Additional reports can be spun up quickly and the output integrates cleanly into Looker, Power BI, or whichever tool the client adopts next. Whatever the reporting requirement, the infrastructure is already in place to handle it.

Need similar results?

Every project starts with understanding your specific challenges. Let's talk about what you need.