Lesson
Introduction to Webhooks
Most of the time, when you’re sending a message in Braze, you’re sending it directly to one of your end-users. You’re emailing them a new deal, or sending a newsflash via push. Sometimes, however, you need to communicate directly with other computer systems. While most Braze messages speak to people, webhooks speak to servers.
A webhook is an electronic message that you send via Braze to trigger an action in another computer system. You can use webhooks to trigger direct mail sends, to sync your data across systems, or send messaging on less common channels not yet supported by Braze. Webhooks can be a key component in building real-time, responsive messaging across a large tech stack.

Ways to Use Webhooks
Webhooks are extremely flexible and their uses are limited only by the power of the systems you’re communicating with. You can send webhooks just like any other message, using campaigns or Canvas message steps. The most common uses for webhooks include:
- Communicating on Non-Native Channels
- Sending direct mail.
- Messaging with up-and-coming apps that Braze doesn’t yet support natively.
- Syncing audiences with smaller social media systems.
- Communicating with AI agents.
- Triggering Other Systems
- Initiating a customer service call after a bad review.
- Unlocking content after a user accepts a deal.
- Triggering a refund from another system.
- Syncing Data to External Systems
- Updating loyalty points across systems.
- Syncing in-game coin balance based on a user’s activity.
- Updating subscription status in backend systems.
Case Study: Webhooks for CRM Leads
In the following video, learn how a major insurance company used Braze and webhooks to connect leads to sales representatives in real time:
Open the folded section below for more information on how you might implement this type of flow:
Implementation details
While implementing this use-case will vary based on your setup, the following are key components that will be used in most cases:
- Add a message to solicit user interest to the appropriate place in your Canvases.
- Add an Action Path to separate users who respond positively from users who do not want to be contacted.
- For the users who do want to be contacted, add a User Update step. This step would look like the following:
{ "events": [ { "external_id": "{{${user_id}}}", "name": "agreed_to_call", "time": "{{'now' | date: '%Y-%m-%dT%H:%M:%S%z'}}", "properties": { "canvas_name": "{{canvas.${name}}}" } } ] } - Create a new Canvas. In the Entry Schedule step, make the Canvas action-based, and the trigger Perform Custom Event. Choose the name of your custom event that was generated in the User Update step.
- The Target Audience should exclude users who do not have a phone number.
- Users should be re-eligible for outreach, since a user may have more than one reason to request sales support
- Within the Canvas, create a webhook that connects to your CRM, using their documentation to design the webhook. Pass the appropriate details in the webhook body. It may look something like this:
{"FirstName": "{{${first_name} | default: 'Valued'}}", "LastName": "{{${last_name} | default: 'Customer'}}","Phone": "{{${phone_number}}}","Company": "HomeHaven Personal Accounts", "LeadSource": "{{context.${source_canvas}}}", "Status": "Open - Priority", "Description": "User agreed to be contacted. Please contact immediately."}