Skip to content

Import users

Learn about Braze’s various user import options, like CSV import, REST API, Cloud Data Ingestion, and more.

Import options

You can upload user attributes and events through a CSV import in Braze, a serverless S3 Lambda CSV import script, direct API calls, or Cloud Data Ingestion from your data warehouse.

Braze CSV import

You can use CSV import to record and update the following user attributes and custom events. To get started, see CSV Import.

Constructing your CSV

Braze accepts user data in standard CSV format. Default and custom attribute imports support files up to 500 MB; custom event imports support files up to 50 MB. For identifiers, column headers, validation rules, and examples, see CSV import.

When you upload a large CSV through Import Users in the dashboard, the page may appear unresponsive or respond slowly while Braze receives the file and runs the calculation step. Let the upload and calculation finish—total time ranges from a few minutes to a few hours depending on file size, and larger files take longer to calculate.

Lambda user CSV import

Use our serverless S3 Lambda CSV import script to upload user attributes to Braze. This solution works as a CSV uploader where you drop your CSVs into an S3 bucket, and the scripts upload it through our API.

Estimated execution times for a file with 1,000,000 rows should be around five minutes. See User attribute CSV to Braze import for more information.

REST API

Use the /users/track endpoint to record custom events, user attributes, and purchases for users.

Cloud Data Ingestion

Use Braze Cloud Data Ingestion to import and maintain user attributes.

HTML validation

Keep in mind that Braze does not sanitize, validate, or reformat HTML data during import, meaning script tags must be removed from all import data you use for web personalization.

When importing data into Braze that is specifically meant for personalization usage in a web browser, ensure that it is stripped of HTML, JavaScript, or any other script tag that potentially could be leveraged maliciously when rendered in a web browser.

Alternatively, for HTML, you can use Braze Liquid filters (strip_html) to strip HTML from rendered text. For example:

1
{{ "Have <em>you</em> read <strong>Ulysses</strong>?" | strip_html }}
1
Have you read Ulysses?
New Stuff!