NewHubSpot workflow action

Send Google Ads offline conversions from HubSpot workflows.

Send Google Ads Conversion is a 0CodeTools action for HubSpot workflows that uploads an offline conversion to Google Ads, matched by the GCLID on the record. HubSpot's documentation describes its built-in Google Ads events as firing on a lifecycle stage change or a form submission, with one value you enter per event, whatever the deal is worth. This action runs in any workflow, including a deal workflow at Closed Won, and sends the deal's Amount as the value.

Free plan · 1 credit per uploaded conversion · No charge for failed uploads
Closed-won revenue to Google AdsExample
Trigger · enrolls deals
When this happens
Deal stage is any of Closed Won (Sales Pipeline)
Action 1
Send Google Ads Conversion
Send a conversion to Google Ads account 123-456-7890
Hide configuration
Conversion Action ID987654321
GCLID (Google Click ID)Google Click ID (Contact: Most recently updated)
Conversion ValueAmount (Enrolled deal)
Currency CodeUSD
Action 2
Branch
Route on Result of step 1
= UPLOADED= FAILEDNone met
End
The problem with form-fill conversions

Without offline conversions, Google Ads can't tell a spam form fill from a signed deal.

Asked in a Google Ads Community thread about a Performance Max campaign that gets only spam leads, a Diamond Product Expert said Google can't tell good leads from bad unless you send the validated ones back as offline conversions. Google says Smart Bidding works with offline conversion imports when you upload at least daily and assign values. 0CodeTools adds that upload as a step in your HubSpot workflows.

01

Spam leads count as wins

When the form fill is the conversion, Performance Max counts spam and people who can't buy as leads and keeps optimizing toward more of them. Instead of trying to flag the junk, send a separate conversion for the leads sales qualified, worth far more than a raw form fill, and bid on that.

02

Every deal gets the same value

In HubSpot's documentation, each native Google Ads event carries one value you enter, so a small deal and a big one look the same to Target ROAS. Some teams also report Google Ads showing a fraction of the deal value they see in HubSpot. The action sends the deal's Amount instead, from any trigger a workflow supports.

03

Conversions go missing with no error

Teams report events marked as synced in HubSpot and far fewer conversions in Google Ads, with no error to act on. The action returns a Result you can branch on for every record: FAILED when Google's API refuses the upload or the record has no GCLID, UPLOADED when Google accepts it for processing.

How it works

No GCLID on the HubSpot record, no match in Google Ads.

Google Ads matches an offline conversion to the ad click by its GCLID, and HubSpot stores it on the contact, in the default property Google Click ID. With Zapier, HubSpot Community users describe adding a custom GCLID deal property and a workflow that copies the value over; a HubSpot deal workflow reads it from the deal's contact instead. Click the steps to follow one lead.

Ad click. With auto-tagging on, Google adds a gclid parameter to the landing page URL for every ad click.
The action in HubSpot

What Send Google Ads Conversion needs: the ad account, the conversion action, the GCLID and a value.

This is Send Google Ads Conversion as it appears in the HubSpot workflow editor, set to send a conversion worth 500 when a contact becomes a Sales Qualified Lead and to create a task when the upload fails. Click the step to open it; the info icons show the in-product help.

  • Customer ID and Conversion Action ID come from Google Ads
  • GCLID maps to HubSpot's Google Click ID property
  • Conversion Value takes a number or a token like deal Amount
  • Order ID: re-sending the same one updates that conversion instead of adding another
Connect Google Ads in 0CodeTools
Trigger enrollment for contacts
Only enroll contacts that meet these conditions
Group 1
Lifecycle stage is any of Sales Qualified Lead
Re-enroll offDetails
+
1. Send Google Ads Conversion

Send a conversion to Google Ads account 123-456-7890

Click to see configuration
+
2. Branch

Check branches in order: = UPLOADED, = FAILED, and None met.

3 branches - click to see paths
+
End

Click the steps to expand them. Sample data.

Use case 01 · Qualified leads

Send Google Ads the leads sales accepted

If sales rejects a big share of your Google leads, the form fill is the wrong thing to optimize on. When a contact becomes a Sales Qualified Lead, send a conversion with a value well above a raw form fill. Google recommends a separate conversion action for each funnel stage, so give SQLs their own.

  • Contact workflow on Lifecycle stage
  • Static value, for example 500
  • Record ID as Order ID, so a re-enrolled contact updates the same conversion
