What Is Enhanced Conversions for Leads? Google's Offline PII Matching Explained
How to match an offline job back to the ad click: send the GCLID when you stored it, and a hashed email or phone from the same lead. This page shows what to put on the upload and where to turn it on.
When a job closes, you tell Google Ads which click it came from. If you saved the GCLID, send it. On the same upload, send a hashed email or phone from that lead. Google uses the click ID when it lines up, and uses the hash when the person was signed in or filled out a form on your site.
Here is one booked job:
| What you stored | What you upload |
|---|---|
| GCLID from the landing page | The full click ID |
| jane@example.com | The SHA-256 hash of jane@example.com, not the raw address |
| Invoice 1842, closed at 2:30 p.m. Chicago time | Order ID 1842 and time 2026-04-10 14:30:00-05:00 |
| $4,500 | Conversion value 4500.00 and currency USD |
If the call never captured a GCLID, upload the hash anyway. If you have the click ID, keep it on the row. Do not wait until capture fails and then switch methods.
Google compared imported conversions from January 1 through January 14, 2026, and found an average 11% more Search conversions when enhanced conversions were used than with a standard import. That window is two weeks, so treat it as a short snapshot. It is not a match rate.
The Problem ECL Solves
Traditional offline conversion tracking depends entirely on the GCLID:
Click → GCLID captured → Stored in CRM → Uploaded with conversion → Match ✓
But this flow breaks in many real-world scenarios:
| Scenario | GCLID Available? | ECL Solution |
|---|---|---|
| Website doesn’t capture GCLID | ❌ | Match on hashed email/phone |
| GCLID expired (>90 days) | ❌ | Neither the click ID nor the hash matches. Upload a qualified lead while the GCLID is still inside 90 days. |
| User clicks on phone, converts on desktop | ❌ Different GCLID | Match on hashed email (same Google account) |
| Call tracking doesn’t record GCLID | ❌ | Match on hashed phone number |
| CRM doesn’t store GCLID | ❌ | Match on hashed email from lead record |
| User clears cookies between click and form fill | ❌ | Match on hashed email |
ECL provides an alternative matching path using PII the user voluntarily provided.
How ECL Works
The Matching Process
- User clicks your ad — Google records the click and associates it with the user’s Google account (linked to their email, phone, etc.)
- User provides PII — They fill out a form, call your business, or provide contact info
- Conversion happens offline — Days/weeks later, the lead becomes a customer
- You normalize the PII — Lowercase email, E.164 phone format
- You hash with SHA-256 — One-way hashing protects privacy
- You upload the hash with the conversion — Send it through the Data Manager API, along with the click ID when you have one
- Google matches independently — Google hashes its own records and compares hash values
Neither party ever sees the other’s raw PII. The matching happens entirely on hash values.
Supported Identifiers
| Identifier | Field Name | Normalization | Match Quality |
|---|---|---|---|
hashed_email | Lowercase, trim | ★★★★★ | |
| Phone | hashed_phone_number | E.164 format | ★★★★ |
| First name | hashed_first_name | Lowercase, trim | ★★★ |
| Last name | hashed_last_name | Lowercase, trim | ★★★ |
| Street address | hashed_street_address | Lowercase, trim | ★★ |
| City | city | Lowercase, trim | ★★ |
| State | state | 2-letter abbreviation | ★★ |
| Zip code | postal_code | First 5 digits | ★★ |
| Country | country | ISO 2-letter code | ★★ |
Best practice: Send as many identifiers as available. More signals = higher match rates.
ECL vs. Standard GCLID Upload
| Feature | GCLID Upload | ECL Upload | Both Combined |
|---|---|---|---|
| Requires GCLID | ✅ | ❌ | ✅ |
| Requires PII | ❌ | ✅ | ✅ |
| Matching window | 90 days | 63 days | 90 days (GCLID) |
| Cross-device matching | ❌ | ✅ | ✅ |
| What you can check | The click ID matched, or it did not | The diagnostics card | The diagnostics card |
| Privacy-safe | N/A (no PII sent) | ✅ (SHA-256 hashed) | ✅ |
TUOCA’s approach: When both a GCLID and an email or phone are available, TUOCA sends both. Google does not publish a match rate for that combination. The diagnostics card is where you see whether the row lined up.
Setting Up ECL
Step 1: Enable in Google Ads
- Go to Goals → Conversions → Settings
- Turn enhanced conversions on. You will see one switch. You will not be asked to choose website or leads.
- Accept the customer data terms if this account has not already accepted them
Step 2: Create an Import Conversion Action
- Goals → Conversions → + New conversion action
- Select Import
- Choose Track conversions from leads (Enhanced Conversions for Leads)
- Configure: Name, value, count, attribution window
- Save
Step 3: Upload with Hashed PII
For CSV uploads:
Hashed Email,Hashed Phone Number,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
a8b14f04b2be6c5f...,d4f5c3b1e72a...,Booked Job,2026-04-10 14:30:00-05:00,4500.00,USD
For API uploads (what TUOCA uses), the hashed PII goes in the user_identifiers field of the ClickConversion object.
The 63-Day Window
A hashed email or phone matches for 63 days after the click, and from day 64 through day 90 only the GCLID still matches. Google keeps a GCLID for 90 days after the click, so a job closed on day 75 can still be uploaded and the same job closed on day 91 cannot.
| Window | GCLID | ECL | Impact |
|---|---|---|---|
| 0-63 days | ✅ | ✅ | Both available |
| 64-90 days | ✅ | ❌ | Only GCLID works |
| 91+ days | ❌ | ❌ | Neither works |
For sales cycles longer than 63 days, use intermediate conversion events:
Day 7: Upload "Qualified Lead" ($0 value) — within ECL window
Day 30: Upload "Proposal Sent" ($0 value) — within ECL window
Day 60: Upload "Job Booked" ($4,500 value) — within ECL window
Day 90: Upload "Job Completed" ($4,500 value) — GCLID only
Improving ECL Match Rates
| Action | Why it matters |
|---|---|
| Add email | Gives Google a hashed address to line up with a signed-in account |
| Add phone (E.164) | A second identifier when the email was a work address Google has never seen |
| Add first + last name | Another field on the same row |
| Add the GCLID when you stored it | The click ID still matches on its own through day 90 |
| Lowercase and trim before hashing | Jane@Example.com and jane@example.com are different hashes |
| Use SHA-256 (not MD5) | A different algorithm will not match Google’s hash |
Diagnostic Checklist
- ✅ Are emails lowercased and trimmed before hashing?
- ✅ Are phones in E.164 format (+1XXXXXXXXXX) before hashing?
- ✅ Are you using SHA-256 (not MD5, SHA-1, or Base64)?
- ✅ Are you sending multiple identifiers (email + phone + name)?
- ✅ Is the conversion within the 63-day ECL window?
- ✅ Is ECL enabled in your Google Ads account settings?
Use the SHA-256 Hasher and E.164 Formatter tools to verify your data.
How TUOCA Implements ECL
TUOCA automates the entire ECL pipeline:
- PII extraction — Pulls email, phone, and name from your connected data sources
- Normalization — Applies Google’s specific normalization rules (lowercase, trim, E.164, Gmail dot removal)
- SHA-256 hashing — Hashes all PII fields
- GCLID pairing — When available, includes the GCLID for dual-path matching
- API upload — Sends the click ID and the hashed identifiers. Google requires the Data Manager API for a new upload. A developer token that was not already uploading is rejected on the old call.
- Error handling — Catches
INVALID_USER_IDENTIFIERerrors and logs the specific field that failed
Cross-Platform ECL Equivalents
ECL isn’t unique to Google. Every major ad platform has a similar mechanism:
| Platform | Feature Name | Matching Method |
|---|---|---|
| Google Ads | Enhanced Conversions for Leads | SHA-256 hashed PII |
| Meta | Conversions API Enhanced Matching | SHA-256 hashed PII |
| Microsoft Ads | Enhanced Conversions | SHA-256 hashed PII |
| TikTok | Events API user data | SHA-256 hashed PII |
TUOCA normalizes and hashes PII according to each platform’s specific rules, handling all four platforms through a single relay pipeline configuration.