Use enhanced conversions for leads through Data Manager or a Google tag to handle offline conversion import. It produces more accurate, privacy-resilient matches than legacy GCLID-only uploads. This method combines hashed customer data with click identifiers for stronger matching, and it matters now because Google is migrating legacy offline imports and existing enhanced conversions uploads to Data Manager starting June 15, 2026.
TL;DR:
- Using enhanced conversions with first-party data significantly increases match rates, with median gains around 10% compared to GCLID-only imports.
- Setting up offline conversion import requires accepting customer data terms, enabling auto-tagging, creating proper conversion actions, and ensuring correct data formatting with consistent identifiers.
- Data needs to be uploaded with the correct window: GCLID-based imports are valid up to 90 days after the click, while enhanced conversions shorten this to 63 days.
- Google is migrating legacy offline imports to Data Manager starting June 15, 2026, making it essential to adopt this system early to avoid future rework.
- Proper coordination of tagging, data normalization, and hashing, along with manual testing before automation, is vital to ensure accurate measurement and avoid silent data loss.
Table of Contents
- What Is Offline Conversion Import and How Does It Work?
- How Do You Create an Offline Conversion Action in Google Ads?
- How Do You Format the Conversion File for Import?
- Which Import Method Should You Use: Manual, Scheduled, Data Manager, or API?
- Why Did My Offline Conversion Upload Fail?
- Where Do Imported Conversions Show Up, and How Fast?
- What Agencies Learn the Hard Way About Offline Conversion Handoffs
- Let WWS Build Your Offline Conversion Import the Right Way
- Sources
- FAQ
What Is Offline Conversion Import and How Does It Work?
Offline conversion import is the process of sending conversion events that happen outside your website (a signed contract, a closed sale, a booked appointment) back into Google Ads so the platform can attribute them to the ad click or user data that generated the lead. Without it, Google Ads only sees a form submission or a phone call as the “conversion.” It never learns whether that lead actually turned into revenue.
There are two ways to do this, and the distinction matters more than most advertisers realize. GCLID-based offline imports rely on capturing the Google Click ID from the ad click, storing it with the lead record in your CRM, and uploading it later once the lead closes. Enhanced conversions for leads (ECFL) instead uses hashed first-party data (email, phone, name, address) either alongside or instead of the GCLID, which means matches still happen even when a GCLID gets lost, cookies expire, or a lead comes in through a channel where click tracking failed.
Google’s own data shows the difference is not trivial: advertisers combining first-party data with GCLIDs saw a median 10% increase in conversions compared to standard offline conversion imports that rely on GCLID alone. That gap is why Google is pushing every advertiser toward unified enhanced conversions and away from GCLID-only workflows, with that unified setting becoming the default starting in April 2026.
How Do You Create an Offline Conversion Action in Google Ads?
Before you upload a single row of data, Google Ads needs a destination for it. Here’s the sequence that actually works, in the order it needs to happen.
- Accept the Customer Match and customer data terms in your Google Ads account settings. Skipping this step is the single most common reason first uploads fail outright.
- Turn on auto-tagging under account settings so Google Ads automatically appends a GCLID parameter to your ad URLs. Without it, you have nothing to capture.
- Create the conversion action: go to Goals and conversions, choose “Import,” then select “Other data sources or CRMs” and pick “Track conversions from clicks.” This generates an “Upload clicks” conversion action.
- Set the category (Lead, Purchase, Sign up, and so on) and the counting method. Choose “One” if a single customer completing the action multiple times should count once (typical for lead gen); choose “Every” for transactional conversions like purchases.
- Set attribution and conversion window to match your actual sales cycle. A 90-day contractor sales cycle needs a longer window than a same-day appointment booking.
- If you manage multiple accounts through a manager (MCC) account, confirm the conversion action is linked at the right account level. Uploading to the wrong account level is a frequent, quiet failure point.
One detail trips up more marketers than it should: Google requires you to wait 4 to 6 hours after creating the conversion action before the first import will process correctly. Uploading immediately after setup often produces silent rejections that look like a data problem when it’s actually a timing problem.
Before uploading anything at scale, confirm three things: the account has API or Data Manager access provisioned if you’re automating, the user running the upload has Standard or Admin access (not just read-only), and your CRM export actually includes a GCLID or user-identifier field. Missing any one of these causes a failure that looks like a formatting issue but is really a permissions issue.
If your lead capture happens through web forms, make sure those forms are actually collecting the fields that will make matching work downstream. Contractors running Google Ads for lead generation often lose match rate simply because the GCLID hidden field never made it into the form build.
How Do You Format the Conversion File for Import?
Google Ads is strict about structure. A file that looks correct to a human eye can still fail validation because a header name is off by a character.
- Start with required identifiers. Every row needs either a GCLID or a set of hashed user identifiers (email, phone). Legacy click-based imports need the GCLID; enhanced conversions for leads can work with user identifiers alone, though including both raises match confidence.
- Add the conversion action name exactly as it appears in Google Ads, plus
conversion_date_timein the formatyyyy-mm-dd hh:mm:ss+|-hh:mm, including the timezone offset. A missing offset is one of the most common causes of a “valid file, zero conversions imported” outcome. - Include
conversion_valueandcurrency_codeif you’re tracking revenue, and anorder_idwherever the same event could plausibly be uploaded twice, since Google Ads uses it as the primary dedupe key. - Normalize before you hash. Lowercase and trim emails, remove leading zeros and punctuation from phone numbers, and format them to E.164 before hashing. For scheduled uploads and API-based enhanced conversions for leads, user-provided data must arrive pre-hashed with SHA-256. Manual one-time uploads through the UI are the exception. Google will hash unhashed data itself in that case.
- Match header names exactly to Google’s template. “Google Click ID” and “gclid” are not interchangeable in the file’s eyes.
- Use the preview step Google Ads offers before you finalize the upload. It flags row-level formatting problems before they become a support ticket.
Statistic to remember: Google will reject any row that falls outside its upload window. Offline conversions uploaded more than 90 days after the last associated click are rejected outright, and enhanced conversions for leads shrinks that window to 63 days. If your sales cycle runs longer than that, you need an interim milestone conversion (qualified lead, proposal sent) to bridge the gap before the final sale closes.
For API and Data Manager uploads specifically, including up to five user identifiers per record rather than just one raises match likelihood meaningfully, since Google can cross-reference multiple signals instead of relying on a single hashed value.
Which Import Method Should You Use: Manual, Scheduled, Data Manager, or API?
Four paths exist for getting data into Google Ads, and picking the wrong one for your volume or timeline creates unnecessary rework later.
- Manual file upload through the Google Ads UI works well for testing a new conversion action or handling a one-off backfill. It’s the only path where Google will hash unhashed data for you, which makes it the fastest way to validate that your identifiers and formatting are correct before automating anything.
- Scheduled uploads via Google Sheets, HTTPS, or SFTP suit teams with a recurring CRM export but no development resources to build against the API. The catch: scheduled enhanced conversions for leads uploads require pre-hashed data, and you’re responsible for managing the credentials and file location Google Ads polls on its schedule.
- Data Manager is the path Google is steering everyone toward, and for good reason. It handles both GCLID-based data and user-provided data in one workflow, and it’s built to survive the migration Google has already announced. Legacy upload methods and existing offline conversion imports move to Data Manager starting June 15, 2026, so building on it now avoids a forced rebuild later.
- API uploads through
ConversionUploadServiceandUploadClickConversionsmake sense once you’re integrating directly with a CRM or marketing automation platform and need conversions to flow without manual export steps. Populate eachClickConversionobject with the identifier (gclid, gbraid, or wbraid, or user_identifiers), the conversion action’s resource name, and the conversion timestamp.
Pro Tip: Assign a consistent job_id to every batch you send through the API. Google’s diagnostics group results by job_id, so when a batch has partial failures, you can isolate exactly which upload caused the problem instead of re-auditing your entire conversion history.
Why Did My Offline Conversion Upload Fail?
Most import failures fall into a short list of repeat offenders, and almost all of them are fixable without touching your CRM export logic.
CONVERSION_NOT_FOUNDusually means the conversion action name in your file doesn’t match Google Ads exactly, or you uploaded before the 4 to 6 hour propagation window closed.CONVERSION_ALREADY_ENHANCEDsignals a duplicate attempt to enhance a conversion that already received user-provided data. Check whether an automated job and a manual backfill overlapped.CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMSmeans someone skipped the account-level terms acceptance covered earlier. Fix it once at the account level and every future upload benefits.
For deduplication, lean on order_id as your primary key whenever a lead could realistically generate two export rows, such as a status change that triggers a second CRM sync. Auditing CRM timestamp formats against Google’s required format before export catches a large share of formatting failures before they ever reach the upload stage.
- Pull the offline data diagnostics report inside Google Ads and check the rejection reason column first, not just the success count.
- If GCLID and hashed identifiers conflict on the same record, try a re-upload that omits the GCLID entirely so enhanced conversions for leads can prioritize the hashed data instead of fighting between two match paths.
- If the failure is a timestamp mismatch, correct the source export’s timezone handling rather than patching individual rows. The same error will resurface on your next scheduled run otherwise.
Where Do Imported Conversions Show Up, and How Fast?
Imported conversions typically appear in Google Ads reporting roughly three hours after a successful upload, though the column you check changes what you’re actually seeing. “Conversions” reports by conversion date, which restates historical performance windows as offline data arrives. “All conv. (by conv. time)” is more useful for validation immediately after an upload, since it reflects when the conversion event actually happened rather than when Google finished processing it.
Two settings you configured back at conversion-action setup now directly shape your bidding signal. The counting method (one versus every) determines whether repeat actions from the same lead inflate your numbers, and the conversion priority (primary versus secondary) determines whether Smart Bidding treats this data as a core optimization signal or a background metric.
Quick monitoring checklist after every import:
- Confirm the upload count in diagnostics matches your file’s row count.
- Check “All conv. (by conv. time)” for a spike at the expected date, not just the upload date.
- Verify conversion value totals against your CRM export, not just conversion count.
- Watch for a match rate drop over consecutive uploads. It usually points to CRM field mapping drift, not a Google Ads problem.
What Agencies Learn the Hard Way About Offline Conversion Handoffs
Most offline conversion import projects don’t fail on the technical steps. They fail in the handoff between marketing, sales, and IT, where nobody owns the CRM field mapping once the initial setup is done.

