ServicesSalesforce consultingArchitectureImplementationOrg health checkDevelopmentIntegrations and APIsData migrationTesting and QAManaged supportSpecialist supportMarketing Cloud auditDeliverability
SolutionsMarketing Cloud EngagementMarketing Cloud NextSalesforce + BrazeAccount EngagementData Cloud (Data 360)Identity resolutionInsights and segmentsAgentforce and AIMCP integrationsSales and Service CloudReal-time personalisationIntegration solutionsEnterprise AI integrationBy industry
ArchitectureSalesforce CRMData 360Salesforce + BrazeAgentforceCustomer 360API-led integrationEvent-drivenMCP host, client and serverIdentity and consentMCP securityData governanceCI/CD and releasesOur public MCP server
ResourcesEngineering journalDecision guidesSolution blueprintsSalesforce productsProjects and achievementsSales ROI calculatorWhere we workChecklists and templatesPlanning toolsReadiness assessmentGlossaryAbout GeekMidstOur approachContact
CompanyAbout GeekMidstOur approachDelivery methodologyTrust and evidenceProjectsAchievementsBook a consultationContactWhere we workSecurity and data
Book a Consultation

Braze Data Activation

The documented ways to move data into and out of Braze, with their limits and latency, and how Salesforce and Data 360 data reach Braze through an integration layer.

Type
Solution
Topic
Braze
Reading time
5 min
Updated
Author
GeekMidst Team
Reviewed by
Site owner
Banner for the GeekMidst solution “Braze Data Activation”, covering The business problem and Getting data into Braze

A Braze journey is only as good as the data behind it. Braze offers several documented ways to bring data in and several to send engagement data out, each with its own limits and latency. This page compares them and shows where Salesforce CRM and Data 360 fit. Every pattern here is a reference design; we validate APIs, packaging and permissions for each implementation.

The business problem

Teams often start with one path, usually the REST API, and use it for everything: bulk backfills, real-time events and nightly attribute refreshes. That runs into rate limits and makes failures hard to replay. Picking the right path per data type is cheaper and more reliable.

Getting data into Braze

Ways in

PathBest forDocumented limits and notes
REST /users/trackServer-side attributes, events and purchasesNeeds the users.track permission. Up to 75 objects per request combined. Burst limit of 3,000 requests per three seconds for data-point pricing; otherwise set by contract
Braze SDKsApp and web behaviourWeb, Android, Swift, Cordova, FireOS, Flutter, React Native, Roku, Unity, .NET MAUI (Xamarin), TV and OTT
Cloud Data IngestionWarehouse or storage data on a scheduleSnowflake, Redshift, Databricks, BigQuery, Microsoft Fabric, S3, Azure Blob Storage, Google Cloud Storage. As often as every 5 minutes (dashboard default minimum 15) or as rarely as monthly
Connected SourcesQuerying a warehouse without copyingBraze's zero-copy option
CatalogsProduct, account or content data for personalisationCSV or API; up to 500 MB on the free tier, Catalogs Pro offers more
CDP and reverse ETL partnersTeams already running oneBraze lists Segment, mParticle by Rokt, Tealium and Hightouch; Census and Hightouch for reverse ETL

Identifiers decide what happens on write

In /users/track, the primary identifiers are external_id, user_alias and braze_id, one per object; email and phone are secondary lookups. A primary identifier that matches no profile creates a new one. Purchases use reserved keys (product_id, price, currency, time, quantity), and refunds are logged as negative prices. CDI can sync attributes (including subscription statuses), custom events, purchases, user deletes, catalog items and Canvas triggers.

Getting data out of Braze

Ways out

PathWhat it deliversNotes
Currents"A real-time data stream of your engagement events" in AvroDestinations include S3, Google Cloud Storage, Azure Blob Storage, several CDPs and analytics tools, and a Custom HTTP Connector. No Salesforce destination is listed. Included in many pro and enterprise packages, per Braze
Snowflake Data SharingA read-only share into your Snowflake accountBraze hosts it in specific AWS regions and supports others for joint customers
/users/export/idsProfiles for up to 50 IDs per request250 requests per minute for workspaces onboarded on or after 22 Aug 2024
/users/export/segmentNewline-delimited JSON files, about one per 5,000 usersTo your S3, Azure or GCS bucket, or a ZIP link valid for a few hours; one export per segment at a time

From Salesforce and Data 360

Neither Salesforce CRM nor Data 360 has a Braze connector documented by either vendor, so data flows through something you run. Two patterns cover most needs:

  1. Event-driven. Salesforce Change Data Capture or Platform Events go to an integration layer, such as MuleSoft or another iPaaS, which calls /users/track. Use this when a change must reach Braze within minutes.
  2. Warehouse-centred. CRM and Data 360 data land in a warehouse, and Braze CDI syncs from it. Use this for bulk attributes and anything that tolerates a scheduled refresh.

Data 360 specifics, including activations and data actions, are on Data 360 and Braze.

Security boundaries

Create one Braze REST key per integration, with only the endpoint permissions it needs; Braze does not let you edit a key's permissions or IP allowlist after creation, so plan to rotate rather than edit. Exports land in your storage, so apply your own access controls and retention there.

Failure handling and monitoring

Read the X-RateLimit-Remaining header and back off on 429. Keep failed batches for replay. Note that /users/merge results are not reflected in Currents or Messaging History, except for Snowflake-powered features, so downstream analytics need their own merge handling. Monitor CDI run results, API error rates and the gap between source and Braze counts.

Prerequisites and limitations

Currents connectors and Catalogs Pro depend on your Braze package; confirm Snowflake Data Sharing availability and region with Braze. Rate limits other than /users/track often fall in a shared default of 250,000 requests per hour; check the Braze limits page for each endpoint you use.

Implementation stages

  1. 01

    Inventory data

    List each attribute and event, its source, owner and freshness need.

  2. 02

    Pick a path per data type

    SDK for behaviour, /users/track for urgent changes, CDI for bulk.

  3. 03

    Define identifiers

    Agree the external_id and aliases before loading anything.

  4. 04

    Build and backfill

    Backfill through CDI or batched API calls, then switch on incremental feeds.

  5. 05

    Set up exports

    Configure Currents to your storage or analytics tool, or Snowflake Data Sharing to your Snowflake account.

  6. 06

    Monitor

    Track lag, errors and count parity.

Questions we hear

Is CDI real time?
No. Warehouse syncs run on a schedule, as often as every 5 minutes; file-storage sources are event-driven, and syncs can be triggered on demand through the API. For faster updates use the SDK or /users/track.
Can we avoid copying warehouse data into Braze?
Braze documents Connected Sources as a zero-copy option that queries the warehouse.
How do we get Braze engagement data into Salesforce?
Through your own layer: Currents to storage or the Custom HTTP Connector, then summarised into CRM.

Plan your Braze data flows

Tell us what data Braze needs and where it lives. We can recommend a path for each data type and plan the build.

Book a consultation →

Tell us what you are trying to fix.

Share your Salesforce setup, goals and constraints. A practitioner reads every message and replies with questions, first thoughts or an honest view of whether you need outside help at all.

Talk to a Salesforce Expert
Book a Consultation