Changelog

New features, improvements, and fixes.

Integration health checks, profile drill-downs, and list-property segments

Know when an integration breaks before your data does

Every integration now reports its own health. We check the connection on a schedule and surface the result as a status dot right in your integration list, so an expired API key or a revoked token shows up as a red dot instead of a string of silently failing syncs. Open any integration to see its full check history, or run a check on demand when you want an answer right now.

  • See healthy, warning, or error status at a glance across all your integrations

  • Read the exact error from the last failed check on the integration's Health tab

  • Trigger a manual health check anytime instead of waiting for the next scheduled run

  • Get alerted the moment a check fails with the new "Integration Health Check Failed" alert condition

Click any stat to see the profiles behind it

Dashboard and sync run numbers are now live links. Click "Total Profiles Synced" or "Total Errors" and you land on the matching sync runs, already filtered to the same date range. Hover a created or updated count on a run and you get a preview of the actual records, so you can confirm what moved without opening anything.

  • Jump from a dashboard stat straight to the runs that produced it

  • Filter sync runs by completion date and by error state

  • Preview the primary keys of created, updated, or failed records on hover

Build segments on list and multi-value fields

Segment conditions now understand properties that hold lists, not just single values. You can match profiles where a tags or roles field contains a specific value, or filter on whether a field has any value at all.

  • New operators: contains, not contains, is empty, is not empty

  • Target profiles by what's inside a multi-value property, like a tag or a role list

Sync your Chargebee subscription data

Chargebee is now a connected integration. Pull your subscription and customer data into unified profiles alongside everything else, with step-by-step setup for your site name and API key.

  • Connect Chargebee with a Full-Access API key

  • Expanded sync options across existing integrations, including list-based filtering, update jobs, and custom property creation on several connectors

Rejected records counted on their own and a specific missing-identity error

Tell rejected records apart from API errors in sync stats

Sync runs used to fold rejected records into the API error count, so a run with a few hundred profiles the destination refused to accept looked like a run with a few hundred broken API calls. Rejections are now their own counter alongside writes and errors. The writing step in a finished run reads "✓ 800 profiles written, 12 rejected, 3 errors" instead of one combined number, and the in-progress text now says "X of Y profiles processed" so the percentage reflects everything the sync has handled, not just the writes.

  • New rejected_profiles counter on every sync run, separate from api_error_count

  • Completed runs surface a per-category breakdown in the timeline instead of a single "written" total

  • Rejections grouped by error code in the run stats, so 50 rejections from one cause and 2 from another show as two entries

Identify records the destination dropped because the identity field was empty

When a profile reaches export without a value for the identity field you mapped, the sync now flags it with a dedicated "missing_identity" error code instead of the generic rejected_record bucket. The per-record message names the field that came up empty, like "Identity field 'email' was empty on source profile", and the run detail page surfaces the group with the action-required label and a link to your field mappings so you can pick a more reliable identifier.

  • Specific error code separates identity-field gaps from other rejections in the API Errors tab

  • Guidance text points straight at field mappings as the fix, not a generic "check your sync settings"

  • Live activity feed rows for failed and rejected results now display the error message inline when the record has no primary key to show

Braze as a sync destination, a one-step sync setup, and live alert rule controls

Sync customer profiles to Braze

Braze is now available as both a source and destination. You can push unified profiles into Braze as users, keep their custom attributes in sync as records change in your other tools, and read users back out of Braze when you need them on the other side. The connection takes a REST endpoint and API key from your Braze workspace, with the required permissions spelled out in the setup guide so you can scope the key correctly the first time.

  • Create, update, and upsert Braze users by external ID, email, or phone — no separate setup per identifier

  • Custom attributes, arrays, and nested objects map cleanly to and from Braze's user profile schema

  • Delete users from Braze when they're removed in the source, with the same controls you use for any other destination

  • Region-aware setup picks up your Braze REST endpoint (US, EU, AU, JP, KR) so workspaces in any region connect the same way

Pick a source and destination in one screen

The sync creation wizard used to make you walk through source selection and destination selection as separate steps. They're now a single screen with two cards side by side and an arrow between them, so the shape of the sync is visible from the moment you start. Open either card and a drawer slides in with the matching list of connected integrations.

  • One step instead of two, so you see what you're building before clicking through

  • Active card highlights when only one side is picked, so the next click is obvious

  • Continue button stays disabled until both sides are chosen, no half-configured drafts

  • Sync runs now live at a dedicated /runs URL under each sync, so a tab-shaped link works in bookmarks and Slack messages

Toggle and edit alert rules without leaving the rule

The alert rule detail page now has a switch in the header that turns the rule on or off in place, plus a three-dot menu for the rest of the actions. Editing opens a full edit page instead of a cramped dialog, so the form has room to breathe for rules with several conditions and notification destinations.

  • Inline enable/disable switch on the detail page with a tooltip that explains the current state

  • Full-page editor for alert rules, reachable from the menu or directly via URL

  • Cooldown values render as human-readable durations (5m, 1h) in the activity feed and edit form, not raw seconds

  • New rules start with sensible defaults (10% threshold, 30-second duration) so the form is ready to save with one field changed

Categorized API errors, a live activity feed, and faster sync setup from segments

See exactly which API errors broke a sync and what to do about them

