⟨ BLOGPLAYBOOKSAUDIENCES & AD TARGETING

Google Customer Match export of list <name>

A saved list exported as a Google Ads Customer Match file with the exact columns and hashing Google expects, saved to Drive with upload steps and expected match coverage.

PlaybookListsAudience ExportsCSVGoogle DriveRUN BY THE AUDIENCE AGENT →

The problem this solves

What lands at the end of this playbook is a file Google Ads accepts on the first try: one CSV in Google Drive under <folder>, with the header row Google's Customer Match template requires, every identifier hashed, and a short note telling whoever uploads it exactly where to click and what to expect. Google Customer Match is delivered as a file you upload from your own Google Ads account, so getting the file right is the whole job.

That sounds modest until you have watched an upload fail three times. Google rejects files with the wrong column names, counts a row as unmatched when the email was hashed with a stray capital letter, and quietly ignores phone numbers saved without a country code. Each failed attempt costs an afternoon, and the paid team ends up targeting a smaller list than the one they built.

How the mission runs

  1. Map list <name> onto Google's template columns. The Audience Agent reads the list and maps its fields to the columns Google Customer Match expects: Email, Phone, First Name, Last Name, Country and Zip. Fields that have no counterpart, such as job title, stay in the workspace, and the agent reports how many rows carry each identifier before any transformation.
  2. Normalize every identifier first. Emails are lowercased and trimmed. Phone numbers are rewritten in international format with the country code, since Google matches nothing else. Names are lowercased with surrounding whitespace removed, country becomes a two-letter code, and zip stays as it appears. The normalization runs before hashing because a hash of an unnormalized value never matches.
  3. Hash what Google requires and leave the rest plain. Email, phone, first name and last name are hashed with the algorithm Google specifies, while Country and Zip are left unhashed as the template requires. The agent keeps the pre-hash row count and a sample of the output so you can confirm the shape before anything is uploaded.
  4. Save the file to Google Drive under <folder>. The finished CSV is written to your Google Drive under <folder>, named after list <name> and the export date. A companion note in the same folder lists the upload steps: open Audience manager in Google Ads, create a customer list segment, upload the file, accept the data policy, and wait for Google to process it.
  5. State the expected coverage honestly. The agent tells you how many rows carry an email, how many add a phone, and how many add a name and address, because rows with more keys match more often. It also reminds you that Google reports the final match rate after processing, and that the platform's number is the one to plan against.

The prompt

This is the exact objective the agent receives. Swap the obvious placeholders for your own domain, segment or channel and run it as-is from the console, Slack, or the API.

⟨ THE MISSION PROMPT · PASTE AND RUN ⟩

Export list <name> as a Google Ads Customer Match file with the exact columns and hashing Google expects, save it to Google Drive under <folder>, and give me the upload steps and the expected match coverage.

What comes back

A Customer Match CSV in Google Drive under <folder> with Google's exact header row, hashed identifiers, and unhashed Country and Zip, ready to upload to your Google Ads account. Beside it sits a note with the upload steps, the eligibility reminders for Customer Match, the row counts by identifier type, and the rows set aside for having nothing Google can match on, so the paid team knows the coverage before the upload starts.

Make it yours

  • Run the phone finder over list <name> first so more rows carry a second key, then export.
  • Verify the emails before the export so dead addresses drop out and the file only carries rows that can plausibly match.
  • Split the export by country when your Google Ads accounts are regional, one file per account under <folder>.
  • Produce a matching suppression file of current customers from HubSpot so the same upload session can exclude them.

Frequently asked questions

Why is this an export rather than a direct audience creation?

Google Customer Match audiences are created inside your own Google Ads account by uploading a file, so the platform prepares the file to Google's specification and hands you the path. LinkedIn, Meta and Reddit audiences, by contrast, are created directly on connected accounts.

Does Google receive plaintext data?

Only the columns Google requires in plain form, Country and Zip. Every personal identifier is hashed in the workspace before the file is written, and the plaintext list stays where it was.

What is the expected match coverage?

The agent reports the share of rows carrying each identifier type and sets aside rows with none. Google publishes the final match rate after processing the upload, and that platform figure is the one to use.

How do I keep the audience current?

Re-run the playbook on a schedule. Because list <name> persists with its criteria, each run produces a fresh file, and Google lets you replace or append to an existing customer list segment.

Go deeper

⟨ RUN IT INSTEAD OF READING IT ⟩

This mission runs minutes after signup.

Open a workspace, paste the prompt, and the Audience Agent carries it end to end on your plan's monthly credits - evidence attached.

⟨ RELATED PLAYBOOKS ⟩