← all work
Modular buildings · Part of Davro Group
Maxi Space
Click → contractEvery ad click traceable to revenue.
The problem
Google Ads could see form fills, but not which enquiries became signed contracts. Campaigns were optimising for leads, not revenue, and the sales data that mattered lived in HubSpot where the ad platform couldn't see it.
What we built
- A closed-loop offline conversion system between Google Ads and HubSpot.
- When a visitor arrives from an ad, their Google click ID (GCLID) is captured and stored.
- On form submission, a custom serverless API creates the HubSpot deal with the GCLID attached, routing it to the right pipeline stage depending on the form. GTM captures UTM parameters in parallel.
- When a deal is marked closed-won, a HubSpot workflow creates a task holding the deal ID, GCLID and deal value.
- A custom polling API checks for new tasks, validates the GCLID and uploads the conversion with its real value to Google Ads, with response verification.
- Built with error handling, data validation, scheduled failure detection, secured endpoints and encryption throughout.
- Proposals continue to run through HubSpot's native Proposify integration, which now sits inside a fully tracked journey.
The result
Click → contract
Every ad click traceable to revenue.
Real deal values
Sent to Google Ads, not lead counts.
3 custom APIs
HubSpot, polling and Google Ads.
Tools used
- Google Ads API
- HubSpot API
- Custom serverless APIs
- Google Tag Manager
- Proposify (native integration)