Offline Conversion Tracking for B2B SaaS: 5 Simple Steps

Ad Labz

14 min read

Ad Labz, B2B SaaS, CRM, Enhanced Conversions, Google Ads, HubSpot, LinkedIn Ads, Offline Conversion Tracking

Marketer catching a red boomerang, representing CRM data looping back to the ad platforms

Offline Conversion Tracking for B2B SaaS: Teach Google and LinkedIn What a Real Lead Looks Like

Your SaaS spends $25,000 a month on Google Ads. The account reports 140 conversions. Your CRM shows 11 sales-qualified opportunities from paid in the same month. Google’s bidding algorithm has only ever seen the 140.

That gap is not a reporting problem. It is an instruction problem. Smart Bidding and LinkedIn’s delivery system do exactly what you ask: find more people who look like the ones who converted. If a conversion means “filled in a form”, the platforms get very good at finding form-fillers, including students, job seekers, competitors and people who will never take a sales call.

Offline conversion tracking is how B2B SaaS teams change the instruction. This guide covers what it is, what changed in 2026, which CRM stage to send back, and how to set it up for Google Ads and LinkedIn without breaking the bidding you already have.
The account figures in this article are illustrative. Platform rules are taken from Google, LinkedIn and HubSpot documentation, linked where they appear.

What is offline conversion tracking for B2B SaaS?

Offline conversion tracking means sending events that happen after the website visit, inside your CRM, back to the ad platform that drove the click. In B2B SaaS those events are usually lifecycle or deal stages: a marketing-qualified lead, a sales-qualified lead, an opportunity created or a deal closed-won.

The platform matches each event to the original click using a click ID (such as Google’s GCLID), the person’s hashed email address or both. Once matched, the event can be used for two jobs: reporting which campaigns produced pipeline, and training the bidding algorithm on what a valuable lead looks like.

Why does optimising to form fills go wrong?

Because the cheapest form fill and the most valuable lead are rarely the same person. A bidding system optimising to raw leads will drift towards whichever audiences, keywords and placements produce form fills at the lowest cost. In B2B SaaS that often means broad-match queries from people researching a category for a school project, Display and Partner placements, and LinkedIn audiences that click easily but never buy.

The account looks efficient. Cost per lead falls. Sales says lead quality got worse. Both are telling the truth, which is exactly the pattern we described in why SaaS ads stop generating pipeline.

Is this the same as attribution?

No. Attribution answers “which campaigns created pipeline?” for your own reporting. Offline conversion tracking also feeds that answer back to the platforms so they can act on it. You need both. If you are still building the reporting side, start with our guide to cost per opportunity, then use this article to close the loop with the ad platforms.

What changed for offline conversions in 2026?

If your setup was built more than a year ago, some of it has moved. The main changes:

  • Google combined enhanced conversions for web and for leads into one setting. From April 2026 it accepts user-provided data from the website tag, Data Manager and API connections at the same time, so you no longer pick one method (Google Ads Help).
  • The Google Ads API’s UploadClickConversions request is being deprecated from 15 June 2026. Custom integrations that use it need to move to the Data Manager API (PPC News Feed). Native CRM connectors are the simpler route for most teams.
  • Upload windows differ by method. Standard offline conversions uploaded more than 90 days after the last click are not imported. Enhanced conversions for leads have a 63-day limit (Google Ads Help).
  • LinkedIn’s Conversions API now has dedicated marketing-qualified and sales-qualified lead conversion types. It accepts events up to 90 days old, and supports post-click windows of up to 365 days for lead-type conversions (LinkedIn Marketing API docs).
  • HubSpot syncs lifecycle-stage changes to both Google Ads and LinkedIn natively on Marketing Hub Starter and above. For Google, event values are now fixed per event; the option to use the deal amount is no longer available (HubSpot Knowledge Base).

The practical consequence: Google now prefers matching on the click ID and hashed first-party data together. If your forms only pass a GCLID, or only pass an email, you are leaving matches on the table.

Which CRM stage should you send back to the ad platforms?

This is the decision that matters most, and the one most teams get wrong in one of two directions: they send the form fill (too shallow) or only closed-won deals (too rare and too slow).

