Launch Offer2 free audits with all 229 checks. No credit card required.Start free audit

Offline Conversion Import: The 90-Day Window (2026)

Intermediate

What is offline conversion import?

Offline conversion import sends Google Ads conversions that happened outside the browser — sales call closes, in-store purchases, returned forms, retail conversions tracked offline — back to Google Ads using the original ad click's gclid. Google has a 90-day window for matching uploaded conversions to clicks; conversions older than that can't be attributed.

Required fields: gclid (or wbraid/gbraid for iOS), conversion timestamp, conversion value, currency. Four implementation methods: (1) Google Ads UI manual upload (CSV file, simplest), (2) Google Ads API (programmatic for ongoing automation), (3) Salesforce/HubSpot/Pipedrive integrations (CRM-native), and (4) Zapier/Make automations (lightweight).

For B2B and high-consideration purchases where the close happens days or weeks after the click, offline conversion import is what makes Smart Bidding actually work.

Why offline conversion import matters

The mechanic problem: Smart Bidding learns from conversions. For B2B with long sales cycles, conversions happen long after the original click — the lead converts in a CRM weeks later, not on the website. Without offline import, Google Ads only sees the early-funnel conversions (lead form fills) and optimises against those.

Optimising for lead form fills (when your goal is closed deals) produces predictable failure: the algorithm finds clicks that produce many leads but few qualified opportunities. Smart Bidding works against your actual business goal.

Offline conversion import closes this loop. When a deal closes 21 days after the original ad click, you upload that closed deal conversion via the API. Google Ads attributes it to the original click. Smart Bidding learns to optimise for the right outcome.

The 90-day window

Google Ads has a hard 90-day matching window. Conversions older than 90 days from the original click can't be attributed:

  • Day 0: User clicks ad with gclid ABC123
  • Day 21: Deal closes in CRM
  • Day 22: You upload the conversion via API → Google matches gclid to click → conversion attributed
  • Day 91: Same scenario but you upload Day 91 instead of Day 22 → Google rejects the upload as out-of-window

This means your CRM-to-Google-Ads pipeline must run within 90 days of the original click. For long-cycle B2B sales (90+ days), some conversions become inherently unmappable — you need parallel attribution mechanisms (Enhanced Conversions, modelled conversions) to fill the gap.

In practice: most B2B sales cycles are 30–60 days. The 90-day window is fine. Pipeline lag of 30+ days from close to upload should be reduced — automate the upload to run nightly or weekly maximum.

What you need to capture

For each closed conversion, your CRM (or wherever the conversion data lives) must store:

  • gclid — the Google Ads click ID from the original lead capture. Without this, the conversion can't be attributed to the click.
  • Conversion timestamp — when the conversion happened (deal close, payment received, etc.)
  • Conversion value — monetary value, in your currency
  • Currency — ISO 4217 code

Plus optionally for Enhanced Conversions integration:

  • Email (hashed)
  • Phone (hashed)
  • Name (hashed)
  • Address (hashed)

The gclid capture is the most failure-prone step. The pattern: when a lead form is filled out on your site, capture the gclid from the URL and write it to a hidden form field. The CRM stores it on the lead record. When the deal closes, the gclid is available for the conversion upload.

Common breakage points:

  • gclid not captured at form submit — leads have no gclid, conversions can't be attributed
  • gclid captured at submit but not stored on the deal record — when deal converts, gclid is lost
  • gclid stored on lead but not transferred to opportunity — Salesforce-style CRMs need explicit field mapping

Audit this end-to-end: take a sample of recent closed deals. Check if gclid is present on each. The closure rate from "gclid present at lead capture" → "gclid present on closed deal" should be 95%+. Lower than that, the CRM pipeline is leaking gclids somewhere.

The four implementation methods

Method 1 — Google Ads UI manual CSV upload

Simplest. Google Ads → Tools → Conversions → Uploads → New upload. Upload a CSV with columns: Google Click ID, Conversion Name, Conversion Time, Conversion Value, Conversion Currency.

