15 min read · Google Ads · Last updated July 2026
Quick answer: Offline conversion import (OCI) lets you send lead outcomes — quotes, sales calls, deals closed — back to Google Ads so Smart Bidding optimises for your actual revenue, not just form fills. Businesses that implement OCI correctly typically see 20–40% improvement in cost-per-acquisition within 60 days.
Introduction
Here is a problem most lead generation advertisers have but almost none have solved: Google’s algorithm is optimising to get you more form fills. Your business needs qualified appointments, signed contracts, or paid customers.
Those are completely different things. And if you have not told Google the difference, you are essentially paying to get better at acquiring leads that do not convert.
The fix is offline conversion import. It is the mechanism that closes the loop between your CRM — where actual business outcomes are recorded — and Google Ads, where bidding decisions are made. When a lead submits your form, gets followed up, qualifies, and eventually signs a contract three weeks later, OCI lets you pass that closed deal back to the campaign that generated it. Google’s Smart Bidding then learns which audiences, keywords, times, and devices produce not just leads, but paying customers.
This guide covers the full implementation:
- GCLID capture and why it is the foundation
- Setting up offline conversion actions in Google Ads
- CRM integration methods for HubSpot, Salesforce, and manual CSV upload
- Enhanced conversions as a complement to GCLID
- Conversion values and bid strategy optimisation
- Troubleshooting the most common OCI failures
Table of Contents
- Why Standard Conversion Tracking Misleads Your Bids
- How Offline Conversion Import Works
- GCLID: What It Is and How to Capture It
- Setting Up Offline Conversion Actions
- CRM Integration Methods
- Using Enhanced Conversions for Leads
- Assigning Conversion Values by Lead Stage
- Connecting OCI to Smart Bidding
- Troubleshooting OCI Failures
- Interactive Tools
- FAQ
1. Why Standard Conversion Tracking Misleads Your Bids
Standard Google Ads conversion tracking fires a pixel when someone completes a form on your website. This is useful for understanding ad engagement, but it creates a fundamental optimisation problem for lead generation businesses.
Consider a B2B SaaS company running Search ads. They track “demo request” as a conversion. Their Smart Bidding algorithm dutifully optimises to get more demo requests. Over time it learns that broad match keywords, display-like interests, and lower-income demographic signals produce lots of demo form fills — because those audiences click and fill forms frequently.
But when the sales team follows up, they discover that 70% of demo requests from those segments never show up, or are students, or are from companies far too small to buy. The leads that actually close come from a narrower, more expensive audience profile.
Smart Bidding is optimising for the wrong signal. It has no idea what happens after the form submit. It cannot distinguish between a $120,000 closed deal and a fake email address. If you feed it only form fills, it will get you more form fills — many of them worthless.
Offline conversion import solves this by sending back the outcomes that actually matter to your business, tied to the specific click that initiated the journey.
2. How Offline Conversion Import Works
The flow has four steps:
Step 1 — Click Attribution
A user clicks your Google Ad. Google appends a unique identifier — the GCLID (Google Click Identifier) — to the landing page URL. Example: yoursite.com/contact?gclid=CjwKCAjw...
Step 2 — GCLID Capture
Your website captures the GCLID from the URL and stores it — either in a hidden form field submitted with the lead, or in your CRM as a custom property attached to the contact record.
Step 3 — Outcome Recording
Your sales team works the lead. When an outcome occurs — a sales call is booked, a quote is sent, a deal closes — your CRM updates the lead stage. This stage change is the conversion event you will send back to Google.
Step 4 — Import
Either manually (CSV upload), automatically via CRM integration, or via the Google Ads API, you send a file containing the GCLID, the conversion action name, and the conversion timestamp. Google matches this to the original click and attributes the conversion to the right campaign, keyword, ad group, and audience.
The result: Smart Bidding now knows which clicks led to real customers, not just leads.
3. GCLID: What It Is and How to Capture It
The GCLID is a base64-encoded string that Google generates for every ad click. It looks like: CjwKCAjw5MOlBhBTEiwAAJ8e1hAb3xZ4...
GCLIDs expire. They are valid for 90 days for import purposes. You must import conversions within 90 days of the click, so deal cycles longer than 90 days require special handling (more on this in the Conversion Values section).
Auto-tagging must be enabled. In Google Ads → Settings → Account Settings → Auto-tagging: confirm this is set to “Yes, tag the URLs that people click through.” Without auto-tagging, no GCLIDs are appended, and OCI cannot function.
Capturing the GCLID in a hidden form field:
Add this JavaScript to your landing page. It reads the GCLID from the URL and populates a hidden input field in your form:
// Add to your landing page — fires on page load
function getUrlParam(name) {
const params = new URLSearchParams(window.location.search);
return params.get(name) || '';
}
document.addEventListener('DOMContentLoaded', function () {
const gclid = getUrlParam('gclid');
const gclidField = document.getElementById('gclid_field');
if (gclid && gclidField) {
gclidField.value = gclid;
// Optional: store in localStorage for multi-page journeys
localStorage.setItem('gclid', gclid);
}
// Fallback: retrieve from localStorage if not in URL
if (!gclid && gclidField) {
gclidField.value = localStorage.getItem('gclid') || '';
}
});
In your HTML form, add:
<input type="hidden" id="gclid_field" name="gclid" value="">
Your CRM should then store this value against every lead. In HubSpot, create a custom Contact property called “GCLID” (text field). In Salesforce, add a custom field to the Lead object. Map your form submission to populate this field automatically.
Multi-page journeys: If your form is not on the landing page (e.g., a multi-step funnel), use the localStorage fallback shown above, plus pass the GCLID as a URL parameter through each page transition.
GCLID persistence across subdomains: If your ad lands on www.example.com but the form is on app.example.com, you need to implement cross-subdomain GCLID passing via URL parameter or first-party cookie.
4. Setting Up Offline Conversion Actions
In Google Ads, navigate to Goals → Conversions → Summary → + New Conversion Action → Import → CRM or other data sources.
Name your conversions by lead stage, not just “lead.” Best practice is a hierarchy:
Lead - Form Submit(tracked online as usual)Lead - Qualified(imported when sales marks lead as MQL)Lead - Opportunity(imported when a deal is created in CRM)Lead - Closed Won(imported when a deal closes)
This tiered structure lets you understand where value is lost in your pipeline and lets you choose which stage to optimise Smart Bidding toward.
Settings to configure for each offline conversion action:
- Category: Choose “Purchase” for closed deals, “Submit lead form” for qualified leads
- Value: Either fixed (same value every time) or variable (you supply the value in the import)
- Count: For sales, use “One” — one deal per click, not multiple
- Click-through conversion window: Set to 90 days (maximum)
- Attribution model: Use data-driven if available; otherwise linear
Important: Do not optimise your campaigns to fire toward “Qualified” or “Opportunity” stages until you have at least 30 conversions per month at that stage. Below that threshold, Smart Bidding lacks the data density to learn reliably.
5. CRM Integration Methods
There are three ways to get conversion data from your CRM into Google Ads:
Method 1: Manual CSV Upload
Export a spreadsheet from your CRM with columns: Google Click ID, Conversion Name, Conversion Time, Conversion Value, Conversion Currency. Upload in Google Ads under Goals → Conversions → Uploads. Best for small teams or testing.
CSV format example:
Parameters:TimeZone=-0500
Google Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
CjwKCAjw...,"Lead - Closed Won","2026-06-15 14:30:00+10:00",12500,AUD
Method 2: Native CRM Integration
Both HubSpot and Salesforce have native Google Ads integrations. In HubSpot, go to Reports → Ads → Connect Account → then enable “Track offline conversions.” Map deal stages to Google Ads conversion actions. HubSpot sends import data automatically when deal stages change.
In Salesforce, use the Google Ads Salesforce connector via the Google Ads interface (Tools → Linked Accounts → Third-party app analytics).
Method 3: Google Ads API / Zapier / Make
For custom CRM setups, use the ConversionUploadService in the Google Ads API, or use Zapier/Make.com to trigger uploads on CRM stage changes. A Zapier workflow triggering when a HubSpot deal is marked “Closed Won” and posting the GCLID + deal value to Google Ads is achievable with no engineering work in about 30 minutes.
6. Using Enhanced Conversions for Leads
Enhanced conversions for leads (EC for Leads) is a complementary system that does not replace GCLID-based OCI but fills gaps when GCLIDs are missing — which happens for approximately 15–25% of leads due to privacy settings, ad blockers, or cross-device journeys.
EC for Leads works differently: instead of matching on GCLID, it matches on hashed first-party customer data — email address, phone number, or name — that the user submitted on your form. Google hashes this data client-side using SHA-256 before sending, so personally identifiable information never leaves the browser in plain text.
Setup:
1. In Google Ads, go to Goals → Conversions → Enhanced Conversions for Leads
2. Enable the feature and set it to “Code” (not HubSpot/Salesforce native, which replaces rather than supplements)
3. Add the enhanced conversion measurement tag snippet to your form thank-you page or form submit event
4. Pass the form field data (email, name, phone) to the tag
The EC for Leads tag typically looks like:
// Fire this on form submission with actual user data
gtag('set', 'user_data', {
'email': 'customer@example.com', // from form field
'phone_number': '+61400000000', // from form field
'address': {
'first_name': 'Jane',
'last_name': 'Smith'
}
});
The two systems — GCLID OCI and EC for Leads — work together. GCLID handles the majority of attributable conversions with precision. EC for Leads fills in the 15–25% gap. Together they provide the most complete attribution picture possible within Google’s framework.
7. Assigning Conversion Values by Lead Stage
Variable conversion values allow Smart Bidding to optimise for revenue, not just conversion count. The goal is to assign each conversion a value proportional to its expected revenue contribution.
Method 1: Fixed Value by Stage
Calculate the historical average deal value × close rate at each stage:
- Qualified Lead: Average deal value ($8,000) × stage-to-close rate (15%) = $1,200
- Opportunity/Proposal: $8,000 × 40% = $3,200
- Closed Won: $8,000 × 100% = $8,000
Pass these values in your CSV or integration.
Method 2: Actual Deal Value
When a deal closes, pass the actual deal value from the CRM. This is the most accurate approach and requires either API integration or a custom CSV export that includes deal values.
Handling long deal cycles: For B2B businesses with 6–12 month sales cycles, deals may close after the GCLID’s 90-day window. In this case, import the “Opportunity Created” stage (which will be within 90 days) with the expected deal value. This gives Smart Bidding a usable signal even though the deal is not yet closed.
8. Connecting OCI to Smart Bidding
Once offline conversions are flowing, you can shift your campaign bidding to optimise for the higher-quality signals.
Recommended progression:
Phase 1 (weeks 1–4): Run OCI in parallel with your existing online conversion tracking. Do not change bid strategy yet. Watch the “All Conversions” column to confirm OCI data is flowing.
Phase 2 (weeks 5–8): Once you have 30+ offline conversions in the account, switch your bidding target. Remove form fills from the “Bid on” conversions column and add your qualified lead or opportunity stage instead.
Phase 3 (month 3+): If using variable conversion values, switch to Target ROAS (tROAS) instead of Target CPA. This allows Smart Bidding to differentiate between a $3,000 deal and a $45,000 deal and allocate budget accordingly.
Warning: Do not make this switch if your offline conversion volume is below 30/month. Insufficient data causes Smart Bidding to thrash — bids become erratic, spend compresses or spikes, and performance degrades. If you are below threshold, keep form fills as the primary bid signal and treat OCI as a diagnostic layer.
9. Troubleshooting OCI Failures
“No conversions imported” error:
– Most common cause: GCLID was not captured at form submit (check the hidden field is present and populating)
– Second most common: Auto-tagging is disabled in Google Ads
– Check that the GCLID has not expired (more than 90 days between click and import)
“Conversion not attributed to any campaign”:
– GCLID format corruption — GCLIDs must not be modified or truncated when stored in the CRM
– The click was from a non-Google source — GCLIDs only exist for Google Ads clicks
“Conversion time invalid”:
– Format must match: YYYY-MM-DD HH:MM:SS+TZ — include the timezone offset
– Common error: submitting date-only without time component
Low match rate (under 60%):
– GCLID field not mapping through multi-step form flow
– CRM is stripping special characters from the GCLID string
– Clicks from Performance Max or Display campaigns may have shorter GCLID retention
OCI showing in “All Conversions” but not “Conversions”:
– The conversion action has not been added to the “Bid on” column — this is intentional during Phase 1 but must be updated when you are ready to optimise
10. Interactive Tools
OCI Implementation Planner
Conversion Value Estimator
11. FAQ
Q: My form is on WordPress — can I capture GCLIDs without a developer?
Yes. If you use Gravity Forms, WPForms, or Ninja Forms, install the “Gravity Forms Google Ads GCLID” plugin or equivalent. These plugins handle hidden field capture automatically. For other form builders, use the JavaScript snippet above with a copy-paste into your theme’s functions.php or a Custom HTML block.
Q: What if my GCLID capture rate is only 60%?
A 60% capture rate is actually common for multi-device journeys (someone clicks on mobile and converts on desktop). Supplement with Enhanced Conversions for Leads to fill the gap. Combined, you should reach 85–95% attribution coverage.
Q: Does OCI work with Performance Max campaigns?
Yes. OCI attribution applies at the campaign level regardless of campaign type. PMax campaigns benefit from OCI the same way Search campaigns do — better signals mean smarter asset group optimisation.
Q: Can I import negative conversion signals (e.g., a lead that turned out to be completely unqualified)?
No — Google Ads does not support negative conversion imports. Instead, simply do not import non-qualifying leads. Smart Bidding learns from what you send, not from what you withhold.
Q: How do I know if my OCI is working?
In Google Ads, go to Goals → Conversions → Uploads. You should see “Successful” import records with a non-zero match rate. Also check the “All Conversions” column in your campaign view — if offline conversions appear here within 24–48 hours of upload, the system is working.
Q: We use a call tracking platform like CallRail. Does that change the OCI setup?
CallRail and similar platforms support GCLID capture for calls — the caller’s click GCLID is captured when they load the page and stored against the call record. CallRail has native Google Ads integration that can pass call outcomes as offline conversions automatically.
Conclusion
Offline conversion import is not a nice-to-have configuration item — it is the difference between an algorithm optimising for business outcomes and an algorithm optimising for vanity metrics. The setup takes 2–4 weeks of focused implementation work, but the payoff compounds: better data means better bidding, which means lower cost-per-qualified-lead, which means more revenue from the same budget.
The businesses getting the most from Google Ads in competitive B2B and high-value B2C markets are almost universally those that have closed the feedback loop between their CRM and their campaigns. If your competitors have not done this yet, you have a meaningful window to outperform them.
The Ignited Nepal team implements offline conversion tracking end-to-end — from GCLID capture through CRM integration to Smart Bidding migration — for clients across Australia, the UAE, USA, and beyond.
Talk to Ignited Nepal about OCI implementation
Written by the Ignited Nepal team. ignitednepal.com