SQL conversionEnrolls contacts
Trigger · enrolls contacts
When this happens
Lifecycle stage is any of Sales Qualified Lead
Action 1
Send Google Ads Conversion
Send a conversion to Google Ads account 123-456-7890
Click to see configuration
Conversion Action ID111222333
GCLID (Google Click ID)Google Click ID (Enrolled contact)
Conversion Value500
Currency CodeUSD
Order ID (optional)Record ID (Enrolled contact)
End
Use case 02 · Closed-won revenue

Send the Closed Won deal amount to Google Ads, not a fixed value

A deal-based workflow fires when the deal is marked Closed Won, reads the Google Click ID from the deal's contact and sends the deal's Amount as the value. Google now sees the sale, not just the form fill. Target ROAS and Maximize conversion value need real, varied values to tell a small deal from a big one.

  • Deal-based workflow, GCLID from the associated contact
  • Conversion Value = the deal's Amount
  • Deal record ID as Order ID, so each won deal from the same contact is its own conversion (when the conversion action counts every conversion and the click is inside its window)
Closed-won revenue to Google AdsEnrolls deals
Trigger · enrolls deals
When this happens
Deal stage is any of Closed Won (Sales Pipeline)
Action 1
Send Google Ads Conversion
Send a conversion to Google Ads account 123-456-7890
Click to see configuration
Target recordEnrolled deal
GCLID (Google Click ID)Google Click ID (Contact: Most recently updated)
Conversion ValueAmount (Enrolled deal)
Currency CodeUSD
Order ID (optional)Record ID (Enrolled deal)
End
Use case 03 · Deal stages

Send HubSpot deal stages to Google Ads without adding lifecycle stages

HubSpot's native events trigger on lifecycle stage changes or forms, so some teams add lifecycle stages just for ad tracking. Here one deal workflow branches on Deal stage and sends booked appointments, sent contracts and closed deals to their own conversion actions, each with its own value. Bid on the stage that matters and still see the rest in reporting.

  • Branch on Deal stage, with re-enrollment on
  • One Send Google Ads Conversion step in each path, each with its own Conversion Action ID
  • Appointment Scheduled: value 200 · Contract Sent: 1000 · Closed Won: the deal Amount
Stage-by-stage conversionsEnrolls deals
Trigger · enrolls deals
When this happens
Deal stage is any of Appointment Scheduled, Contract Sent, Closed Won
Action 1
Branch
Check branches in order on Deal stage
Appointment ScheduledContract SentClosed WonNone met
Action 2
Send Google Ads Conversion
One in each branch path. The Closed Won path:
Click to see configuration
Conversion Action ID333444555
GCLID (Google Click ID)Google Click ID (Contact: Most recently updated)
Conversion ValueAmount (Enrolled deal)
Currency CodeUSD
End
Use case 04 · Missing click IDs

See which closed deals Google Ads never got

Teams report Google Ads leads that reach HubSpot with an empty Google Click ID, for example from a form embedded in an iframe on another site or a custom form that creates contacts through the API. Those conversions go missing quietly. Branch on FAILED to create a task or set a property, so you can see how much revenue Google never heard about.

  • Branch on Result of the conversion step
  • Flag records whose upload returns FAILED, such as those with no GCLID
  • Report on the gap in HubSpot
Flag deals Google never sawEnrolls deals
Trigger · enrolls deals
When this happens
Deal stage is any of Closed Won (Sales Pipeline)
Action 1
Send Google Ads Conversion
Send a conversion to Google Ads account 123-456-7890
Action 2
Branch
Route on Result of step 1
= UPLOADED= FAILED → Edit recordNone met
End
Setup

Where to start: Google Ads, HubSpot, then 0CodeTools.

An upload fails when the record has no GCLID or the conversion falls outside the conversion action's click-through window, so check both before the first run. The full walkthrough, with where to find each ID, is in our step-by-step setup guide.

01

