How to Use the Google Ads Customer Match Upload Prep Prompt on a CRM Export
Turn a raw CRM or ecommerce export into a Google Ads Customer Match customer list file: correct column headers, normalization before hashing, which columns stay unhashed, consent and exclusion filters, and a short upload runbook.

Customer Match lets you use your own customer list in Google Ads: exclude existing buyers from prospecting, show a different message to past customers, or seed audience expansion. The upload itself takes a minute. Getting the file right takes longer, because the headers are fixed, identifiers need normalizing before hashing, some columns must never be hashed, and anyone without the right consent should not be in the file at all. The Google Ads Customer Match Upload Prep: CSV Headers, Normalization, SHA-256 Hashing, and Consent Checks from a CRM Export prompt turns a messy export into an upload plan you can hand to an analyst.
Why list prep goes wrong
CRM exports are built for the CRM, not for Google Ads. Emails have stray spaces and capital letters. Phone numbers are stored as (415) 555-0142. Countries are spelled out. If you hash those raw values, the hash will not match what Google computes from its own users, and the row is wasted. Worse, many exports include unsubscribed contacts or EU signups whose consent never covered advertising. Uploading them creates a policy and privacy problem that no match rate is worth.
What the prompt produces
- A column mapping from your CRM fields to the Customer Match headers Email, Phone, First Name, Last Name, Country, and Zip, with a clear note that Country and Zip stay unhashed.
- Normalization rules for each field: trimmed and lowercased email, dots removed before the @ only for gmail.com and googlemail.com, phone in E.164 format, lowercase names, and two letter country codes.
- A consent and exclusion filter written as plain logic from your consent fields, with extra care for EEA records.
- A hashing step matching your choice: a short SHA-256 script for in-house hashing, or the right option to pick if Google Ads hashes plain text for you.
- An upload runbook for Audience manager, including membership duration and the policy acknowledgment.
- A refresh and QA plan so unsubscribes drop out and you know where to read the match rate.
How to fill the inputs
For CrmColumns, paste the column names and one fake sample row. Never paste real customer data into a chat tool. The sample row is what lets the prompt show each normalization step concretely.
ConsentFields is the most important input. Say what each field actually means in your system, not what you hope it means. In the example, email_opt_in is general marketing consent, while gdpr_consent_ts is only filled when an EU signup accepted ads use. Regions tells the prompt whether EEA rules apply. UseCase changes the campaign setup at the end, since an exclusion list is attached very differently from a targeting list. MembershipDays and HashingPath shape the runbook.
Walking through the example
The sample store is mostly US with some German and French customers, and wants to exclude past buyers from prospecting Search campaigns. The output makes several careful choices:
- Filtering columns are never uploaded. Opt-in flags, consent timestamps, and order dates are used to decide who is in the file, then dropped.
- DE and FR rows without the consent timestamp are excluded, even when general email opt-in is true, because that field does not say it covers ads use.
- The privacy owner signs off on the consent mapping before the first upload. The prompt flags this rather than making the legal call.
- The list is replaced, not appended, each month, so people who unsubscribe actually leave the segment.
- The segment is added as an exclusion on each prospecting campaign, not as observation.
Mistakes to avoid
- Hashing before normalizing. A hash of
' Dana.Ruiz@Gmail.com 'and a hash ofdanaruiz@gmail.comare completely different values. - Hashing Country or Zip. Those columns are sent as plain text.
- Treating a newsletter opt-in as ads consent everywhere. Check what your consent language covered, region by region.
- Promising a match rate. Google Ads reports it after processing. The prompt points you there instead of guessing.
- Leaving the unhashed working file on a shared drive. Delete it after upload.
Who it is for
This prompt fits paid media managers, marketing ops leads, and ecommerce analysts who own audience lists. It is operational guidance, not legal advice, so loop in whoever owns privacy at your company for the consent mapping.
Related PromptDig links
- Prompt: Google Ads Customer Match Upload Prep: CSV Headers, Normalization, SHA-256 Hashing, and Consent Checks from a CRM Export
- More marketing prompts: Browse more prompts
- Built a better audience workflow? Share a prompt