Google Ads offline conversion imports — the complete CRM loop playbook for SMB lead gen
Senior strategist's full playbook for Google Ads offline conversion imports: GCLID capture, enhanced match, CSV upload vs API, CRM stage mapping, conversion values, validation, and how to stop Smart Bidding optimizing junk form fills.
28 min read · Updated 2026-08-04
Key takeaways
- —Offline conversion imports (OCI) push qualified or closed-won CRM stages back to Google Ads so Smart Bidding optimizes pipeline — not only form submits.
- —Capture GCLID (and/or GBRAID/WBRAID where applicable) on every lead path; without a click identifier or enhanced match keys, imports cannot attribute.
- —Start with a sales-agreed stage (qualified lead or opportunity) as the primary offline action before closed-won if volume is thin.
- —Choose scheduled upload for MVPs; use the Google Ads API when volume, latency, or multi-CRM complexity demands it.
- —Validate end-to-end: test click → CRM → import → Ads conversion row within the allowed window — then freeze bid strategy while learning settles.
Direct answer — do you need offline conversion imports?
Yes, if sales close or qualify offline — phone, CRM stages days later, in-person estimates, or multi-touch B2B — and you run Smart Bidding or Performance Max on lead gen. Without an offline loop, Google only sees the form submit (or call click) and will optimize for cheap junk volume while pipeline stays flat.
Offline conversion imports (OCI) upload conversion events that happen after the click — typically when a lead becomes qualified, opportunity, booked job, or closed-won — with the original click ID (GCLID) or enhanced match identifiers. Smart Bidding then trains on outcomes that match how your business actually makes money.
If your business is pure ecommerce with accurate purchase tags and values, OCI is optional. The moment phone orders, sales-assisted closes, or delayed CRM qualification matter, OCI becomes table stakes for honest automation.
This guide is the full OCI operating system for US and UK SMBs. The conversion tracking setup guide (CP-040 expanded) covers the broader measurement rebuild sequence — including the OCI gate, WhatsApp pointer, and PMax prerequisites; this URL owns GCLID capture, stage mapping, upload vs API, values, and validation. Pair with primary vs secondary rules and why Smart Bidding wastes budget on bad data.
What “complete” means here: not a paragraph inside a tracking checklist, but the operating decisions that decide whether Smart Bidding gets better or quietly worse after you “turn on CRM sync.” If your agency says OCI is “done” because a sheet exists, pressure-test capture rate, stage hygiene, primary assignment, and Ads-vs-CRM variance before you trust Target CPA.
What offline conversion imports are (and are not)
OCI is a Google Ads feature that lets you import conversions that occur offline or in systems outside the immediate web tag fire — most often CRM stage changes — and attribute them to the ad click that started the journey.
It is not a substitute for fixing soft primary web conversions. If thank-you page views are still primary and you also import qualified leads without demoting junk, you can train on both noise and signal. Demote soft events; make the offline (or call) money stage primary for optimization.
It is not the same as Enhanced Conversions. Enhanced Conversions improve match rates for online conversion tags using hashed first-party data. OCI brings post-click CRM events into Ads. Many mature accounts use both: Enhanced Conversions on the form submit (often secondary) and OCI on qualified/won (primary).
It is not a magic fix for bad offers or weak sales capacity. Importing “qualified” when sales marks everything qualified recreates soft-primary problems inside the CRM. Stage hygiene is part of measurement.
It is also not a full multi-touch attribution product. Google attributes the imported conversion to the click (within rules and windows). Useful for Smart Bidding; incomplete as a board-level MMM substitute. Do not oversell OCI as “we finally know every channel’s true contribution.”
Entities to keep straight: GCLID (Google Click ID), GBRAID/WBRAID (app/privacy-era identifiers where relevant), conversion action (offline type), conversion time, conversion value, conversion currency, enhanced conversions for leads / enhanced match for uploads, Google Ads API vs scheduled uploads, consent and privacy policy disclosures.
When OCI wins for SMBs — and when to wait
OCI wins when: lead-to-close takes days or weeks; phone/CRM qualification matters more than form fills; you run Maximize Conversions / Target CPA / PMax and lead quality is drifting; finance cares about CAC on qualified pipeline, not CPL on thank-you pages.
Wait (or parallel-build carefully) when: CRM has no reliable stage definitions; sales will not agree what “qualified” means; you cannot capture GCLID or match keys on the majority of leads; volume of qualified stages is under ~15–30/month and you have not fixed web tracking basics yet.
US home services and UK trades: OCI often matters more than another RSA test. Automotive workshops and multi-location franchises: stage imports beat optimizing raw “contact us” events. SaaS SMB: trial→qualified or closed-won imports beat unpaid trial starts as Smart Bidding primaries — full vertical OS: Google Ads for SaaS / LTV bidding.
If Ads conversions wildly exceed CRM leads already, fix duplicates and soft primaries before OCI — otherwise you import on top of a broken baseline and cannot tell whether match rates are healthy.
Budget reality: a two-week OCI build that ends junk CPL theatre usually pays for itself faster than three months of Smart Bidding debates on dirty form primaries.
Political reality: if sales leadership will not freeze a written definition of Qualified for 90 days, pause the engineering build. You can still capture GCLIDs now so the field is ready when definitions exist.
Architecture — the closed loop we implement
Step A — Ad click lands with GCLID in the URL (auto-tagging on).
Step B — Landing page / form / call tracking system stores GCLID (and preferably gbraid/wbraid, UTMs, landing URL) on the lead record in CRM or sheet.
Step C — Sales moves the lead through stages you defined (e.g. New → Qualified → Proposal → Won).
Step D — When the lead hits the import stage, your system creates an offline conversion row: click ID + conversion name + conversion time + optional value + order ID.
Step E — Upload via Google Ads (scheduled CSV/sheet) or API; Google attributes to the click within the conversion window.
Step F — Offline action is primary (or the money primary alongside qualified calls); soft form submits are secondary; campaign goals point at the money actions.
Step G — Smart Bidding learns; you judge with qualified rate and MER, not form CPL alone (metrics that matter).
Optional Step H — Feed won revenue values for value-based bidding once volume supports it; keep break-even math honest with the Break-Even ROAS calculator.
Ownership: marketing owns GCLID capture and Ads conversion actions; sales/RevOps owns stage truth and timestamps; engineering owns upload reliability. Without that RACI, OCI becomes orphaned automation.
GCLID capture — non-negotiable plumbing
Turn on auto-tagging in Google Ads. Without it, GCLIDs do not append reliably to landing URLs from ads.
On web forms: hidden field (or first-party cookie/localStorage handoff) that captures gclid from the landing URL and persists across multi-page forms. If the user navigates away and returns, restore from first-party storage when your privacy policy and consent state allow.
Pass GCLID into CRM on create — HubSpot, Salesforce, Pipedrive, Zoho, custom databases, or Google Sheets MVPs. Field name conventions matter less than consistency and not overwriting a good GCLID with blank on later updates from marketing automation.
Multi-step and SPA sites: capture GCLID on first landing, store client-side, write into the CRM payload on final submit. Test React/Vue routers that strip query params on client navigation — this is a top silent failure.
Call-heavy paths: if the lead starts as a call without a form, you need call tracking that stores GCLID/session linkage, or accept that those leads may only match via enhanced match (email/phone) if collected later. Dynamic number insertion + CRM notes help; pure “missed call” with no identity often cannot import.
Chat and WhatsApp buttons: append and store click IDs the same way as forms when those paths create CRM leads. Otherwise Smart Bidding never sees the channel that actually sells.
Privacy: disclose in your privacy policy that advertising click identifiers and conversion data may be shared with ad platforms for measurement. UK/EU: align with consent mode and lawful basis — do not invent identifiers the user never provided.
Common break points: form builders that strip hidden fields; SPA routers that drop query params; thank-you pages that do not inherit GCLID; CRM integrations that only sync name/email; agency landing page tools that open new domains without forwarding query strings.
QA script we run: paid click → land → complete form → open CRM record → confirm gclid populated → no blank overwrite on enrichment workflows.
Minimum field set on the lead: gclid, landing URL, first-touch UTM source/medium/campaign, form path or asset, created-at timestamp. You will thank yourself when diagnosing unmatched imports three months later.
Enhanced match and identifiers beyond GCLID
When GCLID is missing (privacy browsers, delayed CRM entry, cross-device), enhanced conversions for leads / enhanced match on uploads can attribute using hashed email and phone. Implement per Google’s current hashing and consent requirements.
Priority order we use: GCLID when present → else enhanced match keys if consented and collected → else the conversion cannot attribute and should not be force-uploaded as noise.
Do not upload rows with invented emails or placeholder phones to “hit match rates.” That pollutes measurement and creates compliance risk.
Store raw email/phone in CRM; hash at upload time per spec. Never log plaintext incorrectly or double-hash. Test with a known email that matches a Google-signed-in user when possible in controlled tests.
GBRAID/WBRAID: where your stack collects them from URLs, store alongside GCLID. Platform support and relevance evolve — treat them as additional match hints, not a reason to skip GCLID discipline.
Enhanced Conversions on the web form tag and enhanced match on OCI uploads are complementary. Online tags improve form-submit matching; OCI brings later CRM stages. Do not confuse the two features when briefing developers.
Consent mode and regional consent: if the user declined ads measurement, do not invent a workaround by uploading PII as if match were allowed. Align product, legal, and media on what gets hashed and when — before go-live, not after an audit letter.
CRM stage mapping — what to import
Agree with sales in writing before engineering starts. A one-page stage dictionary beats a Slack debate three weeks later.
Typical SMB ladders: Lead gen services import at Qualified (sales-accepted) first. Optionally add Won later as a second offline action with value. Avoid importing every “New lead” — that duplicates the form submit and keeps Smart Bidding addicted to volume.
High-ticket / long cycle: import Opportunity Created or Proposal Sent if Qualified volume is too thin for Smart Bidding floors; document the definition so marketing cannot redefine “opportunity” weekly.
Ecommerce hybrid (phone orders): import Phone Order Won with revenue value; keep site Purchase as separate primary for web checkout.
SaaS: import Qualified Demo or Paid Conversion — not every free trial start unless valued honestly and sales agrees it predicts revenue.
Franchise / multi-location: standardize stage names across locations or map location-specific stages into one Ads conversion action carefully. Fragmented stage labels destroy match reporting and ops discipline.
One import stage per optimization objective is cleaner than five overlapping stages all primary. Extra stages can be secondary observation imports if you must report them in Ads.
Counting: use One for stage milestones that should not multi-fire when sales toggles stages back and forth. Conversion time = when the stage was reached (CRM timestamp), not upload time — within Google’s allowed lookback relative to the click.
If sales recycles leads (Qualified → Open → Qualified again), define whether the second qualification creates a new conversion. Default we recommend: one conversion per click ID per conversion action unless finance needs otherwise.
Stage hygiene checklist: who can move a lead to Qualified; required fields before that stage; disqualification reasons that must not import; how “nurture” and “unresponsive” are labelled so they never sneak into the money action.
Conversion values and currency
If you use Maximize Conversion Value or Target ROAS, offline imports need honest values. Qualified lead values by product line beat uniform $1 placeholders — see Target ROAS when volume is low.
Closed-won imports should carry revenue or contribution margin — pick one definition and stick to it with finance (VAT-inclusive vs exclusive must be consistent across markets).
Example: emergency callout qualified lead valued at £80 expected contribution; planned maintenance lead at £40. Smart Bidding then prefers auctions that historically produce higher-value qualifications — if your values are honest.
Value rules in Google Ads can adjust imported values; use sparingly and document. Inflating values to game ROAS destroys trust with finance and eventually with the algorithm when reality diverges.
Currency must match the conversion action settings. Multi-market accounts: separate actions per currency or careful currency fields per row — never mix silently.
When volume of valued offline events is still thin, stay on Maximize Conversions / Maximize Conversion Value rather than harsh Target ROAS while the OCI loop matures.
Proxy values for Qualified: start from historical close rate × average contribution, then refine by service line. Revisit quarterly; stale proxies quietly mis-train value bidding.
Upload vs Google Ads API — which path to choose
Scheduled uploads / Google Sheets / CSV: best MVP for SMBs under a few hundred imports per week. Operations exports qualified leads daily or uses a sheet connector. Latency of 24 hours is often acceptable for Target CPA stability.
Google Ads API (or official connectors / middleware): better when you need near-real-time imports, high volume, multi-account MCC automation, or strict deduplication logic in code. Requires developer ownership, credential rotation, and error monitoring.
Third-party sync tools (CRM-native Google Ads integrations, Zapier/Make with care): fine if they preserve GCLID, conversion time, and dedupe. Audit what they mark primary and whether they create duplicate conversion actions that conflict with your naming.
Decision rule: start with the simplest path that sales ops can run weekly without heroics. Graduate to API when breakage or latency costs more than engineering.
Deduplication: every import needs a stable order ID / conversion identifier so retries do not double-count. Store the Ads upload status and timestamp on the CRM record.
Failure handling: quarantine rows with missing click IDs; alert on >X% unmatched for the week; never silently drop errors in a Zap that “succeeded.”
MCC / agency setups: prefer customer-account conversion actions and clear naming so uploads never hit the wrong account. Shared templates help; shared careless uploads do not.
Sheet hygiene: lock the header row to Google’s expected columns; protect the conversion name cell; version the export query in CRM so a UI rename does not silently empty the feed.
Creating the offline conversion action in Google Ads
Create a conversion action of the offline / import category (UI labels evolve — choose the import/offline path). Name it clearly: Offline – Qualified Lead or Offline – Closed Won. Avoid vague names like “CRM” that nobody can map six months later.
Set as Primary when it is the money training label. Keep web form submit Secondary if you still want to observe top-of-funnel volume.
Set conversion windows long enough for your sales cycle (e.g. 30–90 days for services; shorter for same-week bookings). Too short = missed imports; absurdly long = noisy late credit — align with reality and finance reporting periods.
Include in Conversions / campaign goals: point Smart Bidding and PMax goals at the offline primary. Do not leave account defaults pulling micro-events — see primary vs secondary.
After creation, note the exact conversion name string and resource name for API — uploads must match exactly, including spaces and punctuation.
If you run both Qualified and Won actions, decide which is primary for bidding. Common pattern: Qualified primary for lead-gen Smart Bidding volume; Won secondary or separate value-primary once volume supports value bidding.
Naming convention tip: prefix with Offline – and include stage + market if multi-account (e.g. Offline – Qualified – UK). Future you will grep conversion lists under pressure.
Implementation sequence (two to four weeks)
Week 0 — Workshop: sales definitions, stages to import, value policy, privacy review, owner for ops uploads.
Week 1 — Plumbing: auto-tagging, GCLID fields on forms/CRM, consent copy updates, backfill plan for new leads only (do not invent historical GCLIDs).
Week 1–2 — Conversion action live; first test uploads with known test clicks (careful with policy — use test accounts where possible).
Week 2 — Production imports for new qualified stages; monitor unmatched rate daily for the first week.
Week 2–3 — Demote soft primaries; set campaign goals; screenshot baselines for CPA, qualified rate, MER.
Week 3–4 — Hold bid strategy per learning phase rules; compare Ads offline conversions to CRM counts; then revisit Maximize Conversions vs Target CPA (insight).
Do not launch OCI, PMax, and a harsh Target CPA on the same day. Sequence measurement before automation ambition — Smart Bidding playbook and PMax playbook.
Staffing note: assign a named owner for week-one unmatched triage. Orphaned sheet uploads die quietly.
Exit criteria for “week 4 done”: written stage dictionary signed, ≥1 week of production imports with trending unmatched, Soft form secondary, goals verified in every active campaign, dashboard live with offline qualified CPA.
Validation checklist — prove the loop works
1. Click a test ad (or use approved testing methods) and confirm GCLID lands in CRM on form submit.
2. Move test lead to import stage; confirm conversion time and ID fields populate.
3. Upload; within Google’s processing time, see the conversion on the offline action in Ads.
4. Confirm only one row (dedupe works on retry).
5. Compare 7–14 day offline conversion count to CRM stage count — variance above ~20% means filtering, window, or unmatched click IDs.
6. Confirm Smart Bidding campaign goals use the offline primary.
7. Spot-check five random CRM qualified leads for GCLID presence rate.
8. Run Tracking Trust Score and Google Ads Health Score after the rebuild.
Unmatched imports: missing GCLID, outside window, wrong conversion name, timezone errors (CRM UTC vs account time), or consent/enhanced match gaps. Log reject reasons from upload diagnostics every week for the first month.
Pass criteria we use before calling OCI “live”: GCLID present on ≥80% of new web leads (channel-dependent), unmatched import rate trending down, Ads vs CRM variance under ~20% for two consecutive weeks.
Document the test date, click ID (redacted in client decks if needed), CRM record ID, and Ads conversion ID. Audits love receipts.
Operations cadence after go-live
Daily/near-daily: import job health (API errors, sheet sync failures, auth expiry).
Weekly: unmatched rate, Ads vs CRM variance, sample 5 leads end-to-end, search terms still reviewed for junk (OCI does not replace negatives).
Monthly: stage definition drift (sales changing “qualified” silently), value policy vs finance, conversion window fit, whether Won should join or replace Qualified as primary.
Quarterly: re-evaluate connector vs API cost; purge unused conversion actions; retrain new sales hires on stage meanings.
Change control: any stage definition change is a measurement change — treat it like a primary flip, log it, and re-baseline before Target CPA debates.
Reporting: build a simple dashboard — media spend, form fills, offline qualified, offline won, MER. If form fills rise while offline qualified falls, you have a quality problem OCI just made visible — good.
Holiday and sales-capacity weeks: expect qualified volume to drop even if forms hold. Do not “fix” OCI by softening the stage — adjust budgets and targets instead.
Troubleshooting unmatched and delayed imports
Symptom: high unmatched rate. Check GCLID capture rate first, then conversion name spelling, then windows, then enhanced match hashing.
Symptom: imports appear days late. Usually conversion time set to upload time, or batch jobs running weekly only. Prefer stage timestamp and daily uploads for Smart Bidding stability.
Symptom: double counts. Missing order IDs / retries without dedupe; sales toggling stages; both form primary and New Lead OCI primary.
Symptom: CPA looks worse after OCI. Often honesty — you stopped counting junk. Re-derive allowable CPA on the qualified definition before panicking back to soft primaries (Max Conv vs tCPA).
Symptom: API 403 / auth failures. Rotate credentials; verify user access to the correct Ads account; monitor alerts — silent auth expiry is common after staff changes.
Symptom: healthy match rate but Smart Bidding still buys junk. Soft web primaries still in goals, or Qualified definition too soft. Fix goals and stage hygiene — not another upload connector.
Symptom: timezone skew. CRM stores UTC; Ads account is London or Eastern; conversion time drifts past the window for same-day closes. Normalize to account timezone on upload and document the rule.
Performance Max, calls, and multi-channel reality
PMax on soft form primaries without OCI is a common quality disaster. Import qualified stages before scaling PMax; use PMax readiness and the PMax playbook.
Calls: OCI does not replace call conversion tracking. Use both when phone is primary — call conversions for short-cycle phone closes; OCI for CRM qualification that happens after the call note is written up.
Meta and other channels: keep GCLID-specific fields; do not overwrite Google click IDs when a lead also has fbclid. Multi-touch reporting across platforms is a separate analytics project from Google’s click-scoped OCI.
Brand Search vs non-brand: OCI often shows brand converts to qualified at different rates than non-brand. That insight should change structure and budgets — not get averaged away in one Target CPA.
If you are mid-PMax and quality collapsed, pause scale, stand up OCI on Qualified, demote soft form primaries, then re-enter learning with clean goals — do not only “refresh asset groups.”
Demand Gen / YouTube lead forms: capture click IDs into CRM the same way, or expect OCI coverage to skew toward Search-only journeys and mislead channel decisions.
Common failure patterns we see in audits
GCLID never stored — imports uploaded with email only and near-zero match.
Importing New Lead duplicates form submit; Smart Bidding still loves junk.
Conversion time = upload time days later → fall outside window or distort attribution.
Three offline primaries for every CRM stage → algorithm prefers the easiest stage.
Sheet uploads with wrong conversion name string → silent failures.
OCI live but campaign goals still optimize GA4 page views.
Celebrating lower CPL on forms while offline qualified CPA was never built into reporting.
Zapier “success” with empty GCLID fields for months because nobody sampled CRM records.
Sales renames stages in CRM without telling marketing — imports stall or map to the wrong action.
Agency handoff with no named OCI owner — sheet stops updating the week after kickoff.
“We’ll backfill two years of CRM” without click IDs — wasted weeks and false confidence.
Using OCI only for reporting dashboards while leaving soft primaries as the bid goal — theatre without training change.
US and UK notes
US: CRM diversity (HubSpot, ServiceTitan-adjacent stacks, custom) — insist on GCLID field ownership in the SOW. Call-heavy trades need DNI + OCI together. Multi-state privacy disclosures still require clear ads measurement language.
UK: consent, GDPR, and Enhanced Conversions for leads require careful lawful basis and disclosures. Local Services Ads overlap — do not double-count LSA leads as Google Ads OCI without a clear design.
Both: finance and sales must sign the stage definition. OCI without agreement becomes a political object, not a measurement system.
APAC callouts when relevant: WhatsApp-first funnels need ID capture on chat lead creation or OCI will under-represent the real closer path.
Franchise US/UK: centralize conversion action naming and upload credentials at HQ; location-level freelancing of sheet uploads creates unreconciled duplicates.