Meta Audiences
Meta Audiences lets you keep a Meta (Facebook/Instagram) Custom Audience in sync with a dataset of user identifiers from your warehouse — for example hashed emails, phone numbers, or mobile advertiser IDs — so you can retarget or exclude those users in your ad campaigns.
Introduction to Meta Audiences
- Goal: keep a Meta Custom Audience up to date with your upstream audience table.
- How it works (high level): on each sync, Extract reads the rows produced by your stream and calls the Meta Custom Audience Users API — rows marked
Added/Changedare added to the audience, and rows markedRemovedare removed from it. - Official Meta docs: Custom Audiences API.
Setup Guide
- Connection: authenticate the Meta Audiences destination using Meta OAuth, granting Extract permission to manage Custom Audiences on your ad account(s).
- Ad Account (required): the Account ID dropdown is dynamically populated from the ad accounts available to your authenticated Meta user. All audiences created/updated by this destination live under the selected ad account.
- Audience name (optional, per stream): if set, Extract uses this as the name of the Meta Custom Audience; otherwise it falls back to the stream title.
- Extract looks for an existing writable audience (subtype
CUSTOM) with that name in the selected ad account and reuses it, creating a new one only if none exists. - If more than one writable audience shares that name, the sync fails — audience names must resolve to a single writable audience.
- Extract looks for an existing writable audience (subtype
- Data contract (required): every stream connected to this destination must have a data contract attached. Pick the contract below that matches the identifiers available in your source data.
Required and optional fields
Every contract includes a required diff_result column with allowed values Added, Changed, or Removed, which determines whether a row is added/updated or removed from the audience.
| Data contract | Fields | Required / optional |
|---|---|---|
custom_audience_email | EMAIL_SHA256 | Required |
custom_audience_phone | PHONE_SHA256 | Required |
custom_audience_mobile_advertiser_id | MOBILE_ADVERTISER_ID | Required |
custom_audience_multikey (Multiple identifier custom audience) | EXTERN_ID, EMAIL, PHONE, GEN, DOBY, DOBM, DOBD, LN, FN, FI, CT, ST, ZIP, MADID, COUNTRY | All optional — include whichever identifiers you have. Provide at least one per row for the record to be useful for matching. |
Validation rules enforced for the multi-identifier contract:
GEN(gender) must bemorf.DOBY(birth year) must be 4 digits,DOBM(birth month) between 1–12,DOBD(birth day) between 1–31.ST(state) andCOUNTRYmust be 2-character codes.
Troubleshooting common issues
- Authentication errors: re-run the Meta connection flow and make sure you complete every consent step, and that the Meta user still has access to the ad account.
- Ad account not appearing in the dropdown: confirm the ad account is part of the Meta account you authenticated with (
/me/adaccounts). - "Found multiple writable Meta audiences named ..." error: two or more
CUSTOMaudiences share the configured audience name in that ad account. Rename one of them in Meta, or choose a unique Audience name for the stream. - Stream not connected to a data contract: this destination requires a data contract on the stream; attach one of the contracts listed above before syncing.
- Audience not updating: verify the stream is pointed at the correct ad account and audience name, and that upstream
Added/Changed/Removedrows are actually being produced. - Identifier formatting and hashing issues: for
GEN,DOBY,DOBM,DOBD,ST, andCOUNTRY, make sure values meet the format rules above — invalid values fail the sync.
Hashing and normalization
- When
Apply hashing (SHA256)is enabled, Extract trims and lowercases email-style identifiers before hashing. - Phone identifiers are normalized by stripping non-digit characters and leading zeroes before hashing.
- If you choose
Source values are already hashed, normalize the values according to the rules above before hashing them upstream. - More detail: Identifier Hashing and Normalization.
Data Contract Information
custom_audience_email
Loading ....
custom_audience_mobile_advertiser_id
Loading ....
custom_audience_multikey
Loading ....
custom_audience_phone
Loading ....