# Prepare a Google Ads Customer Match List in Sheets

> The upload succeeds either way – the match rate is what fails. Here's the Sheets-to-Customer-Match workflow with Google's own formatting rules at each step.

- Source: https://www.8apps.co/blog/google-ads-customer-match-list-google-sheets
- Markdown: https://www.8apps.co/blog/google-ads-customer-match-list-google-sheets.md
- Published: 2026-09-02
- Author: 8apps Team
- Language: en

---
## The API tells you the stakes

Google's own developer documentation says it plainly: *"If the contact information is not correctly formatted before hashing, the API still accepts the hashed information, but it can't be matched with a customer."* No error, no warning – just a list that silently matches nobody. So the workflow below is mostly formatting, and the hash is one step near the end.

## Step 1 – one identifier per column, plain text first

Lay the sheet out with each identifier in its own column – email, phone, name fields, country and postal code as applicable – and set phone and postal columns to **plain text before pasting** (Format → Number → Plain text), or leading zeros and long numbers are silently destroyed on arrival.

## Step 2 – normalise to Google's documented rules

For hashed fields, Google's file-format documentation is specific:

- **Lowercase everything, strip surrounding whitespace.**
- **Email, Gmail-only rule:** for `gmail.com` and `googlemail.com` addresses, remove periods in the username and anything from a `+` onwards – `Jane.Doe+Shopping@googlemail.com` becomes `janedoe@googlemail.com`. Documented for those two domains only; do not apply it to other domains.
- **Phone:** E.164 – *"Include the country code and '+' sign."* The full formatting pass is our E.164 guide; the short version is digits only, country code, leading `+`.

## Step 3 – hash, or let Google hash

Two documented paths:

- **Upload plaintext** and Google hashes the data on its side before matching.
- **Hash yourself** – SHA-256, hex output (Google's wording: *"Use hex SHA256"*) – so raw customer data never leaves your sheet in readable form. This is the route compliance-minded teams take, and the reason this workflow exists in Sheets at all: Sheets has no built-in hash function, so the hashing step needs Apps Script or an add-on.

## Step 4 – verify before uploading

Two ten-second checks that catch most silent failures:

- **Length check:** a SHA-256 hex digest is exactly 64 characters – `=LEN(B2)=64` flags truncation and double-hashing at once.
- **Spot check:** hash one value whose input you normalised by hand and confirm the digest changes when the input casing changes. If `John@` and `john@` give the same digest, something upstream is pre-processing your data.

## Step 5 – upload and set expectations

Upload the file to your customer list in Google Ads. Processing is not instant, and the matched size will be smaller than your row count – matching happens against signed-in Google accounts, and no formatting discipline changes that. What formatting discipline changes is whether a matchable row actually matches. If the rate looks wrong, our match-rate troubleshooting guide walks the causes in diagnostic order.

## Where Hash Data fits

[Hash Data](/google-workspace/hash-data) puts the hashing step inside the sheet: several algorithms as formulas, and `=HASHPHONE()` normalising a number to E.164 and hashing it in one step – the two most error-prone steps above, collapsed into one.

## Sources

- [Google Ads Help – Format your customer data file](https://support.google.com/google-ads/answer/7659867) – read 2026-08-20
- [Google Ads API – Get started with Customer Match](https://developers.google.com/google-ads/api/docs/remarketing/audience-segments/customer-match/get-started) – read 2026-08-20
- [Google Sheets function list](https://support.google.com/docs/table/25273) – read 2026-08-20
