SegmentAudience SyncsOverview

Audience Syncs

Audience syncs are the activation layer of Segment. They take an audience — a segment of customers defined by filter conditions — and send the membership list to a destination like an ad platform, CRM, email tool, or data warehouse.

What Is an Audience Sync?

An audience sync connects an audience to a destination and manages the flow of membership changes over time. Unlike model-based syncs that map arbitrary columns, audience syncs are purpose-built for managing membership lists — tracking which customers enter and exit the audience on each evaluation.

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│              │     │              │     │              │
│   Audience   │────▶│ Audience     │────▶│ Destination  │
│ (Membership  │     │  Sync        │     │ (Ad Platform,│
│   List)      │     │ (Diff & Send)│     │  CRM, etc.)  │
│              │     │              │     │              │
└──────────────┘     └──────────────┘     └──────────────┘

On each sync run, SignalSmith compares the current audience membership to the previous membership and determines:

  • Adds — Entities that newly entered the audience since the last sync
  • Removes — Entities that left the audience since the last sync
  • Updates — Entities whose synced field values changed (if sending additional fields beyond the entity key)

How these changes are propagated to the destination depends on the sync mode.

Key Concepts

Membership Diffing

SignalSmith maintains a snapshot of the audience membership after each sync run. On the next run, it compares the current membership to the snapshot to compute the diff. This means only the changes are sent to the destination, not the entire membership list — keeping sync runs fast and efficient.

Sync Modes

Three sync modes control how membership changes are handled:

ModeAddsRemovesUse Case
MirrorYesYesKeep the destination in exact sync with the audience
AdditiveYesNoOnly add new members, never remove
SubtractiveNoYesOnly remove members who no longer qualify

Field Mapping

Beyond the entity key, you can map additional fields (traits and attributes) to send to the destination. For example, you might sync a “High-Value Customers” audience to a CRM and include lifetime_value, email, and plan_type as additional fields.

Field mappings are configured during audience sync creation.

Scheduling

Audience syncs run on a schedule, just like model-based syncs. The schedule determines how frequently membership changes are sent to the destination. Available options:

ScheduleDescription
ManualOnly runs when you trigger it
Every 15 minutesNear-real-time activation
HourlyFrequent activation
DailyStandard activation cadence
WeeklyLow-frequency activation
Custom CronFine-grained scheduling

The audience sync schedule should be the same as or slower than the audience evaluation schedule. There’s no benefit to syncing every hour if the audience is only evaluated once a day.

Audience Sync Lifecycle

1. Create

Create an audience sync by selecting an audience, a destination, a sync mode, and field mappings.

2. Initial Sync

The first sync run sends the full current membership to the destination (all members are treated as adds). No diff is computed for the initial run.

3. Incremental Syncs

Subsequent runs compute the membership diff and send only the changes. The sync mode determines which types of changes (adds, removes, or both) are propagated.

4. Monitoring

Each sync run is recorded with:

  • Status — Success, partial failure, or error
  • Rows added — Number of new members sent
  • Rows removed — Number of departed members sent
  • Rows updated — Number of members with changed field values
  • Duration — How long the sync took
  • Error details — If any rows failed, the specific errors are logged

5. Pausing and Resuming

You can pause an audience sync to stop scheduled runs without deleting the configuration. When resumed, the next run computes the full diff since the last successful run.

API Reference

# List audience syncs
GET /api/v1/audience-syncs
 
# Get a single audience sync
GET /api/v1/audience-syncs/{id}
 
# Create an audience sync
POST /api/v1/audience-syncs
 
# Update an audience sync
PUT /api/v1/audience-syncs/{id}
 
# Delete an audience sync
DELETE /api/v1/audience-syncs/{id}
 
# Trigger a manual sync run
POST /api/v1/audience-syncs/{id}/trigger
 
# Get sync run history
GET /api/v1/audience-syncs/{id}/runs

Next Steps