← All posts

HubSpot to Google Ads Offline Conversion Tracking Setup

Offline conversion imports from HubSpot to Google Ads is the highest-leverage thing most B2B accounts skip. Complete step-by-step setup guide for 2026.

9 min read

The single highest-leverage Google Ads change you can make in a B2B SaaS account: connect HubSpot to Google Ads via offline conversion imports. We've watched accounts cut CPA by 30-50% in 60 days from this one change.

Yet most accounts don't have it set up. Either they don't know it exists, they think it's complicated (it's not), or their agency hasn't done it for them (which is itself a flag).

Here's the complete step-by-step setup guide. Should take 60-90 minutes end-to-end.

What offline conversion imports do

Default Google Ads tracking knows when someone fills out a form on your site. It does NOT know:

  • Whether that person was a real prospect or a tire-kicker
  • Whether they took a sales call
  • Whether they progressed through your funnel
  • Whether they became a customer
  • How much revenue they generated

When you push HubSpot lifecycle stages back to Google Ads as offline conversions, you tell Google's algorithm:

  • "This form fill became a Marketing Qualified Lead 7 days later"
  • "This MQL became a Sales Qualified Lead 14 days later"
  • "This SQL became a Closed Won deal 45 days later, worth $48,000"

The algorithm learns which keywords/audiences/landing pages drive ACTUAL business outcomes vs. just form fills. It then bids more aggressively on those patterns and less on keywords that produce form fills but no sales.

Net result: same budget, better leads, lower CPA.

The architecture overview

Three components:

  1. HubSpot β€” your CRM, where leads live
  2. Google Click ID (GCLID) β€” a unique identifier passed when someone clicks an ad
  3. Google Ads Conversion API β€” the endpoint that receives offline conversion data

The flow:

  1. Person clicks Google ad β†’ GCLID captured in URL parameter
  2. Person fills out form β†’ GCLID stored as a property in their HubSpot contact record
  3. As that contact progresses through HubSpot stages, you push events back to Google with the GCLID
  4. Google Ads matches the GCLID to the original click and credits the conversion

Step 1: Capture GCLID on form submissions (15 min)

You need to capture GCLID when leads first arrive on your site so you can later associate sales outcomes back to specific ad clicks.

Set up GCLID capture in your forms

If you use HubSpot forms:

  1. Go to Marketing β†’ Forms in HubSpot
  2. Open each lead-generation form
  3. Click the cog icon β†’ "Embed code"
  4. Add this script ABOVE the form embed code:
<script>
  // Captures GCLID from URL and stores in cookie + HubSpot field
  function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
  }
  
  var gclid = getParameterByName('gclid');
  if (gclid) {
    // Set cookie for 90 days
    document.cookie = 'gclid=' + gclid + '; max-age=7776000; path=/; SameSite=Lax';
  }
  
  // Wait for HubSpot form to load, then populate hidden field
  window.addEventListener('message', function(event) {
    if (event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormReady') {
      var gclidValue = (function() {
        var match = document.cookie.match(new RegExp('(?:^|; )gclid=([^;]*)'));
        return match ? decodeURIComponent(match[1]) : null;
      })();
      
      if (gclidValue) {
        var hubspotForm = document.querySelector('iframe.hs-form-iframe');
        if (hubspotForm) {
          hubspotForm.contentWindow.postMessage({
            type: 'set-form-field-value',
            fieldName: 'gclid',
            value: gclidValue
          }, '*');
        }
      }
    }
  });
</script>

Add GCLID property to HubSpot

  1. HubSpot β†’ Settings β†’ Properties
  2. Object: Contact
  3. Click "Create property"
  4. Name: "GCLID" (label: "Google Click ID")
  5. Type: Single-line text
  6. Save

Now, on every form, add GCLID as a hidden field.

Test the capture

  1. Open your site with a fake GCLID parameter: https://yoursite.com/?gclid=test123
  2. Submit a form
  3. Check the contact record in HubSpot β€” GCLID property should be test123

If it's not, the script didn't run or the field wasn't added correctly. Debug before moving on.