Sync runs that hit destination API errors now show a dedicated "API Errors" tab on the run detail page. Errors are grouped by code, so a hundred "unauthorized" responses collapse into a single entry with the right next step instead of a flat log to scroll. Each group tells you whether the failure needs you (expired credentials, missing scopes, plan limits) or is being retried automatically, and links straight to the integration, billing, or sync settings page where you can fix it.

  • New "API Errors" tab appears when a run has any destination errors, with a count badge so you spot it without opening the run

  • Errors carry a human-readable message instead of a raw status code, plus first-and-last occurrence times so you can correlate with destination outages

  • Action-required errors surface a "Go to integration settings" or "Go to billing" link inline — no hunting through nav

  • Transient errors (rate limits, timeouts) are marked as retrying and don't get treated as failures unless they exhaust attempts

Watch profiles flow through a sync as it runs

The run detail page now has a live activity feed that streams each profile result as it lands, with a colored chip per operation (added, updated, deleted, rejected, failed). Click any row to expand and see the exact field changes the sync wrote to the destination. The feed pulses while a run is in progress and stops on its own when the run finishes.

  • New row animation when a result arrives, so you can tell at a glance that the sync is moving

  • Inline field-change view shows old and new values per property, not just "updated"

  • Operation totals update live next to the feed, so you don't have to refresh to see counts climb

  • Works on every sync, regardless of source or destination

Create a record type without leaving the sync wizard

Setting up a new sync from your unified profile no longer dead-ends if the record type you need doesn't exist yet. A dropdown at the source-record-type step now lets you create a new record type inline, and the wizard remembers the choice so you don't lose the rest of your setup. If the new type isn't person-like or company-like, the settings page now follows up with a prompt to link it to an existing record type so it shows up on profile pages.

  • Inline record type creation lives in the same dropdown you were already using

  • Plan limits are checked before the create, so you don't hit an error after filling out the form

  • A post-creation prompt offers to set up a relation field to Person or Company for non-merging types

  • Form state survives the create, so a wrong dropdown click no longer means starting over

Launch a sync from any segment or profile view

The Segments page and the Unified Profiles page now have a "Create Sync" entry point. Pick a segment, open the action menu, and the sync wizard opens prefilled with your unified profile as the source, the matching record type, and the segment already attached as a filter. The Segments table also shows the destinations a segment is already syncing to, with icons for each connected tool.

  • Action menu on each segment offers "Create Sync" with the segment ID, record type, and source preselected

  • "Create Sync" button on the Unified Profiles page picks up your current record type and segment filter

  • Disabled with a tooltip when you have no destination integration connected, so the call-to-action stays honest

  • New Destinations column on the Segments table shows which integrations a segment already feeds

Richer sync progress with sub-operations and an ETA

The step tracker on a running sync now breaks out a "Writing to Destination" step with a progress bar and an estimated time remaining. Each step also surfaces its sub-operations as you go, so you can see what the sync is actually doing inside a step instead of staring at a spinner.

  • Progress bar fills during the writing step and shows a rough ETA in seconds or minutes

  • Sub-operation lines appear under the active step (preparing batches, detecting changes, applying writes)

  • "Writing to Destination" is now its own step in the timeline instead of being folded into "Finalizing"

  • Works for every sync that touches a destination, not just specific integrations

Smaller improvements

  • Unified profile lists can now be sorted by number of connected sources, not just last update time

  • Integration lists in the sync wizard default to most-recently-created first, with your unified profile pinned to the top

  • Plain integration now supports tenants as a syncable record type, so you can push company-level data into Plain

  • The row-limit toggle in sync settings switched to a Switch control with a clear input for the cap, replacing the older checkbox-plus-text-field combo

Filter unified profile syncs by segment, sync PostHog cohorts, and a smarter onboarding checklist

Send only the segments you want to each destination

When you create or edit a sync from a unified profile source, you can now narrow the run to specific segments. Pick one or more saved segments, set each to include or exclude, and the sync only touches the profiles that match. Your CRM gets paying customers. Your churn-risk email tool gets the at-risk segment. Your warehouse keeps getting everyone. One unified profile, three different downstream cuts.

  • New "Segments" filter section appears on the sync form when the source is your unified profile

  • Toggle each chosen segment between "include" and "exclude" without leaving the form

  • Segment filters share the same condition budget as property filters, with a clear remaining-slots counter

  • Stale segments (deleted or renamed in the meantime) are flagged inline with a warning so a sync never silently changes scope

PostHog cohorts as a first-class record type

The PostHog SDK now treats cohorts as syncable records, so you can list, create, update, and delete PostHog cohorts the same way you handle people, events, and groups. Define an audience once in PostHog and it shows up alongside every other record type in Oneprofile. Cohort properties land in field mapping with the rest of your PostHog schema, so you can pipe an audience into your CRM, your warehouse, or your email tool without rebuilding it on the other side.

  • New cohort record type with full create / update / delete / list support

  • Bulk upsert for PostHog groups now batches up to 100 records per request

  • Custom and built-in property deletion is supported on PostHog people, events, and groups

  • Group property listing makes B2B field mapping cleaner

Onboarding checklist that catches up to your account

The setup checklist now reconciles itself against what's already in your account every time you open it. If you connected an integration, built a sync, or finished a run before the checklist noticed, those steps come back marked complete instead of nagging you to redo them. The widget caps at six visible items, so the list stays a real to-do list instead of a wall of green checkmarks.

  • Successful syncs into your unified profile mark the matching checklist item complete automatically

  • Items that depend on an earlier step show a lock icon with a tooltip explaining what to do first

  • Reconciliation runs on every read, so progress made anywhere in the product is reflected in the checklist

  • The integration creation flow refreshes the integration list immediately after you connect a new tool