How To Send Data From Your Python App to Braze

In today's data-driven landscape, the integration of powerful marketing automation platforms like Braze with versatile programming languages like Python can unlock significant value for businesses, helping them deliver more personalized and effective customer engagement strategies.

This article serves as a comprehensive guide for developers and data professionals, detailing the step-by-step process of leveraging Braze's REST API to send data from a Python application to Braze. By the end of this guide, you'll be well-equipped to orchestrate automated data flow from your Python application to Braze, allowing for efficient data collection, analysis, and the creation of data-driven marketing campaigns.

In this article, we will explore the basics of Python and Braze, how to set up your Python environment, and how to integrate Python with Braze. We will also walk through the process of writing Python code to send data to Braze. But first, let’s cover the basics of Python and Braze.

Understanding the Basics of Python and Braze

Before we jump into the technical details, let's briefly discuss what Python and Braze are.

What is Python?

Python, a programming language famed for its simplicity and readability, was developed by Guido van Rossum and released in 1991. Python is widely utilized across various fields including web development, data analysis, machine learning, and automation because of the strong emphasis on code readability in its design philosophy. Its user-friendly syntax, extensive standard library, and large ecosystem of third-party packages make Python an excellent choice for both novice and experienced programmers. Furthermore, Python's versatility allows it to be used for diverse applications, from small scripts to large-scale projects, and its ability to integrate with other languages and tools contributes to its popularity in building complex software systems.

What is Braze?

Braze, founded in 2011, is a robust customer engagement platform designed to facilitate personalized and targeted messaging campaigns. It offers a suite of features for user data management, segmentation, and analytics. It supports various communication channels like email, mobile and web push notifications, in-app messages, and SMS.

The data-driven platform allows businesses to collect customer information, devise highly targeted campaigns, track their performance, and continuously optimize their messaging strategies. Moreover, Braze's integration capabilities with other tools such as CRM systems, marketing automation platforms, and data analytics tools, streamlines the customer engagement process.

Combining Python's versatility with Braze's comprehensive functionalities empowers developers and businesses to build sophisticated, personalized customer experiences.

Integrating your Python application with Braze: Use cases

Sending events and data from a Python application to Braze opens a wealth of opportunities for businesses to enhance their customer engagement strategies. With real-time data collection and analysis, businesses can monitor user interactions and build detailed user profiles with custom attributes. This data can be leveraged to create targeted marketing campaigns, enhance user segmentation, and trigger personalized messages based on specific user activities.

Moreover, by automating campaign management and testing via Python, businesses can continuously optimize their strategies. Integration also allows businesses to synchronize their data across different platforms and databases, feeding it into Braze for more unified customer insight. Lastly, data sent to Braze can be used alongside Python's machine-learning capabilities for predictive analytics and personalization.

Introduction to Braze API

The Braze API allows developers to programmatically interact with Braze and perform various operations, such as sending messages, updating user attributes, and retrieving analytics data. This opens up a world of possibilities for businesses to automate and personalize their customer engagement strategies. Before we can start using the Braze API, it is important to understand its key concepts and set up the necessary configurations.

Understanding Braze API

The Braze API is based on RESTful principles, making it simple and intuitive to use. It provides endpoints for different functionalities, allowing us to interact with Braze programmatically. These endpoints enable us to create and manage campaigns, segment users, track events, and much more. To access the Braze API, we need to obtain an API key, which authenticates our requests. This key acts as a secure token that ensures only authorized users can interact with Braze programmatically.

Additionally, we may need to configure webhooks and listeners to receive and process Braze events. Webhooks are HTTP callbacks that are triggered by specific events in Braze, such as when a user is created or when a message is sent. By setting up webhooks, we can receive real-time updates and trigger immediate actions based on these events. Listeners, on the other hand, are responsible for processing these webhook events and executing custom logic. They can be implemented as serverless functions, microservices, or any other suitable architecture.

Setting Up Braze API

