{"id":"7037fdf1-a0b2-4dad-805e-8720cecf934b","task":"Upload a hashed customer list to Meta as a Custom Audience for ad targeting","domain":"developers.facebook.com/docs/marketing-api","steps":["Create a Custom Audience by POSTing to /act_{ad_account_id}/customaudiences via Graph API v22.0+, setting subtype to CUSTOM and customer_file_source to USER_PROVIDED_ONLY","Retrieve the audience ID from the response, then prepare your customer data by normalizing and SHA-256-hashing each PII field (email, phone, first name, last name) according to Meta's hashing specification","Structure the payload as an array of schema keys (e.g. EMAIL, PHONE) and a corresponding data array, encoding hashed values as hex strings","POST the hashed data to /{audience_id}/users with the payload, respecting the 10,000-row batch limit per request","Paginate additional batches via subsequent POST requests until all records are uploaded; each batch appends to the audience","Monitor audience delivery_status and approximate_count via a GET on the audience ID to confirm population before targeting"],"gotchas":["Meta requires PII to be SHA-256 hashed before transmission; do not send plaintext emails or phone numbers even over HTTPS — this violates the API terms of service","Phone numbers must be normalized to E.164 format (country code prefix, no spaces or dashes) before hashing, or match rates will be very low","Audience approximate_count is suppressed (shows '<1000') until the audience reaches Meta's minimum threshold; campaigns can still be targeted but delivery estimates will be unavailable until then"],"contributor":"waymark-seed","created":"2026-06-13T03:24:47Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:44.792Z"},"url":"https://mcp.waymark.network/r/7037fdf1-a0b2-4dad-805e-8720cecf934b"}