CRM stageTypical monthly volumeSignal qualityBest use
Form fill / demo requestHighLow. Includes spam, students, competitorsSecondary action. Keep for reporting, stop bidding on it once deeper stages have history
Marketing-qualified leadMedium to highMedium. Depends on how strict your MQL rules arePrimary action for low-volume accounts
Sales-qualified lead or meeting heldMediumGood. A human has confirmed fitPrimary action for most Seed to Series B accounts
Opportunity createdLowHigh. Real pipelinePrimary action when volume allows, otherwise a high-value secondary
Closed-wonVery low, and often outside the upload windowHighestReporting and value calibration, rarely a bidding target

The rule of thumb: bid on the deepest stage you can send back often enough, and fast enough, to learn from. Google does not publish a hard minimum, but practitioners commonly treat around 15 conversions a month for the action you bid towards as the floor for stable bidding (Farsiight). Below that, results swing week to week.

What if you only create eight opportunities a month from paid?

Then opportunity is not your bidding target yet. Bid on the sales-qualified lead stage, keep opportunity as a secondary action so you can report on it, and revisit once volume grows. Sending all stages back costs nothing, and gives you the history to switch later without starting from zero.

Should every stage have a value?

Yes, if you plan to use value-based bidding. It is worth doing even if you don’t, because it forces an honest conversation about what each stage is worth. Work backwards from contract value. For example, with an annual contract value of $24,000 and the following conversion rates:

  • Opportunity to closed-won: 25%, so an opportunity is worth about $6,000
  • Sales-qualified lead to opportunity: 50%, so an SQL is worth about $3,000
  • MQL to SQL: 30%, so an MQL is worth about $900

The absolute numbers matter less than the ratios. If an opportunity is worth roughly seven times an MQL in your CRM, the platform should be told the same thing. Recalculate quarterly from your own close rates, and use the same figures you use to model customer acquisition cost.

How do you set up offline conversion tracking in Google Ads?

The steps below assume a HubSpot or Salesforce CRM. The principles are the same for any CRM that can store a click ID against a contact.

1. Capture the click ID and the email on every paid form

Auto-tagging must be on. Every form a paid visitor can submit, including demo schedulers, chat and embedded booking tools, needs to store the GCLID (and GBRAID or WBRAID where present) on the contact record, alongside a work email. If this step is broken, nothing downstream can be trusted, so check it before anything in Google Ads.

2. Turn on enhanced conversions for leads

In Google Ads, go to Goals > Settings, expand enhanced conversions for leads, tick the box and choose your Google tag or Google Tag Manager setup. Accept the customer data terms if prompted (Google Ads Help). This lets Google match on hashed email when a click ID is missing.

3. Choose how stage data gets back to Google

In order of preference for most SaaS teams:

  • Native CRM connector. HubSpot’s ad conversion events and Salesforce’s Google Ads integration both sync stage changes without custom code.
  • Google Data Manager. Google’s recommended route for uploads when a native connector does not cover your stages.
  • Data Manager API or a warehouse connection. For custom stages, multiple CRMs or teams with data engineering support.

Middleware such as Zapier works, but adds delay and another place for the integration to fail silently.

4. Add each stage as a secondary conversion first

Create one conversion action per stage and set them to secondary, so they are reported but do not yet influence bidding. Let history build. Google’s own guidance for swapping an upgraded action is to wait the longer of three conversion cycles or four weeks.

5. Switch the bidding goal and reset the target

Once the stage you want to bid on has steady volume, make it primary and demote the form fill to secondary. Then reset your target, because a target CPA set for form fills is meaningless for SQLs. If you were targeting a $180 cost per lead and 25% of paid leads become SQLs, your starting target is about $720 per SQL. Expect a learning period of a few weeks, and judge the change on cost per SQL and cost per opportunity, not on lead volume.

If your campaign structure is not ready for this, fix that first. Our B2B SaaS Google Ads search blueprint covers the campaign side.

How do you set up offline conversions for LinkedIn Ads?