Pros: no code, easy for small teams. Cons: manual process, easy to fall behind, doesn't scale.

Want to see whether attribution loss is already distorting your channel data?

Best for: companies just starting offline conversion tracking, small CRM volumes (under 100 closes/month).

Method 2 — Google Ads API

Programmatic upload. Your application or scheduled job calls the Google Ads ConversionUploadService API.

Pros: fully automated, scalable to any volume. Cons: requires development time to build, requires API authentication setup.

Best for: companies with engineering capacity wanting end-to-end automation.

Method 3 — Native CRM integrations

Salesforce, HubSpot, Pipedrive all have native or partner integrations to Google Ads:

  • Salesforce ↔ Google Ads — direct sync via Google's Salesforce package
  • HubSpot ↔ Google Ads — built-in connector in HubSpot Marketing Hub
  • Pipedrive ↔ Google Ads — via the Google Ads marketplace app

Pros: pre-built, often included in CRM subscription. Cons: limited customisation, sometimes have data freshness lag (24h+).

Best for: companies already using these CRMs who want low-effort integration.

Method 4 — Zapier / Make automation

For CRMs without native integration, lightweight automation tools can bridge to Google Ads:

  • Zapier: "When new closed-won deal in CRM → upload conversion to Google Ads"
  • Make (formerly Integromat): similar pattern with more flexible logic

Pros: no code, fast to set up. Cons: monthly subscription cost (£20-£200/month), reliability depends on automation tool, limited error handling.

Best for: small teams without engineering, custom CRMs, or as a stopgap before building Method 2.

How offline conversion import combines with Enhanced Conversions

Both can run on the same conversion. The combined data improves match quality:

  • Offline conversion with gclid → Google matches conversion to click via gclid
  • Enhanced Conversions data (hashed email, phone, etc.) → Google additionally matches via user-level data
  • Combined → Highest possible match rate, even when gclid was missing or stripped

For high-value conversions where attribution accuracy matters, send both. The implementation overhead is small once Enhanced Conversions hashing logic is in place.

Validating offline conversion import

Three checks:

Check 1 — Upload success rate. In Google Ads → Tools → Conversions → Uploads, the history shows each upload's success/failure. Failed rows are listed with reason codes. Common failures: gclid not found (conversion outside 90-day window), invalid format, duplicate conversion.

Check 2 — Conversion attribution. In Google Ads → Conversions → click on your offline conversion action → check the "All conv." metric. Should be increasing as uploads happen. If flat after upload, attribution isn't working — investigate failure logs.

Check 3 — Smart Bidding response. After 30+ days of consistent offline conversion uploads, Smart Bidding should adjust to favour campaigns and queries that produce closed conversions. If campaign performance reports show shifting CPC patterns, the algorithm is incorporating offline data.

If after 30 days you don't see any of these signals, the offline conversion data isn't reaching Google Ads or isn't being matched. Re-audit the gclid capture and upload pipeline.

FAQ: Offline Conversion Import: The 90-Day Window

What should a team validate first when offline conversion import: the 90-day window appears?

Reproduce the problem in the live implementation, isolate whether it is scoped to one report or flow, and compare it against at least one secondary source before changing the setup.

How do I know whether the fix actually worked?

You need before-and-after evidence in the browser and in the downstream report. A clean-looking dashboard without validation is not enough.

When should this become a full GA4 audit instead of a quick fix?

If the issue touches attribution, consent, revenue, campaign quality, or data trust for more than one workflow, it is usually safer to audit the surrounding implementation than patch only the visible symptom.

Check Offline Conversion Import: The 90-Day Window before campaign reporting gets blamed for the wrong issue

Run a free GA4 audit to spot attribution breaks, UTM governance issues, self-referrals, and source/medium loss fast.

These findings come from auditing thousands of GA4 properties. See how your property compares

GA4 Audits Team

GA4 Audits Team

Analytics Engineering

Specialising in GA4 architecture, consent mode implementation, and multi-layer audit frameworks.

Share