Share a Customer List with Your Agency – Without the PII

8apps Team·

Your agency needs the audience, not the addresses. Hash the list in Sheets before it leaves your hands – matching still works, and the raw data stays home.

The email you should stop sending

"Hi, customer list attached for the campaign" – with a raw CSV of names, emails and phone numbers, sent to an agency inbox, forwarded to whoever runs the ads, alive forever in three mail archives. The agency never needed the readable addresses. It needed a file the ad platform can match. Those are different files, and you can produce the second one without ever sharing the first.

Why this works at all

Ad platforms match customer lists on hashed identifiers – Google Ads and Meta both document accepting SHA-256 digests of normalised emails and phones. The platform compares your digests against its own; at no point does the campaign need your list to be readable by the humans running it. So the division of labour is clean: you normalise and hash inside your own sheet; the agency receives digests and uploads them.

The workflow

  1. Normalise per destination platform first – this is where the trap lives. Google's documented phone format is E.164 with the +; Meta's is digits-with-country-code, no plus. One number, two formats, two different digests – so ask the agency which platforms before you hash, and produce one hashed column per platform. (The full rules per platform are in our Customer Match and Custom Audience guides.)
  2. Hash in the sheet – SHA-256, hex. Sheets has no built-in hash function, so this is Apps Script or an add-on.
  3. Strip the file before it travels. Copy the hashed columns, paste as values into a fresh sheet, and check the file holds nothing else – no raw column hiding at the far right, no second tab with the original paste, no named ranges dragging data along.
  4. Send with a one-line spec: which platform each column is for, and that digests are SHA-256 lowercase hex of platform-normalised values. That sentence prevents the agency re-hashing or "fixing" the data – the most common way a clean handoff dies.

What this does not do

Honesty, because it matters here: a hashed list is pseudonymised, not anonymised – regulators treat it as personal data, and small keyspaces like phone numbers can be brute-forced. The hashed file should travel under the same agreement the raw file would have needed; what changes is exposure, not obligation. If the agency's process fails, digests leak instead of addresses – a much smaller blast radius, not a non-event.

Where Hash Data fits

Hash Data keeps step 2 inside Google Sheets: hashing functions in the cells, =HASHPHONE() normalising to E.164 and hashing in one step for the Google-formatted column. The list gets campaign-ready without a copy of it ever being pasted into a web hasher or attached raw to an email.

Hash Data on the Google Workspace Marketplace

Sources