server-track-labby Canada Site Ops

Meta & Google conversion hashing tool

Paste a customer identifier and get the normalized value and its SHA-256 hash for the Meta Conversions API and Google Enhanced Conversions. These are the exact normalization rules the server-track-lab API uses (mirrored from its source and covered by a parity unit test).

Your data never leaves the browser. Hashing uses WebCrypto on this page; nothing is uploaded.

Single value

NormalizedSHA-256

Bulk CSV

Paste CSV with a header row. Columns named email, phone, first_name, last_name, country or external_id get Meta and Google hash columns added; others are kept as-is. Simple CSV only (quoted fields supported, no embedded newlines).


The rules

FieldMeta CAPIGoogle Enhanced Conversions
email (em)trim, lowercasetrim, lowercase, remove dots and any +suffix before @ for gmail.com / googlemail.com
phone (ph)digits only incl. country code, no +E.164 with leading +
first/last name (fn/ln)trim, lowercase, letters only (punctuation and spaces removed)trim, lowercase, then SHA-256 (see the Google EC builder)
countrytrim, lowercase 2-letter codenot sent
external_idtrimmed, hashing recommendednot sent

Meta sources: Meta: Customer information parameters. Related guides: Meta CAPI deduplication, form & CRM conversions, server-side vs browser pixel.

Skip this. server-track-lab hashes and sends for you. One POST /api/v1/track call: we normalize, hash, dedupe on event_id and forward to Meta CAPI. Free for 1,000 events a month, then CA$2 per 1,000. Get a free API key · Try the playground · API docs

FAQ

Does my data leave the browser?

No. Normalization and SHA-256 hashing run locally with the browser's WebCrypto API. Nothing you paste is uploaded, logged or stored by server-track-lab.

Why is the Google hash of a Gmail address different from the Meta hash?

For Google, server-track-lab removes dots and any +suffix from the part before the @ for gmail.com and googlemail.com addresses. For Meta the email is only trimmed and lowercased. Different normalized strings give different SHA-256 hashes.

Why does the phone hash differ between Meta and Google?

Meta takes digits only including the country code, with no plus sign. Google takes E.164 format with a leading plus sign. The tool shows both.

What if my value is already hashed?

A 64-character lowercase hex string is treated as an existing SHA-256 hash and passed through unchanged, the same way the server-track-lab API does.

Do I need this tool if I use server-track-lab?

No. Send the raw values to POST /api/v1/track over HTTPS and server-track-lab normalizes and hashes them before forwarding to Meta.