Google Ads Offline Conversion Import and Enhanced Conversions for Leads: Which to Use and How to Set Up
Quick answer
Offline conversion import sends Google the click ID (GCLID) you saved with a lead, plus the conversion that followed. Enhanced conversions for leads keeps the GCLID and adds hashed email or phone from the form. Google says these uploads moved to its Data Manager API from 15 June 2026, so build new uploads there.
Legal caveat
What is Google Ads offline conversion import?
Rule. Google's help page says Google provides a unique Google Click ID (GCLID) for every ad click. You save it with the lead's details when the lead comes in, and later send it back with the conversion details, such as a booked appointment or a closed sale, so Google can connect the offline result to the click. The same page names three ways to send it: the Data Manager API, the Google Ads API, and a legacy file-based import.
Rule. The Google Ads API conversions page lists three click identifiers: GCLID, GBRAID and WBRAID. The upload page says to set every identifier you captured, and that when several are present Google Ads uses the GCLID first, then the WBRAID, then the GBRAID.
What are enhanced conversions for leads?
Rule. Google's page calls it an upgraded form of offline conversion import. It lets you import hashed user-provided data, such as an email address, in addition to the GCLID. The flow it describes has five steps. A person clicks an ad and visits your site. They submit a lead form, and your site sends Google the hashed lead information. You store the lead in your CRM. When the lead converts, you import the same hashed information along with any GCLID you already send. Google then matches it against the lead data from the tag and against signed-in Google accounts. The page says the upgrade adds engaged-view and cross-device conversions.
Rule. Include GCLIDs whenever possible. The page says this is required if you are not using a tag to collect user-provided data, and that if you do use a tag, it collects GCLIDs automatically but you should keep importing existing ones. On hashing, Google's enhanced conversions page says to trim whitespace, lowercase text, format phone numbers to E.164 (11 to 15 digits with a plus sign and country code) and hash with SHA-256. Google's enhanced conversion data policy page says to hash personally identifiable data such as email, phone number and names, and not to hash country, state, city or ZIP code. The tag collects nothing from a lead form until you have accepted the relevant terms.
Offline conversion import or enhanced conversions for leads: which should you use?
| Your situation | What Google's pages say | What we would do |
|---|---|---|
| Every lead's GCLID is saved with the lead and your system can send it back | Offline conversion import matches on the GCLID | Start here. It is the simplest method and needs no hashing |
| You also have the lead's email or phone from the form | Enhanced conversions for leads adds hashed user data on top of the GCLID | Add hashed data when you have it, and keep sending the GCLID |
| Some leads have no GCLID saved | A GCLID is required if you do not use a tag to collect user-provided data | Use the Google tag on the form so it collects hashed data, and fix the capture so more leads keep their GCLID |
| The lead started on a phone call or WhatsApp | The pages we read do not address this | Capture the click ID on the landing page before the person taps call or WhatsApp, and save it with the lead |
The fourth row is the one that matters for UAE lead generation, where many enquiries become a WhatsApp chat or a call. Because Google's pages are silent on it, we do not claim that hashed phone numbers from those channels will match. The reliable move is to make sure the click ID is stored before the person leaves the page. Our post on Google Ads lead forms and Meta lead ads describes how the click ID is captured at intake.
How do you set up offline conversion import, step by step?
- Capture the identifiers. Save the GCLID, and the GBRAID and WBRAID when present, with each lead at the moment it arrives.
- Create the conversion action. The Google Ads API page says an uploaded click conversion needs an enabled conversion action of type UPLOAD_CLICKS. Create one for each stage you will report, for example qualified and booked.
- Choose the stage. Practice: report the stage that tells Google a lead was worth having. Our post on cost per booked lead argues for the booked stage. The same logic appears in our Meta guide on sending lead stages to Meta.
- Send the conversion. Each row needs the conversion action, the click identifier and a conversion date and time. The upload page gives the format yyyy-mm-dd HH:mm:ss+|-HH:mm, requires it to be after the click time, and says the timezone can be any valid one rather than the account's. A conversion value and a three-letter currency code are recommended.
- Prevent duplicates. The upload page describes an order ID, a unique ID per conversion action. If you set it on import you must use it for any adjustments, and duplicate IDs are rejected.
- Watch for expiry. The page lists an EXPIRED_EVENT error when the click happened before the conversion action's click-through window. Upload before your window closes. Google's pages we read give no fixed number of days for it.
What changed in 2026: the Data Manager API?
Rule. Google's offline conversion and enhanced conversions pages both say that starting 15 June 2026 offline conversion import and enhanced conversions for leads uploads are migrated to the Data Manager API and blocked in the Google Ads API. The upload page adds that since 15 June 2026, UploadClickConversions requests fail for developer tokens that had no offline click conversion upload activity between 17 December 2025 and 15 June 2026, and recommends the Data Manager API instead. So an integration built from the older Google Ads API guides may not work for an account that did not already use it.
Rule. In the Data Manager API guide the flow is: prepare destinations, prepare events with their identifiers (and, if you include user data, normalise and SHA-256 hash it, with optional encryption), send events.ingest, then check requestStatus.retrieve, because ingestion is asynchronous. You can set validateOnly to true to catch fast-fail errors before sending production data. Google's enhanced conversions page also says enhanced conversions for web and for leads are to be combined into a single on and off setting, starting April 2026.
What data are you sending Google, and do you need consent?
Rule. The offline conversions page says to give people clear and comprehensive information about the data you collect, and to get consent where required by law or applicable Google policies. Google's policy page says it uses enhanced conversion data to match uploaded conversions to ad clicks for measurement, and for automated bidding, spam detection and policy checks. It lists further uses, such as incrementality studies and Customer Match lists, that you can direct or opt into. The page does not address privacy-notice wording or sensitive categories, and points to Google's customer data policies. In the UAE the PDPL applies to the personal data you hold. See our post on PDPL consent, and ask counsel about your own forms.
How does MAJ Leads fit in?
MAJ Leads captures the click ID and the source details when a Google Ads lead form or website form lead arrives, and puts the first call due within about 30 seconds. Sending Booked outcomes back to Google Ads as conversions is rolling out. Our closed-loop attribution post describes how it is built, and it is not a report from customer campaigns. Anyone building such an upload should read the Data Manager API section above, because Google's route for it changed in June 2026. See how it works for the flow.
Sources
- Google Ads Help: about offline conversion imports
- Google Ads Help: about enhanced conversions for leads
- Google Ads Help: about enhanced conversions
- Google Advertising Policies Help: how Google uses enhanced conversion data
- Google Ads API: conversions overview
- Google Ads API: manage click conversions (upload clicks)
- Data Manager API: Google Ads offline conversions
Frequently asked questions
What is the difference between offline conversion import and enhanced conversions for leads?
What is a GCLID, and what are GBRAID and WBRAID?
Can I still upload offline conversions with the Google Ads API?
Do I need to hash the data for Google Ads?
Do I need consent to upload customer data to Google Ads?
Anam Jalal
Founder & CEO, MAJ Leads
Anam Jalal is the founder of MAJ Leads, a Dubai-based lead management system that puts every paid lead on a rep's phone within about thirty seconds and chases it until it has an answer. He works hands-on with UAE clinics, brokerages and trading companies on lead follow-up, WhatsApp and CRM integrations, and ran voice AI deployments in the UAE before the company focused on lead management.
Read more about AnamRelated articles
Guide
Closed-Loop Attribution: Tell Google and Meta Which Leads Actually Booked
Google Ads and Meta only know what you tell them. If the only signal a campaign ever sends back is "form submitted," that is the only thing the bidding algorithm learns to find more of. Closed-loop attribution is the mechanism for telling both platforms which of those form fills actually became a customer.
Guide
Meta Conversions API for CRM: How to Send Lead Stages Back to Facebook and Instagram Lead Ads
Meta's documentation for sending CRM stages back to lead ads is written for engineers, and the blogs that summarise it add numbers Meta does not state. This guide reads Meta's own pages, lists the eligibility checks, and separates Meta's rules from our advice.
