Short answer: Offline conversion tracking is sending outcomes that happen outside your website, such as a qualified phone call, a site visit or a closed sale recorded in your CRM, back to Google Ads and matching them to the ad click that started the lead. You capture the click ID (GCLID) and the lead's email and phone at enquiry time, record the outcome and its time in the CRM, and import it daily, now preferably through Google Ads Data Manager as enhanced conversions for leads. It lets Google Ads report and bid on revenue instead of form fills.
Need this done for you? GrowthSparx offers a fixed-scope lead tracking and attribution setup: GA4, Google Ads, Meta, WhatsApp, calls and CRM wired into one dashboard, usually live in 2–3 weeks.
Benchmark reference: the public 2025–2026 numbers behind this guide (Meta and Google CPC/CPM in India, CPL ranges by industry, landing-page conversion, real estate funnel rates, WhatsApp API pricing) are collected and graded in our India lead generation benchmarks 2026 report.
What is offline conversion tracking?
Google defines importing offline conversions as a way to "measure what happens in the offline world after your ad results in a click or call to your business" (Google Ads Help). The classic version works like this: you save each Google Click ID (GCLID) with the lead's information, and when the lead converts offline you send the GCLID back with the conversion name and time. Call conversions can be imported the same way.
"Offline" means "not observed by the ad tag", not only "in a physical place". A demo booked over the phone, a loan disbursed after document checks, an admission confirmed after counselling, a flat booking paid by cheque: all are offline conversions.
The method has changed. Google now says: "If you have not already adopted offline conversion import, we recommend starting with enhanced conversions for leads instead", an upgraded version that adds hashed email and phone to the match. Our enhanced conversions for leads setup guide has the tag and Data Manager steps; this page explains the system around it and how to choose an upload method.
Do you need offline conversion tracking?
| Your situation | Need it? | Why |
|---|---|---|
| Ecommerce, purchase completes on site | Usually no | The purchase tag already records the revenue |
| Lead gen with sales calls (real estate, education, healthcare, B2B, loans) | Yes | The form is not the sale; quality varies widely by keyword |
| High share of junk or duplicate leads | Yes, urgently | Bidding on form fills teaches Google to find more junk |
| Fewer than ~15 qualified outcomes a month | Yes for reporting; bid on a higher-volume stage | Too few events for Smart Bidding to learn from the deepest stage |
| Leads mostly from calls | Yes, via call tracking plus import | See call tracking for Indian businesses |
The "~15 a month" line is our working threshold, not a Google rule. Below it we import a shallower stage, such as "contacted and interested", as the bidding conversion and keep the deeper stage for reporting.
How does CRM offline conversion tracking work, step by step?
- Click. Auto-tagging adds
gclid(orgbraid/wbraidon some iOS traffic) to the landing URL. - Capture. A script stores the ID in a first-party cookie; the form writes it, plus email and phone, into hidden fields.
- Create. The CRM creates a lead holding the click ID, contact details, UTMs and a creation time with time zone.
- Qualify. Sales moves the lead through agreed stages. A workflow stamps
qualified_atandwon_atthe first time each stage is reached and never overwrites them. - Export. A daily job writes one row per new stage event: click ID, hashed email/phone, conversion action name, conversion time, value, currency.
- Import. Data Manager (or another method below) sends the rows to Google Ads, which matches them to clicks and reports them against the click's campaign, keyword and date.
- Optimise. After the imported action has a few weeks of data, it becomes the primary conversion for bidding, using Google's Qualified lead and Converted lead goals.
Steps 2–4 (field schema, qualification definitions, hidden-field mapping) are covered in detail in how to track qualified leads from Google Ads to CRM. The rest of this page is about steps 5–7.
One consequence of step 6 surprises clients: imported conversions are reported against the date of the ad click, not the date of the sale. A September click that closes in October raises September's conversions. Use the "All conv. (by conv. time)" column when you want outcomes by sale date.
Which upload method should you use?
| Method | How it works | Good for | Watch out for |
|---|---|---|---|
| 1. Manual file upload | Download CRM report, format to template, upload in Google Ads | Testing with a small cohort; very low volume | Gets forgotten; irregular uploads; Google labels the file method legacy |
| 2. Scheduled Google Sheet / HTTPS / SFTP | CRM or script writes rows to a sheet or file; Google reads it on a schedule | CRMs without a native connector (Zoho, LeadSquared, custom PHP) | For enhanced conversions for leads, scheduled uploads need pre-hashed user data |
| 3. Data Manager connector | Tools → Data manager connects a source directly | HubSpot, Salesforce, BigQuery and data warehouses; Google's recommended route | Each source has its own lookback per run (table below) |
| 4. Zapier or similar | CRM stage change triggers a Zap that sends the conversion | Quick setups without developers | Per-task fees; failed Zaps can go unnoticed |
| 5. API | Your server sends conversions programmatically | High volume, custom CRMs | From 15 June 2026 these uploads go through the Data Manager API, not the Google Ads API |
Scheduling options (Sheets, HTTPS, SFTP) and the pre-hashing requirement come from Google's file import article; Zapier and direct connections are listed in the Data Manager help page. Data Manager's lookback, per Google's enhanced conversions for leads article: Sheets, GCS, S3, HTTP and SFTP read the last 90 days every run; Salesforce and HubSpot read 14 days on the first run, then changes since the last successful run; BigQuery, Redshift, Snowflake, MySQL and PostgreSQL read the last 14 days every run.
What we usually recommend for Indian SMB lead-gen accounts: a Google Sheet fed by the CRM's workflow or a nightly export, read by Data Manager. It is cheap, visible to the marketing team and easy to audit. Move to a direct connector or warehouse once volume or data rules demand it.
The legacy GCLID file format, still useful for understanding what Google expects:
Parameters:TimeZone=Asia/KolkataGoogle Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion CurrencyCj0KCQjw…,Site Visit Done,2026-10-08 11:30:00,5000,INR
Google warns not to remove the Google Click ID column and that missing or malformed time zones are a frequent cause of errors.
What timing and matching rules must the upload follow?
From Google's offline conversion imports FAQ:
| Rule | Detail | What it means in practice |
|---|---|---|
| GCLID retention | Google retains GCLIDs for 90 days | A sale 4 months after the click cannot be imported; import an earlier stage that happens inside the window |
| Personal data window | Conversions with personal information: within 63 days | Upload stage rows daily, not quarterly |
| Frequency | At least daily; otherwise a consistent schedule | Irregular batches make bidding see sudden spikes |
| Delay after click | Wait about 6 hours after the click for scheduled uploads | Same-day leads may be rejected as "click still processing"; re-upload |
| Order of events | The offline conversion cannot happen before the ad click | "Conversion precedes click" is almost always a time-zone error |
| Duplicates | Same GCLID + conversion name + conversion time counts once | Use different conversion names for different stages |
Long sales cycles. Real estate and B2B deals often close after 90 days. We import three stages: qualified (days), site visit or demo (weeks), and won (if within the window). Bidding runs on the middle stage; the won stage confirms the pattern.
How do you correct an offline conversion after it is uploaded?
Bookings get cancelled and deal values change. Google's conversion adjustments handle both:
- RESTATE changes the value (for example, a ₹1,50,000 deal renegotiated to ₹1,20,000).
- RETRACT removes the conversion entirely (for example, a booking cancelled and refunded). A retracted conversion ignores later adjustments.
Required columns are the Order ID used on the original conversion (or GCLID plus conversion time), Conversion Name, Adjustment Type, Adjustment Time and Adjusted Value (not needed for retractions). Google gives a 54-day window, recommends uploading at least 24 hours after the original conversion, and notes that restatements and retractions within 7 days are most readable by automated bidding.
Parameters:TimeZone=Asia/KolkataGoogle Click ID,Conversion Name,Conversion Time,Adjustment Type,Adjustment Time,Adjusted Value,Adjusted Value CurrencyCj0KCQjw…,Booking Won,2026-10-02 15:00:00,RETRACT,2026-10-09 10:00:00,,INR
Build adjustments into the CRM workflow: when a won deal moves to "Cancelled", write a RETRACT row the same day.
How should you value offline conversions?
Use real deal values for the won stage and a calculated value for earlier stages.
Worked example (illustrative; assumptions stated): a Gurugram B2B IT-services firm sells contracts averaging ₹4,00,000 with 25% gross margin. Of its qualified leads, 30% book a demo and 20% of demos close.
- Value of a won deal (margin basis) = ₹4,00,000 × 0.25 = ₹1,00,000
- Value of a demo = ₹1,00,000 × 0.20 = ₹20,000
- Value of a qualified lead = ₹20,000 × 0.30 = ₹6,000
Upload those values with each stage. Using margin rather than revenue lets you set a target ROAS of 1.0 as break-even. Recalculate the stage rates every quarter from the CRM. Our lead funnel calculator does this arithmetic.
Run the same CRM stages to Meta if you advertise there; the process is in tracking Meta ads leads to CRM and sales.
How do you measure a SaaS PPC campaign with GA4, GTM, a CRM and offline conversions?
For SaaS PPC campaign measurement, each tool has one job: Google Tag Manager captures the click and form data, GA4 explains on-site behaviour, the CRM is the record of truth for pipeline and revenue, and Google Ads receives CRM stages as offline conversions so bidding follows qualified pipeline rather than sign-ups. Problems start when two tools count the same event or when the CRM never receives the click ID.
| Layer | Job in the stack | What to set up |
|---|---|---|
| Google Tag Manager | Capture identifiers at the first visit | Read GCLID (and gbraid or wbraid) plus UTM values from the landing URL, store them in a first-party cookie, and write them into hidden fields on the trial and demo forms. Fire tags on confirmed form success, not on button clicks; see our GA4 form tracking guide. |
| GA4 | Behaviour and landing-page analysis | Key events for trial_signup and demo_request, linked to Google Ads for reporting. Do not also make them primary Google Ads conversions if the Ads tag or an offline import already counts the same lead (how to fix duplicate conversions). |
| CRM (HubSpot, Salesforce, Zoho and so on) | Pipeline and revenue truth | Store GCLID, email and phone on the lead; time-stamp each lifecycle stage: trial started, product-qualified, demo held or SQL, closed won with annual contract value. |
| Google Ads | Bidding and reporting | One offline conversion action per CRM stage, imported daily. Set the stage you can reliably record inside the 90-day click window, usually SQL, as primary; keep trial sign-up and closed won as secondary. |
Worked scenario (illustrative; every number is an assumption): a Bengaluru HR-software company spends ₹3,00,000 a month on Google Search. GA4 records 400 trial sign-ups, the CRM marks 60 as product-qualified, 24 reach a held demo (SQL) and 6 close at an average annual contract value of ₹2,40,000.
- Cost per trial = ₹3,00,000 ÷ 400 = ₹750; cost per SQL = ₹3,00,000 ÷ 24 = ₹12,500; cost per won deal = ₹3,00,000 ÷ 6 = ₹50,000.
- First-year contract value = 6 × ₹2,40,000 = ₹14,40,000, so ROAS on first-year value is 4.8×.
- SQL value for bidding = ₹2,40,000 × (6 ÷ 24) = ₹60,000; product-qualified value = ₹60,000 × (24 ÷ 60) = ₹24,000.
The useful readout is by campaign. If a "free HR software" campaign produces half the trials but only two of the 24 SQLs, it looks cheap in GA4 and expensive in the CRM, and bidding on SQL value will move budget away from it automatically. Check three numbers weekly: the share of CRM leads with a stored GCLID (aim for nearly all paid-search leads), the share of uploaded rows Google Ads reports as matched and imported in its offline conversion diagnostics, and the gap between GA4 trial counts and CRM trial records. Our B2B Google Ads guide covers the keyword side for SaaS.
Why aren't offline conversions showing in Google Ads?
| Symptom | Likely cause | Check |
|---|---|---|
| Upload succeeds, zero conversions | Conversion name does not exactly match the action | Copy the name from Goals → Conversions; case and spaces matter |
| Most rows rejected because the click cannot be found | IDs truncated, altered by the CRM, or from another account | Compare a stored GCLID character-by-character with the landing URL |
| "Conversion precedes click" | Times in IST uploaded with no time zone, or with UTC | Add Parameters:TimeZone=Asia/Kolkata or an offset on each time |
| Many Google Ads leads in the CRM have no GCLID | Redirects stripping parameters; hidden field not mapped; forms on another domain | Test each landing page; see cross-domain tracking |
| Conversions double after a CRM change | Stage re-saved creates a new timestamp | Stamp stage time once; keep an "uploaded" flag |
| Numbers fine, bidding unchanged | Imported action still secondary | Make it primary after the data has built up |
Sources
- Google Ads Help: About offline conversion imports: definition, how it works, enhanced conversions for leads recommendation, Data Manager, 15 June 2026 change.
- Google Ads Help: Offline conversion imports FAQ: 90-day and 63-day windows, daily uploads, 6-hour wait, de-duplication.
- Google Ads Help: Import conversions using files: template columns, time-zone row, scheduled sources, errors.
- Google Ads Help: Conversion adjustments: RESTATE, RETRACT, columns and windows.
- Google Ads Help: Qualified leads and converted leads: goal definitions.
- Google Ads Help: Enhanced conversions for leads with Tag Manager: Data Manager lookback per source.
- Google Ads Help: Data Manager: connection options and menu paths.