From scraped list to ad audience

Turning raw contact data into a usable custom audience without leaking it.

ERR_AUDIENCE_NOT_READY · 2026-10-06

A scraped or purchased list is not an audience yet. Between the list and a paid campaign sit a few steps that are easy to get wrong.

The steps

  1. Import contacts from a CSV and reject rows that don’t parse.
  2. Enrich missing fields from a data provider.
  3. Normalize and hash emails before they leave your system.
  4. Upload to the ad platform as a custom audience.
  5. Poll until the platform reports the audience as ready.

Rules worth enforcing

Why code beats a spreadsheet here

Each step can fail on its own and be retried without redoing the others. When an upload is rejected, you want the failing row and the reason, not a vague error on a final screen.