Getting offline conversion tracking working is the highest-leverage Google Ads change most B2B SaaS companies never make. The concept is straightforward: capture the Google Click ID (GCLID) from each form submission, follow that contact through your CRM pipeline, and send a conversion event back to Google Ads when the contact reaches a stage that represents real value — qualified demo, SQL, or closed-won. In practice, the implementation varies significantly depending on your CRM, your engineering bandwidth, and how much latency you can tolerate.
This post compares four implementation approaches ranked by setup complexity and data reliability. It is a companion to the conceptual guide to offline conversion import for B2B SaaS, which covers why offline tracking matters and how Smart Bidding uses the signal. This post covers the tooling and what each approach actually requires to set up and maintain.
Approach 1: Native CRM connector (HubSpot, Salesforce)
The native CRM integration is the path of least resistance for most B2B SaaS companies already running HubSpot or Salesforce. HubSpot's Google Ads integration automatically captures the GCLID on any form submission (if the HubSpot tracking code is installed on your site), stores it on the contact record, and can be configured to send conversion events back to Google Ads when contacts reach lifecycle stages you define.
Setup requires three steps: connecting HubSpot to Google Ads via the Ads integration settings, verifying that the GCLID contact property is being populated (check any recent form submission and look for the "Google Analytics Click ID" contact property), and creating conversion actions in Google Ads that correspond to the HubSpot lifecycle stages you want to import (MQL, SQL, Customer). The import is bidirectional — HubSpot handles the push automatically on lifecycle stage changes. The main limitation is that HubSpot only imports conversions at predefined lifecycle stages; if you need to track custom events (e.g., "booked demo" distinct from "MQL") you need to use HubSpot's custom conversion actions, which require some workflow configuration. Salesforce's Advertising Studio product offers similar native connectivity for Salesforce-based stacks, with the added complexity of Salesforce's data model requiring more configuration.
Best for: HubSpot or Salesforce shops that want to get offline tracking working quickly without engineering involvement.
Limitation: Batched uploads (24-48h lag), limited to native lifecycle stage mapping, less flexibility on custom conversion events.
Approach 2: GCLID webhook to Google Ads API
The GCLID webhook approach gives you the most control and the lowest latency. The implementation has three components: capturing the GCLID on form submission and storing it in your database (via a hidden form field populated by JavaScript from the URL parameter), triggering a webhook when a contact reaches a qualifying stage in your CRM, and calling the Google Ads Conversions API with the GCLID, conversion action ID, and timestamp.
As of June 15, 2026, the Conversions API endpoint moved to the Data Manager API. If you are building a new integration, target the Data Manager API directly rather than the legacy Offline Conversions endpoint. The key fields required in each API call are: the GCLID value, the conversion action ID (from your Google Ads conversion settings), the conversion time in ISO 8601 format, and optionally the conversion value. A typical implementation for a B2B SaaS company uses a webhook from the CRM (triggered when a deal reaches SQL or closed-won status) to a serverless function (AWS Lambda, Vercel Edge Function, or Cloudflare Worker) that makes the Google Ads API call. Latency is typically under 5 minutes from the CRM event to Google Ads receiving the conversion.
Best for: Companies with engineering resources who want full control over conversion event timing, custom event definitions, and low import latency.
Limitation: Requires maintenance when Google Ads API changes (as happened in June 2026), needs a developer to set up and keep running.
Approach 3: Zapier or Make pipeline
Zapier and Make (formerly Integromat) both offer Google Ads actions that support offline conversion uploads — and both have updated their Google Ads actions to use the Data Manager API following the June 2026 migration. For non-technical teams or small engineering teams with limited bandwidth, this approach provides a middle ground between native CRM connectors and custom webhooks.
The typical Zap or Make scenario is: trigger on CRM deal stage change (e.g., HubSpot deal moves to SQL stage) → find the contact's GCLID from the contact record → send offline conversion to Google Ads via the Google Ads action. Zapier's Google Ads action currently supports the "Upload Click Conversion" function which matches the GCLID import approach. The key requirement is that the GCLID must already be stored on the contact — Zapier cannot capture the GCLID itself; it just forwards the data to Google Ads when a CRM event triggers the scenario.
The practical challenge with Zapier and Make for offline conversions is failure handling. API calls can fail silently in automation pipelines, and a missed conversion upload does not generate a visible error — you only discover it when you notice conversion volume dropping in Google Ads. Build error logging into any automation pipeline: have failed conversions write to a Google Sheet or Slack notification so you can reprocess them manually. Reprocessing is supported by the Google Ads Conversions API up to 90 days after the original click date.
Best for: Non-technical teams or RevOps-led implementations who want more flexibility than native CRM connectors without writing code.
Limitation: Failure handling requires extra setup, task- based pricing can add up at high conversion volumes, scenario configuration is brittle when CRM data models change.
Approach 4: Enhanced conversions for leads with CRM match
Enhanced conversions for leads works differently from the GCLID-based approaches above. Instead of matching on a click ID, it takes hashed PII (email address, phone number) from a form submission and uses Google's identity graph to match those users to Google account holders and attribute the conversion. This catches attribution that GCLID-based import misses — users who switched devices between clicking the ad and submitting the form, or users where the GCLID was not captured correctly.
For B2B SaaS, enhanced conversions for leads is best used as a supplementary signal alongside GCLID import, not as a replacement. The GCLID method is more precise (you know exactly which click drove the conversion) while enhanced conversions are more comprehensive (they catch more conversions but with less precision). Running both provides better overall conversion signal and reduces the attribution gap.
Implementation requires Google consent mode to be configured correctly — without it, enhanced conversions will not function in markets with strict consent requirements (EU, UK, and increasingly other markets). The June 2026 consent changes are particularly relevant here: ensure your consent mode implementation is current before relying on enhanced conversions for leads as a significant attribution source.
Choosing the right approach for your stack
The right choice depends primarily on your CRM, your engineering resources, and whether you are starting from scratch or fixing an existing implementation. For most B2B SaaS companies in the $1M-$10M ARR range using HubSpot, the native connector is the right starting point — it gets offline tracking working without engineering involvement and captures 80% of the value. Move to the GCLID webhook approach when you have custom conversion events the native connector cannot support or when you need lower import latency for accounts where the learning period is a limiting factor.
Regardless of which approach you use, the conversion actions you import should reflect genuine sales milestones, not form fills. The staging that produces the best Smart Bidding signal for B2B SaaS is: import demo-booked or SQL-stage as the primary conversion event (high volume, predictive of revenue), import closed-won as a secondary conversion event with the actual deal value attached. This gives Smart Bidding a real revenue signal while maintaining enough volume for the learning algorithm to function. Accounts with fewer than 30 closed-won deals per month per campaign should use the SQL stage as primary even if closed-won is the ultimate goal.
The GCLID vs enhanced conversions comparison covers the attribution mechanics in detail for companies deciding between the two technical approaches.
Monitoring your offline conversion pipeline
Offline conversion pipelines break silently. The most common failures are: GCLID capture stopping when a form or CMS update removes the hidden field, CRM field mapping breaking when a lifecycle stage is renamed, and API authentication tokens expiring. None of these generate a visible error in Google Ads — you see conversion volume declining and have to trace back to find the break.
Build a monitoring habit into your weekly Google Ads review: compare the volume of offline conversion events in Google Ads to the volume of deals reaching that stage in your CRM for the same week. If they diverge by more than 20%, your pipeline has a break somewhere. The most common fix is regenerating API credentials or reverifying that the GCLID field is being populated on recent form submissions. Set a 90-day calendar reminder to check API token expiration — many OAuth implementations default to tokens that expire in 60-90 days without automatic refresh.