In Google Ads

  1. Turn on auto-tagging, so every ad click carries a GCLID.
  2. In Goals, create a conversion action that imports offline conversions from clicks (Google's help calls the option Conversions offline).
  3. Set its click-through window to cover your sales cycle (default 30 days, up to 90). Open it and copy the number after ctId= in the address bar: that is your Conversion Action ID. Wait 4-6 hours before the first upload.
02

In HubSpot

  1. Good practice: keep the HubSpot tracking code on your landing pages and capture leads with HubSpot forms, which HubSpot's ad attribution relies on.
  2. Check that contacts from ads have a value in Google Click ID, HubSpot's default property for the GCLID.
  3. Pick the moment of conversion: a lifecycle stage, a meeting, a deal stage.
03

In 0CodeTools

  1. Go to Integrations → Google Ads and connect a Google account with access to the ad account.
  2. Add Send Google Ads Conversion to the workflow and map the fields.
  3. Test on one record first: narrow the enrollment trigger to it, check that the step returned UPLOADED, then widen the trigger.
Native events vs the workflow action

Need a Google Ads conversion from HubSpot on something other than a lifecycle stage or a form?

HubSpot's ads tool already sends conversion events to Google Ads, and for lifecycle stages it may be all you need. The workflow action covers what those events don't: other triggers, other objects and per-record values.

HubSpot ads conversion events0CodeTools Send Google Ads Conversion
Included withMarketing Hub Starter, Professional, Enterprise (5 / 50 / 100 events)0CodeTools, on any Professional or Enterprise hub (full workflows)
What triggers a conversionLifecycle stage change or HubSpot form submission (documented triggers)Anything a workflow can trigger on: properties, events, deal stages, custom objects
ObjectContactsContacts, companies, deals, tickets, custom objects
Conversion valueA value you set per eventAny number or token, e.g. the deal's Amount
MatchingGCLID or hashed contact data (enhanced conversions for leads)GCLID only
TimingSynced by HubSpotSent when the workflow step runs
Result you can branch on

Native details per HubSpot's knowledge base, September 2026. Two more routes exist: Google Ads can pull lifecycle-stage conversions from HubSpot through its Data Manager connector, at most once a day, and Google's Help Center has its own pages on importing offline conversions through Zapier. If you use more than one route, send each milestone to its own conversion action so nothing is counted twice.

Capabilities

Pick the trigger, the record, the value and the ad account on every step.

Uploads go through Google's Data Manager API, which Google has required for new offline conversion integrations since June 15, 2026.

Any trigger

Lifecycle stages, lead status, meetings, deal stages, app events, custom properties such as a PQL flag. If a workflow can react to it, it can become a conversion.

Any object

Run it in contact, company, deal, ticket or custom-object workflows. Pull the GCLID from the enrolled or an associated record.

Deal amount or a fixed value

Send a fixed number or a token such as the deal Amount, with an ISO 4217 currency code such as USD or EUR.

One action per stage

Each step names its own Conversion Action ID, so SQLs, meetings and revenue report separately.

Agency and MCC access

Reach the ad account through an agency or manager (MCC) account? Add the Manager Account ID. Each step names its own Customer ID, so one portal can send to each client account the connected Google account can access.

Result + Order ID

Branch on UPLOADED or FAILED, and pass an Order ID so a re-upload updates the same conversion instead of counting twice.

Good to know

Why a HubSpot offline conversion can be rejected or show up late in Google Ads.

01

GCLID only, for now

The action matches by click ID, so records without one return FAILED. For advertisers new to offline imports, Google recommends enhanced conversions for leads, which match on hashed contact data such as email; HubSpot's native events support it, and this action doesn't today.

02

Conversion time is when the step runs

There's no separate conversion-time field. Google only accepts the conversion inside the conversion action's click-through window (30 days by default, up to 90) and rejects clicks less than 6 hours old, so trigger the action when the milestone happens and add a 6-hour Delay after form-submission triggers.

03

Not instant in reports

The upload is sent when the step runs, and UPLOADED means Google's API accepted it. Google still validates it, and imported conversions can take several hours to appear in reports.

FAQ

Questions about HubSpot offline conversions in Google Ads.

Sending offline conversions to Google Ads through Zapier today? Read how to replace Zapier with HubSpot workflows. Also new in 0CodeTools: Send email with Gmail.

How do I send offline conversions from HubSpot to Google Ads?
HubSpot's ads tool syncs conversion events to Google Ads on a lifecycle stage change or a HubSpot form submission, on Marketing Hub Starter and up. You can also add the Send Google Ads Conversion action to any workflow: it uploads the conversion by the GCLID on the record, to the conversion action and value you choose, and returns Result = UPLOADED or FAILED.
Can HubSpot send a Google Ads conversion on something other than a lifecycle stage or form submission?
Not with its documented native events. HubSpot documents two triggers for its Google Ads conversion events: a lifecycle stage change or a HubSpot form submission, with a value you set per event. Use the workflow action when you need other triggers, deal or custom-object milestones, or per-record values like the deal amount.
How does the GCLID get into HubSpot?
With auto-tagging on, Google adds a gclid parameter to your landing page URL, and HubSpot sets its default Google Click ID contact property automatically, based on that GCLID. Check that your ad leads actually have a value in it; some teams also capture it with a hidden form field. Map that property into the action's GCLID field.
The GCLID is on the HubSpot contact, not the deal. How do I send a deal conversion to Google Ads?
Run the action in a deal-based workflow and map the GCLID field to the associated contact's Google Click ID: in the token picker, Associated to enrolled deal → Contact → All associated contacts → Contact: Most recently updated → Google Click ID. It shows as Google Click ID (Contact: Most recently updated). You don't need a custom GCLID deal property or a workflow that copies it over.
What happens if a record has no GCLID?
There's nothing to match the conversion to, so the action can't upload it and returns Result = FAILED. Branch on that result to flag the record, create a task, or simply end the workflow. Failed uploads don't use credits.
Does Send Google Ads Conversion support enhanced conversions for leads?
Not yet. Send Google Ads Conversion matches by GCLID only, so a record without a Google Click ID returns Result = FAILED. Enhanced conversions for leads match on hashed contact data such as email, and HubSpot's native Google Ads events support that method.
Why are my HubSpot offline conversions not showing in Google Ads yet?
The action sends the conversion when the workflow step runs, and Result = UPLOADED means Google's API accepted the upload. Google then processes it, which can take several hours before it shows in reports, and longer if the conversion action was created in the last 4-6 hours. Google also rejects a conversion whose click happened less than 6 hours before the upload, so for triggers that fire right after an ad click, such as a form submission, add a Delay of at least 6 hours before the action.
How long after the ad click can I still send an offline conversion to Google Ads?
Up to 90 days, if the conversion action's click-through window is set that long; the default is 30 days. Google doesn't import GCLID conversions from clicks outside that window. Set the window to cover your sales cycle, and trigger the action when the milestone happens rather than in a batch months later.
Can we send conversions to a client's Google Ads account through our manager (MCC) account?
Yes. Connect the Google account that has access to the ad account in 0CodeTools under Integrations → Google Ads, then enter the manager (MCC) account's ID in the action's Manager Account ID field.
Do I need a Google Ads API developer token to send offline conversions from HubSpot?
No. You connect the Google account that has access to your Google Ads account in 0CodeTools under Integrations → Google Ads. The action uploads through Google's Data Manager API, which does not require a developer token.
Do I need Zapier to send HubSpot offline conversions to Google Ads?
No. Zapier's Google Ads app has a Send Offline Conversion action, and Google's Help Center documents Zapier as one way to import offline conversions from a CRM, so if your Zaps work, keep them. Send Google Ads Conversion, which matches by GCLID only, does that job as a step inside the HubSpot workflow: a deal workflow reads the GCLID from the associated contact, with no custom GCLID deal property to copy it into, and the step returns Result = UPLOADED or FAILED for a Branch to act on.
How much does Send Google Ads Conversion cost?
Each uploaded conversion uses one 0CodeTools action credit; failed uploads are free. The free plan includes 100 actions per month, and paid plans start at $49/month.
Install the action

Send your next Closed Won deal to Google Ads.

Install 0CodeTools on the free plan, connect your Google Ads account, and add Send Google Ads Conversion to the workflow where a lead qualifies or a deal is won. If GCLIDs aren't reaching HubSpot in the first place, tell us about your forms and funnel and we can set up the tracking end to end.

  • Install from the HubSpot Marketplace
  • Connect Google Ads in 0CodeTools under Integrations → Google Ads
  • Map GCLID, value and conversion action, then test on one record
What are you interested in?
What HubSpot Products do you use?