CONNECTIONS / HubSpot / HubSpot to Google OCI
Turn HubSpot closed-won deals into Google click conversions.
Google hands you a GCLID once, at the form. Signals stores it on the contact record immediately and keeps it available for the day, or the quarter, when the deal finally closes and the conversion uploads.
- ● hubspot → google.oci :: live
- > event Contact created gclid=Cj0KCQjw…
- > event Deal closed-won value=17,650 USD
- hash sha256(email,phone) gclid=carried
- route google.oci upload batch=nightly
- ✓ delivered · click conversion recorded
WHAT THIS ENABLES
HubSpot to Google Offline Conversion Import
HubSpot to Google Offline Conversion Import keeps a captured GCLID pinned to the HubSpot contact for the full life of its deal, converting the eventual closed-won into a click conversion Google Ads can count and Smart Bidding can learn from.
- The click that opened a deal gets the credit when HubSpot closes it, right inside Google Ads.
- Form fills stop being the ceiling of what Smart Bidding can learn from; closed revenue takes over.
- One upload job standing in for whatever spreadsheet someone used to assemble for OCI by hand.
The click, the conversion, and the credit.
The conversion happens off Google, away from any pixel. Here is how HubSpot closes the loop.
Built for the teams that own the number.
Ops teams whose current OCI process starts with pulling a closed-won report into a spreadsheet.
From kickoff to verified events.
-
Connect
Private app token scoped to the HubSpot contact and deal fields this specific upload draws on.
-
Map
You pick which deal stage counts as the conversion and which contact property holds the GCLID; the mapper records both.
-
Deliver
Batches go out on your schedule, and each one reports back its accepted row count.
What changes when the CSV goes away.
| Capability | Manual CSV upload | Datahash |
|---|---|---|
| Reporting | Offline sales sit in a separate export, reconciled by hand. | Revenue counted in the same OCI reporting as web conversions. |
| Deduplication | A re-uploaded file risks counting the same conversion twice. | Deduped delivery, so a resent record never counts as a second conversion. |
| Match visibility | Match quality is a guess until the numbers look off. | Match rate reported per upload, tied to the source event set that produced it. |
| Effort and latency | An analyst exports and uploads on a manual cadence. | Server-side and automatic the moment HubSpot records the event. |
What OCI actually receives.
- ● signals :: event payload
- > POST /offline_conversion_import source=hubspot.deal
- gclid "Cj0KCQjw…" · conversion_action "closed_won"
- conversion_date_time "2026-07-14 11:20:00+04:00"
- conversion_value 17650 · currency_code USD
- ✓ accepted · batch=nightly
Adjacent moves on the same stack.
from HubSpot
HubSpot to Google Store Sales
HubSpot to Google Store Sales turns closed-won deals and their contact records into Store…
Learn morefrom HubSpot
HubSpot to Meta Offline CAPI
HubSpot to Meta Offline Conversions API takes each deal HubSpot marks closed-won and…
Learn moresame use case
ActiveCampaign to Google OCI
ActiveCampaign to Google Offline Conversions: Signals reads your ActiveCampaign contacts…
Learn moregeneric
Google Offline Conversion Import
Datahash automates GCLID-based OCI uploads to Google Ads so click-based offline conversions…
Learn moreAsked on almost every call.
What happens to a HubSpot deal whose contact never captured a GCLID?
That deal cannot go through OCI at all; the upload format has one match key and it is the click ID. Two things limit the damage. Datahash writes the GCLID to a contact property automatically wherever the form exposes it, which keeps the gap small, and most workspaces run Enhanced Conversions for Leads on the same pipeline, so a GCLID-less deal still reports through hashed email and phone instead of vanishing.
How long after a HubSpot deal closes does the Google Ads conversion show up?
Google usually finishes processing an OCI batch within a few hours of receiving it, so the bigger variable is your own upload schedule, which can run hourly, nightly, or anywhere between. In practice a morning closed-won shows up in reporting by the next business day. That leaves Smart Bidding plenty of room to fold the conversion into the same week's bidding decisions.
Does this work if a deal moves through several HubSpot pipelines before it closes?
Yes. Signals follows the deal record itself rather than a single pipeline, so a deal that starts in one pipeline and gets reassigned to another before closing still carries its GCLID and closes correctly through OCI. Only the final closed-won stage, wherever it lives, triggers the upload.
NEXT STEP