HubSpot has a native Google Ads integration (Marketing Hub Pro+ required, or the Google Ads tracking integration on lower tiers).

  1. HubSpot β†’ Settings β†’ Integrations β†’ Connected apps
  2. Click "Visit App Marketplace"
  3. Search "Google Ads"
  4. Click "Connect"
  5. Authorize Google Ads access
  6. Select the Google Ads account you want to connect
  7. Map your HubSpot lifecycle stages to Google Ads conversion actions
HubSpot Stage Google Ads Conversion
Lead Skip (use form fill conversion)
MQL "Marketing Qualified Lead" (secondary conversion)
SQL "Sales Qualified Lead" (secondary conversion)
Opportunity "Sales Opportunity" (secondary conversion)
Customer "Closed Won" (PRIMARY conversion β€” bid optimization target)

The key choice: which conversion does Smart Bidding optimize for?

For most B2B SaaS:

  • If sales cycle <30 days: optimize for SQL
  • If sales cycle 30-90 days: optimize for Opportunity
  • If sales cycle 90+ days: optimize for MQL initially, transition to Opportunity once you have 30+ data points

Step 3: Configure conversion values (15 min)

The most powerful version of offline tracking includes deal value, not just count.

In HubSpot's Google Ads integration settings:

  1. Map "Closed Won" β†’ Send "amount" field as conversion value
  2. Configure currency (USD)
  3. Set "include all values" or "include deals over $X" depending on your product mix

This tells Google: "This conversion was worth $48,000" (not just "1 conversion").

Smart Bidding optimizes very differently when it knows conversion VALUE vs. just count. It will bid more aggressively for queries that produce high-value deals and less for queries that produce many small deals.

Step 4: Verify data flow (5 min)

After setup, do this:

  1. Wait 48 hours
  2. Go to Google Ads β†’ Tools β†’ Measurement β†’ Conversions
  3. Look at your secondary conversion actions
  4. Status should be "Recording conversions" (not "No recent conversions")
  5. Click into each conversion to see attributed clicks and values

If status shows "No recent conversions" after 7 days, something is broken. Most common issues:

  • GCLID isn't being captured on form submissions (re-test step 1)
  • HubSpot integration didn't authorize correctly (re-do step 2)
  • Lifecycle stage mapping is wrong (verify in HubSpot integration settings)
  • Smart Bidding strategy doesn't include the secondary conversions

Step 5: Adjust bidding strategy (10 min)

Once data is flowing, optimize bidding to use it.

For Search campaigns:

  1. Switch from tCPA β†’ "Maximize conversions" (with secondary conversions enabled)
  2. Or set tCPA target based on Closed Won conversion (much higher number than form-fill tCPA)

For example, if your form-fill tCPA was $100, your Closed Won tCPA might be $2,000 β€” but with the SAME conversion volume math working out.

For Performance Max:

  1. Add Closed Won as the primary conversion goal
  2. Add MQL/SQL as secondary observation goals
  3. Set tROAS based on revenue Γ· ad spend ratio

For brand campaigns:

Brand campaigns typically have low form fills but high lifetime value. Offline conversion tracking lets you accurately measure brand ROAS and bid appropriately.

What changes in 60 days

Once Google Ads has 30+ Closed Won conversions, the algorithm starts genuinely optimizing for revenue, not form fills.

Typical results we've seen:

  • Week 1-4: No visible change. Algorithm collecting data.
  • Week 4-8: Subtle bid changes β€” some keywords gaining share, others losing.
  • Week 8-12: Visible CPA improvement (20-40% drop) at same conversion volume.
  • Week 12+: Compound improvement as algorithm refines understanding of high-value patterns.

Most accounts that implement this fully see CPA decrease from $400 to $150-250 at the same lead volume. Some see $200 β†’ $80. The exact improvement depends on how messy your form-fill data was vs. how clean your customer data is.

Common mistakes to avoid

1. Optimizing too early

Don't switch primary conversion to Closed Won until you have 30+ Closed Won conversions in the last 30 days. Smart Bidding needs a meaningful sample size.

2. Skipping deal value

