INVALID_USER_IDENTIFIER
Google Ads rejected your user identifiers for Enhanced Conversions. Learn why — unhashed PII, wrong algorithm, missing normalization — and how to fix hashing issues.
Common Causes
| # | Cause | Likelihood | Details |
|---|---|---|---|
| 1 | Unhashed PII sent directly | Very Common | Raw email addresses or phone numbers were sent without SHA-256 hashing. Google Ads requires all PII to be hashed before upload. Sending 'john@example.com' instead of the SHA-256 hash is the most common cause. |
| 2 | Wrong hash algorithm (MD5 instead of SHA-256) | Common | MD5 hashes are 32 hex characters. SHA-256 hashes are 64 hex characters. If your hash is 32 characters, you used MD5. Google only accepts SHA-256. |
| 3 | Missing pre-hash normalization | Common | Email not lowercased, phone not in E.164 format, or whitespace not trimmed before hashing. The same email in different formats produces different hashes — Google's hash won't match yours. |
| 4 | Invalid E.164 phone format | Moderate | Phone numbers must be in E.164 format (+15551234567) BEFORE hashing. Hashing '5551234567' (no country code) or '(555) 123-4567' (formatted) produces the wrong hash. |
| 5 | Hex encoding mismatch | Less Common | SHA-256 output must be lowercase hexadecimal (64 chars of 0-9a-f). Some libraries output uppercase hex or Base64-encoded hashes instead. |
What It Means (Plain English)
The user identifiers you provided for Enhanced Conversions (email, phone number, name, address) are in an invalid format. Google Ads requires these fields to be properly normalized and SHA-256 hashed before upload. If the hash is wrong, missing, or in the wrong format, Google cannot match the conversion.
How to Fix It
Step 1: Verify You’re Hashing (Not Sending Raw PII)
Check your upload data. If the email field contains john@example.com instead of a 64-character hex string, your PII is not being hashed:
✗ Wrong: john@example.com
✗ Wrong: Sm9obkBleGFtcGxlLmNvbQ== (Base64, not hex)
✗ Wrong: 5D41402ABC4B... (32 chars = MD5, not SHA-256)
✓ Correct: fd876f8cd6a58277c4... (64 chars = SHA-256 hex)
Step 2: Check the Normalization Pipeline
The correct order for each field:
Email:
- Lowercase:
John@Example.com→john@example.com - Trim whitespace:
john@example.com→john@example.com - SHA-256 hash the result
Phone:
- Strip formatting:
(555) 123-4567→5551234567 - Add country code (E.164):
5551234567→+15551234567 - SHA-256 hash the result
Name (first/last, separately):
- Lowercase:
John→john - Trim whitespace:
john→john - SHA-256 hash the result
Step 3: Validate with the SHA-256 Hasher
Use the TUOCA SHA-256 Hasher to generate correct hashes and compare against your pipeline output. If the hashes don’t match, your normalization is different.
Step 4: Check Hash Output Format
Ensure your hash is:
- 64 characters (not 32 = MD5, not 44 = Base64)
- Lowercase hexadecimal (0-9, a-f only — no uppercase A-F)
- No prefixes (no
0x, nosha256:)
How TUOCA Prevents This
The Upload Offline Conversions App handles the entire normalization and hashing pipeline:
- Automatic normalization — Emails are lowercased and trimmed, phone numbers are converted to E.164, names are lowercased — all before hashing
- SHA-256 only — TUOCA exclusively uses SHA-256 with lowercase hex output, matching Google’s expected format
- Pre-upload validation — Hash format is verified (64-char hex) before including in the upload batch
- Gmail dot stripping — Optional normalization that removes dots from Gmail addresses (j.ohn → john) for improved matching