Before you begin
- Set up the Conversion HTTP Request destination using the contact sync guide.
- Create a static audience in Conversion and copy its audience ID from the URL.
- Choose a Hightouch audience, or a model containing its members, with one row per contact and a stable, unique primary key. Hightouch uses this key to detect who joins or leaves.
- If sending fields, create them in Conversion first and use their writable keys from List Fields.
Sync membership for existing contacts
Use this when your contacts already exist in Conversion and another integration manages their fields.
Replace
AUDIENCE_ID with the Conversion audience ID. Leave Rows changed disabled. Use this JSON payload for both triggers, replacing row.email with your email column:
Create or update contacts and sync membership
Use Batch Upsert Contacts to save contacts and add them to the audience in the same request.
For added and changed rows, set the batch size to 100 (maximum 1,000) and use the JSON editor:
AUDIENCE_ID with the Conversion audience ID and the column names with your own. Preview the rendered payload before saving.
New contacts are created; existing contacts receive the fields you send. Successfully saved contacts are added to the audience without removing other members. Set updateOnly to true to update and add existing contacts only; missing contacts then return an error. Your API key needs contact create and edit permissions and edit access to the audience.
For removed rows, use the single-row email payload from the membership-only setup above.
Removals and matching
Remove Contact from Audience removes membership from this audience only. The contact, other memberships, and subscription status stay unchanged. Repeating a removal succeeds even if the contact or membership is already absent. These examples match by email. If emails can change, use a stablecnvContactId available in your source for both additions and removals. The membership-only endpoints also accept an existing contact’s userId.
Handling errors
Batch requests return HTTP200 with per-contact outcomes in data.results and a failure count in data.failed. An audience_add_failed result means the contact was saved but its membership could not be confirmed. These failures need response-aware retry handling; Hightouch’s HTTP-error retries do not catch errors inside a 200 response.