Skip to main content

Profiles Sync

Profiles Sync copies user-level attributes from your data warehouse into a destination you control — a BigQuery table in your own project, or profiles/contacts upserted directly into Klaviyo or Brevo. You choose the users, the identifiers, and the attributes, and BPP keeps the destination in sync on a schedule.

What you can use Profiles Sync for​

  • Feed a CRM or CDP — export customer identifiers alongside enriched attributes (AI model scores, segments, lifecycle stage) so your CRM always has the latest profile data.
  • Activate AI model outputs — push predicted LTV, purchase propensity, RFM cluster, or interest scores into a table your other tools can query.
  • Share enriched profiles with BI — hand your analysts a ready-made table of user attributes without giving them access to the full warehouse.
  • Build downstream pipelines — point any BigQuery-based workflow at a stable table name that always holds the freshest export.

How Profiles Sync works​

Each sync is defined by four things:

  1. Keys — the identifier columns that identify each user (email, phone, hashed email, a CRM ID, or any user ID). At least one is required. Keys become columns in the exported table so downstream systems can match each row back to a person.
  2. Attributes — the actual data you want to export (a segment, a campaign name, a predicted probability, a total, and so on). These come from your own user-level tables: user tables, Features Composer results, and AI model results.
  3. Filters — optional conditions that decide which users are included (e.g., only users with probability > 0.1). If you set no filters, every user with data is included.
  4. Destination — the connection to sync into, plus destination-specific settings: for BigQuery, the target dataset and table name; for Klaviyo and Brevo, the list to sync matched profiles or contacts into.

You set all of this up in the platform UI, the same way you build an Audience. On each run, BPP applies your filters to find the matching users, reads the selected keys and attributes for those users, combines them into one row per user, and writes the result to your chosen destination.

What comes out​

The result is one row per matched user — your key columns first, then your attribute columns, each named exactly as you chose in the destination mapping.

emailsegmentpredicted_ltvpropensity
john@acme.comBest Customer240.500.42
…………

How that row lands in the destination depends on the destination type:

  • BigQuery — every run fully replaces the table, so the table name is a stable target your downstream systems can always point at and trust it holds the latest export.
  • Klaviyo / Brevo — every run upserts matched users as profiles/contacts (and adds them to the configured list). Users who no longer match your filters are left untouched — nothing is deleted or removed from a list. See the Klaviyo and Brevo destination pages for details.

What can be exported​

Profiles Sync produces one row per user, so every key and attribute must come from a user-level table — a table that holds at most one row per user. BPP enforces this, and the Keys and Attributes dropdowns only show fields that qualify.

Table typeCan be used?Why
User tablesYesOne row per user (emails, country, CRM ID, …).
AI model results / viewsYesOne per-user output per model (e.g., a churn probability).
Summary tablesYesPre-aggregated per-user rollups (e.g., total orders).
Event tablesNoMany rows per user — there's no single value to place in the user's row.

If you need something derived from events (e.g., "total events in the last 30 days"), that value has to already exist as a column on a summary or model table. Profiles Sync reads existing per-user columns; it does not aggregate event tables itself. See Data Preparation for how user-level tables are set up.

Profiles Sync lifecycle​

StatusWhat it means
DraftConfigured but not yet enabled. No syncs run.
ReadyEnabled and scheduled. BPP syncs on its daily schedule.
RunningA sync is currently in progress.
CompleteLast sync completed successfully.
Partial CompleteSync completed but some rows failed to write.
ErrorThe sync failed. Check the sync for details.
SuspendedPaused by you. No syncs run until re-enabled.

In this section​