LinkedIn’s equivalent is the Conversions API. The logic is the same as Google: capture identifiers, sync CRM stages, then optimise towards them.

  • Connect your CRM. HubSpot syncs lifecycle-stage changes to LinkedIn natively (HubSpot Knowledge Base). Salesforce and other CRMs connect through LinkedIn’s partner integrations or the API.
  • Send every identifier you have. LinkedIn accepts hashed email, its first-party click ID, name with company, and Lead Gen Form lead IDs. Its documentation is explicit that only matched events can be used for attribution and optimisation.
  • Map stages to LinkedIn’s lead types. Use the marketing-qualified and sales-qualified lead conversion types where available, rather than a generic “lead”.
  • Attach the conversion to active campaigns. LinkedIn only attributes conversions to campaigns associated with the conversion rule.
  • Set an attribution window that fits your cycle. If your SQL stage usually happens 45 days after the first click, a 30-day window will hide most of it.

LinkedIn clicks are expensive and Lead Gen Form quality varies widely, so the cost of optimising to the wrong event is higher here than on Google.

Which mistakes break offline conversion tracking?

Is the click ID actually reaching the CRM?

Check what share of last quarter’s paid contacts have a GCLID or LinkedIn click ID stored. If it is well under the share of leads you know came from paid, something is stripping it: a redirect, a booking tool embed, a form that rebuilds the URL or a CRM field that gets overwritten. Our HubSpot audit checklist includes the property checks.

Are you counting the same lead twice?

If the form fill and the SQL are both primary conversions, the platform counts one person twice and bids as if every lead were more valuable than it is. Keep one primary action per funnel, and use a unique order or event ID on uploads so re-sent events are deduplicated.

Are existing customers being sent as new pipeline?

Expansion deals, renewals, partners and returning customers clicking a brand ad will all create stage changes. Filter them out of the events you send, or the platform will learn to chase people who already pay you.

Is sales updating the stages on time?

Offline conversion tracking is only as good as the CRM hygiene behind it. If SDRs update lifecycle stages in a Friday batch, or skip the SQL stage entirely, the platforms get late, partial signals. Agree the stage definitions with sales before you switch bidding.

Are events arriving after the window closes?

A closed-won deal that lands 120 days after the click will never reach Google or LinkedIn. That is why an earlier stage, inside the 63 or 90-day window, is usually the better bidding target for SaaS sales cycles.

Did you judge the switch too early?

Lead volume almost always drops when you move bidding from form fills to SQLs. That is the point. Give it at least a full learning period, then compare cost per SQL and cost per opportunity before and after, not cost per lead.

Frequently asked questions

Do I still need the Google tag if I import offline conversions?

Yes. The tag captures the click and the first-party data that offline events are matched against. Offline conversion tracking adds CRM stages on top of the website conversion; it does not replace the tag.

How long do offline conversions take to appear in Google Ads?

Google says imported conversions take about three hours to appear. They are reported against the click date, so use the “All conv. (by conv. time)” column to check that recent uploads are arriving.

Can offline conversion tracking work with a long B2B sales cycle?

Yes, but send an earlier stage. Google stops importing standard offline conversions 90 days after the last click, and 63 days for enhanced conversions for leads. LinkedIn accepts events up to 90 days old. If deals close later than that, bid on SQL or opportunity creation and use closed-won data for reporting and value calibration.

Do I need HubSpot or Salesforce to do this?

No. Any CRM that can store a click ID and email against a contact will work. HubSpot and Salesforce have native integrations, which make setup quicker. Other CRMs can use Google Data Manager, the Data Manager API, LinkedIn’s Conversions API or a partner tool.

Is sending CRM data to ad platforms privacy-compliant?

Identifiers such as email are hashed before they are sent, and both HubSpot integrations let you limit syncing to contacts who have given consent. Whether that is enough depends on your markets and your privacy policy, so confirm the setup with whoever owns compliance.

Where should you start this week?

Before touching any campaign, answer four questions from your CRM:

  1. What share of paid contacts in the last 90 days have a click ID stored?
  2. How many SQLs and opportunities did paid create per month, by platform?
  3. How many days, on average, from first click to SQL and to opportunity?
  4. Which stage clears roughly 15 a month and lands inside the upload window?

Those four answers tell you which stage to bid on and what to fix first.

The decision rule: let Google and LinkedIn bid on the deepest CRM stage you can send back reliably and often enough to learn from, never on the raw form fill alone.

If you want a second pair of eyes on the setup, our free SaaS Ads Autopsy Checklist walks through 14 checks, including tracking and CRM handoff, in about 45 minutes. And if you are spending $5,000 or more a month and still cannot see which campaigns create qualified pipeline, book a free Ads Autopsy with our team.