The milestone sequence that works: capture identifiers at the form level, map CRM lead statuses to specific conversion actions, run a manual test upload before automating anything, then move to Data Manager or API once the manual test proves clean. Skipping the manual test step is the most common shortcut that causes months of quiet data loss.
WWS – Web Development + SEO has built this exact sequence into client onboarding as a Google and Meta Partner, working across case studies where CRM and ad platform data finally line up.
— Online Marketing Experts
Let WWS Build Your Offline Conversion Import the Right Way
Setting up enhanced conversions for leads correctly means coordinating tagging, data normalization and hashing, CRM field mapping, and either scheduled uploads or a full API integration, and getting any one piece wrong quietly breaks your Smart Bidding signal for weeks before anyone notices.

WWS – Web Development + SEO is the in-house alternative to piecing this together across freelancers and disconnected CRM consultants. Every team member is Google and Facebook certified, and because tagging, CRM integration, and campaign management all happen under one roof, there’s no back-and-forth between an agency and a separate developer while your conversion data sits unmatched. We’ve done this for contractors, medical providers, and service businesses across Des Plaines and the greater Chicago Area, building the same capture-to-Data-Manager pipeline described above into ongoing marketing campaign management. If your team needs this implemented before the June 2026 Data Manager migration forces the issue, request a consultation with WWS – Web Development + SEO and get your offline conversion tracking built correctly the first time.
Sources
FAQ
How Do You Upload Offline Conversions to Google Ads?
Create an “Upload clicks” conversion action, wait 4 to 6 hours, then upload a formatted file manually, through a scheduled Google Sheets/HTTPS/SFTP connection, through Data Manager, or via the API using ConversionUploadService.
What’s the Difference Between Enhanced Conversions and Offline Conversions?
Standard offline conversion imports rely on the GCLID captured at the ad click, while enhanced conversions for leads adds hashed first-party data like email and phone so matches can still happen when the GCLID is missing or expired.
How Do You Set Up Offline Conversions for Google Ads?
Accept the customer data terms, enable auto-tagging, create the conversion action under Goals and conversions, set the counting method and category, then capture and store the GCLID or user identifiers with each lead in your CRM.
What Does “Offline Data” Mean in Google Ads?
Offline data refers to conversion events that happen outside your website, such as a phone call turning into a signed contract, which Google Ads can only measure once you import that data manually or automatically.
Do I Need to Hash My Data Before Uploading?
Manual one-time uploads through the Google Ads UI can include unhashed data since Google hashes it for you, but scheduled uploads and API-based enhanced conversions for leads require SHA-256 pre-hashed data.