To set up the Braze API, follow these steps:

  1. Log in to your Braze dashboard and navigate to the Developer Console. This is where you'll find all the tools and resources needed to work with the Braze API.
  2. Create a new API key or use an existing one. The API key acts as a secret token that authorizes your requests. It is important to keep this key secure and avoid sharing it publicly. Make sure that you select the necessary permissions for the API according to the features you want to access via Braze API.
  3. Configure webhooks and listeners if necessary to receive and handle Braze events. Webhooks allow you to receive real-time updates on user activities, while listeners process these events and trigger custom actions. Setting up webhooks and listeners can greatly enhance your ability to automate and personalize your customer engagement strategies.

You can learn more about Braze API from official Braze API docs, it has documentation of the various endpoints available in the API and shares steps on how to use them properly.

With the Braze API set up, we can now proceed to Braze integration with Python. We will send HTTP requests from Python to Braze APIs. By leveraging Python's extensive libraries and frameworks, we can easily automate various tasks and build sophisticated marketing campaigns.

Integrating Python with the Braze API

In order to send data from Python to Braze, we simply need to send HTTP requests to the appropriate REST API endpoint of Braze API. Here's what we need to do:

Setting up Python to connect with Braze API

To connect Python to Braze, we will use the requests library, a popular package for making HTTP requests. In your Python project, install the requests package by running the following command:

pip install requests

Once the package is installed, we can use it to send HTTP requests to the Braze API.

Sending customer data from Python to Braze

To send data from Python to Braze, we need to construct the appropriate HTTP request and include the necessary information. This may include user attributes, event data, and any additional metadata required by Braze. We can then use the requests library to send the request to the Braze API endpoint.

For the purpose of this tutorial, we are going to send some events to Braze via `/users/track` endpoint. This endpoint is used to record custom events, purchases, and update user profile attributes. Here’s an example of updating user profile attributes in Braze from Python code:

import json
import requests
# Your Braze API Key
api_key = 'your_braze_api_key'
# Your Braze REST API URL
api_url = ''
# The data to send to Braze
data = {
'attributes': [
'external_id': '123456789', # the user's external ID
'name': 'John Doe', # the user's name
'email': '' # the user's email
'events': [
'external_id': '123456789', # the user's external ID
'name': 'purchase', # the event name
'properties': { # the event properties
'product_id': '123',
'quantity': 2
# Send the POST request
response =
headers={ 'Content-Type': 'application/json', ‘Authorization’: ‘Bearer ’+ api_key },
# Check the response
if response.status_code == 201:
print('Successfully sent data to Braze')
print('Failed to send data to Braze', response.text)

Replace '


' with your actual Braze API key, and be sure to use the correct REST API URL for your Braze instance. API key is the only authentication we use here.

This script will update the attributes of the user with external ID '123456789' (creating the user if they do not already exist) and record a 'purchase' event for this user. The event properties include a 'product_id' of '123' and a 'quantity' of 2. The user's 'name' and 'email' attributes are set to 'John Doe' and '', respectively.

This code demonstrates a simple scenario where we send user data and an event to Braze. However, you can customize and extend this code to meet your specific requirements. It's important to handle errors and validate the response to ensure successful data transfer. You will also need to deal with the different rate limits that Brazes imposes on different endpoints. Check out RudderStack's Python App to Braze integration.

Make sure to check out Braze docs for various Braze API endpoints available that can enable functionalities including sending messages to users, and managing email subscription status.

If you need to send data from Braze to your Python app, you can create a Braze API webhook and configure Braze to send data to a particular endpoint on a particular instance such as a user unsubscribing email. Then you can configure your Python app to listen to this webhook and receive the needed data to action on events like user unsubscribed from email.


The ability to send data from your Python application to Braze not only broadens the scope of your marketing automation capabilities but also leverages the power of personalized, data-driven customer engagement strategies. This guide has demonstrated how to use Braze's REST API to transfer data between a Python application and the Braze platform.

Integrating Python with Braze enables you to effectively manage user data, design and execute targeted campaigns, track performance, and gain crucial insights. Remember that, while this tutorial has covered the fundamentals, the possibilities for data interchange between Python and Braze are expansive. As you continue to delve deeper, you will uncover more sophisticated ways to enhance your customer engagement strategies by using the combined power of Python and Braze.

Don't want to go through the pain of direct integration? RudderStack's Python SDK makes it easy to send data from your Python app to Braze.