The trap this whole page exists to flag
If you already prepared a hashed list for Google Ads and are about to reuse the column for Meta: stop. Google documents E.164 with a leading +; Meta documents digits with country code and its own worked example is (650)555-1212 → 16505551212 – no plus sign. Hashing is exact, so the two formats produce two unrelated digests. One hashed phone column cannot serve both platforms. If your Meta match rate has been mysteriously poor while Google's was fine, this is the first thing to check.
Meta's documented rules, field by field
From Meta's customer information parameters documentation:
- Email: "Trim any leading and trailing spaces. Convert all characters to lowercase." That is the whole rule – no Gmail dot-stripping, unlike Google.
- Phone: "Remove symbols, letters, and any leading zeros", and "Always include the country code as part of your customers' phone numbers." Digits only, country code in front, per the worked example above.
- Hash encoding: hex, lowercase – Meta's docs specify "HEX representations… using lowercase for A through F." An uppercase-hex digest is a valid hash that will not match.
The Sheets workflow
- Plain-text the phone column before data lands – otherwise leading zeros and long numbers are destroyed on paste, before any formula runs.
- Normalise per the rules above. For phones: strip non-digits, drop leading zeros, prepend the country code without
+. For emails:=LOWER(TRIM(A2)). - Hash with SHA-256, lowercase hex. Sheets has no built-in hash function – Google's function list contains no SHA256, MD5 or DIGEST anywhere – so this step is Apps Script or an add-on.
- Verify against Meta's own test vector. Meta publishes the expected digest for
john_smith@gmail.com:
62a14e44f765419d10fea99367361a727c12365e2520f32218d505ed9aa0f62f
Hash that exact string with your setup. Anything else back means fix the formula, not the list.
- Export as CSV and upload. Keep the raw and hashed columns apart, and delete the raw column from anything you share.
One honest note before you upload
A hashed list is pseudonymised, not anonymised – the number space behind a phone hash is small enough to brute-force, and ad-platform matching requires the hash unsalted. Treat the hashed file with the same care as the raw one; our hashing-and-privacy guide covers what SHA-256 does and does not protect.
Where Hash Data fits
Hash Data runs the hashing inside the sheet, with the normalisation rules the platforms document applied per column rather than by memory. =HASHPHONE() normalises to E.164 and hashes in one step – which serves the Google-formatted column; for Meta's plus-less format, normalise per step 2 and hash the result.
→ Hash Data on the Google Workspace Marketplace
Sources
- Meta – Conversions API customer information parameters – read 2026-08-20
- Meta – Custom Audiences guide – read 2026-08-20
- Google Ads Help – Format your customer data file – read 2026-08-20 (for the contrast)
- Google Sheets function list – read 2026-08-20