Tracking just count without value tells the algorithm "all customers are equal." Most B2B businesses have huge variation in deal sizes. Pass the value.

3. Not setting up GCLID capture properly

If GCLID isn't on EVERY form, you have data gaps. Test every form individually.

4. Forgetting about phone calls

If you have phone-based conversions, you need parallel setup for call tracking (CallRail integration with Google Ads). Otherwise, you're missing 30-50% of true conversions.

5. Mixing first-touch and last-touch attribution

Pick one and stick with it. Most B2B should use Data-Driven Attribution. Don't switch back and forth.

When this isn't worth doing

Offline conversion imports require:

  • HubSpot Marketing Hub Pro or above (for native integration) β€” though there are workarounds at lower tiers
  • ~30+ closed deals per month (otherwise sample size is too small for the algorithm)
  • Reasonably clean lifecycle stage discipline in HubSpot
  • 60-90 days of patience before seeing results

If your business doesn't fit those β€” for example, if you do 5 deals/month at $5K each β€” the optimization gain is smaller than the setup effort. Focus on landing pages and creative instead.

Same setup with Salesforce, Pipedrive, etc.

The principles are identical. The execution differs slightly:

  • Salesforce: Native integration via Salesforce β†’ Setup β†’ Google Ads. Same lifecycle stage mapping logic.
  • Pipedrive: Use Zapier or webhook-based middleware. More setup work, same end result.
  • Custom CRM: Use Google Ads Conversion API directly. Requires developer time.

The methodology is the same: capture GCLID, push lifecycle events back to Google, optimize bidding for high-value events.

Free offline conversion setup audit

If you're running $5K+/month in Google Ads B2B campaigns and don't have offline conversion tracking implemented, you're leaving 30-50% efficiency on the table.

We do free audits checking:

  • Whether GCLID capture is working
  • Whether your CRM is connected properly
  • Whether bidding strategies are configured to use offline data
  • Where the gaps are between form fills and real customers

30-min Loom, yours to keep. If your setup is already correct, we'll tell you that. If it's not, you'll know exactly what to fix.

Frequently asked questions

What is offline conversion tracking in Google Ads?
Offline conversion tracking is the practice of pushing downstream conversion events (sales calls, qualified leads, signed contracts) from your CRM back to Google Ads, so the algorithm can optimize for actual revenue outcomes rather than just form fills. It uses the Google Click ID (GCLID) as a unique identifier to match each downstream event back to the original ad click.
Do I need HubSpot Marketing Hub Pro for offline conversion imports?
For the native HubSpot-Google Ads integration, yes β€” Marketing Hub Pro or above. On lower HubSpot tiers, you can still implement offline conversion tracking via Zapier middleware or custom webhooks, but the setup is more complex and less reliable. Most agencies recommend the Pro tier specifically for this integration if Google Ads is a meaningful channel.
How long does offline conversion tracking take to improve performance?
30-60 days for visible bidding improvement; 90+ days for compound effects. Google's Smart Bidding needs 30+ closed-loop conversions before meaningfully optimizing for them, so accounts with longer sales cycles see slower payoff. Most accounts that implement properly see CPA decrease 20-40% within 90 days at the same conversion volume.
What's a GCLID and why is it important?
GCLID stands for 'Google Click ID'. It's a unique identifier appended to landing page URLs whenever someone clicks a Google ad. Capturing the GCLID at form submission and storing it on the contact record in your CRM is what enables you to later push lifecycle events back to Google Ads with accurate attribution. Without GCLID capture, offline conversion tracking is impossible.
Can I use offline conversions with Salesforce instead of HubSpot?
Yes β€” Salesforce has a native Google Ads integration that works similarly to HubSpot's. The setup principles are identical: capture GCLID at form submission, push lifecycle events back to Google Ads, optimize bidding for downstream events rather than form fills. Pipedrive, Zoho, and most major CRMs offer similar integrations either natively or via Zapier.

Want this applied to your own account? We'll record a free Loom walkthrough showing exactly what we'd fix in your Google Ads. Get a free audit β†’

By MyLeadsFactory Team Β· Published December 2, 2025
Filed under: Saas B2b

Keep reading