Skip to content

Braze

Braze is a customer engagement platform used to orchestrate cross-channel messaging campaigns and analyze customer behavior.

ingestr supports Braze as a source.

URI format

braze://?api_key=<rest-api-key>&endpoint=<rest-endpoint>

URI parameters:

  • api_key is a Braze REST API key with access to the relevant export endpoints. You can create one in the Braze dashboard under Settings → APIs and Identifiers.
  • endpoint is your instance's REST endpoint host, e.g. rest.iad-01.braze.com. Braze is multi-instance, so the host depends on which cluster your account is on — find it in the dashboard or in the API overview. The https:// scheme is optional.

Here's a sample command that copies campaigns from Braze into a DuckDB database:

sh
ingestr ingest \
  --source-uri "braze://?api_key=YOUR_REST_API_KEY&endpoint=rest.iad-01.braze.com" \
  --source-table "campaigns" \
  --dest-uri duckdb:///braze.duckdb \
  --dest-table "public.campaigns"

Tables

Braze source allows ingesting the following resources into separate tables:

TablePKInc KeyInc StrategyDetails
campaignsidlast_editedmergeMarketing campaigns (including archived) with their name, tags, and API flags.
canvasesidlast_editedmergeCanvas (journey) definitions (including archived) with their name and tags.
segmentsidreplaceAudience segments with their name and analytics-tracking flag.
eventsevent_namereplaceNames of the custom events tracked in the workspace.
productsproduct_idreplaceProduct IDs seen in purchase events.
kpi_dautimetimemergeDaily active users by date.
kpi_mautimetimemergeMonthly active users (rolling 30-day) by date.
kpi_new_userstimetimemergeNew users by date.
kpi_uninstallstimetimemergeApp uninstalls by date.

Use these as the --source-table parameter in the ingestr ingest command.

Per-app KPIs

By default the kpi_* tables aggregate across all apps in the workspace. To break a KPI down by app, append a comma-separated list of app identifiers (found in the Braze dashboard under Settings → APIs and Identifiers) to the table name:

--source-table "kpi_dau:app-one-id,app-two-id"

Each row is then tagged with an app_id column. This is only supported on kpi_* tables.

Incremental loading

campaigns, canvases, and the kpi_* tables load incrementally — use --interval-start and --interval-end to limit the data to a time range. When no interval is provided, the list tables fetch all records and the KPI tables fetch the most recent 100 days. The segments, events, and products tables are always fully refreshed.