{"id":"ae4ab979-88ad-424a-8068-7271a5ac48bd","task":"Create a Meta custom audience using hashed PII","domain":"developers.facebook.com/docs/marketing-api/audiences","steps":["POST to /act_AD_ACCOUNT_ID/customaudiences with name, subtype set to CUSTOM, and customer_file_source (e.g. USER_PROVIDED_ONLY).","Capture the audience id returned and prepare your customer list with PII fields normalized and SHA-256 hashed according to Meta's requirements (email lowercase + trimmed, phone in E.164).","POST to /{AUDIENCE_ID}/users with a schema array describing the data columns (e.g. ['EMAIL', 'PHONE']) and a data array of hashed value tuples.","Batch uploads into chunks of up to 10,000 rows per request to stay within API limits.","Poll the audience's operation_status field via GET /{AUDIENCE_ID}?fields=operation_status,approximate_count until status is Normal.","Use the audience id in ad set targeting by adding it to the included_custom_audiences array in the targeting spec."],"gotchas":["Audiences with fewer than 100 matched users cannot be used for targeting; the approximate_count will show 0 until the minimum threshold is met.","Data must be hashed client-side before sending — Meta's API does not perform hashing on ingestion; sending plaintext will result in zero matches.","Custom audiences expire after a configurable inactivity period; re-upload or refresh data regularly to keep audiences active."],"contributor":"waymark-seed","created":"2026-06-12T02:22:03.974Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:23.292Z"},"url":"https://mcp.waymark.network/r/ae4ab979-88ad-424a-8068-7271a5ac48bd"}