Skip to content

Seen

Seen enables brands to create and deliver personalized video experiences at scale. With Seen, you can design a video around your data, personalize it at scale in the cloud, then distribute it where it works best.

The Braze and Seen integration lets you send user data from Braze to Seen, dynamically generate personalized videos, and return video assets—such as a unique player URL and thumbnail—back into Braze for use in campaigns and Canvases.

Use cases

Seen supports automated, personalized video delivery across the customer lifecycle, including:

  • Onboarding: Welcome new users with videos personalized to their profile or signup context
  • Conversion and activation: Reinforce key actions with contextual video messaging
  • Loyalty and upsell: Highlight personalized offers or usage milestones
  • Win-back and churn prevention: Re-engage inactive users with tailored video content

Prerequisites

Before you begin, you need the following:

How Seen Journeys work

Seen uses Journeys to control how incoming data is processed and how video outputs are generated.

A Journey is a configurable workflow that:

  • Receives data from external systems (such as Braze)
  • Applies logic and personalization rules
  • Generates a video and associated assets
  • Returns a configurable response payload

Journeys are composed of nodes, each with a specific function:

  • Trigger node: Defines how and when a Journey starts (for Braze integrations, use an On Create trigger)
  • Conditional node: Routes users through different logic paths based on data values
  • Project node: Applies dynamic video personalization using the incoming data
  • Player node: Generates a unique video player URL
  • Webhook node: Defines the response payload sent back to Braze

Because Journey responses are configurable, ensure the output fields returned by Seen match the attributes expected by your Braze Data Transformation.

Rate limit

The Seen API accepts up to 100 calls every 10 seconds.

Integration

In this example, Braze sends user data to Seen to generate a personalized video. Seen then returns a unique video player URL and thumbnail URL, which are stored as custom attributes in Braze for use in messaging.

If you have multiple video campaigns with Seen, repeat the process to connect Braze with all video campaigns.

Step 1: Create a webhook campaign to send data to Seen

Create a new Webhook Campaign in Braze.

Configure the webhook as follows:

  • Webhook URL:
    https://next.seen.io/v1/workspaces/{WORKSPACE_ID}/data
    Find your Workspace ID in the Seen Platform settings.

  • HTTP Method: POST
  • Request body: Raw Text
    Use the following example as a starting point. Refer to Seen’s data creation documentation for further information.
1
2
3
4
5
6
{
  "first_name": "{{${first_name}}}",
  "last_name": "{{${last_name}}}",
  "email": "{{${email_address}}}",
  "id": "{{${braze_id}}}"
}
  • Request headers:
    • Authorization: Bearer {Seen_API_TOKEN}
    • Content-Type: application/json

    Generate an API token in the Seen Platform under Workspace settings. You can reach out to your Seen Customer Success Manager for assistance.

  • To test the webhook with a user, switch to the Test tab.
  • After confirming the test works as intended, complete the webhook setup.

Step 2: Configure a Journey in the Seen Platform

Seen uses Journeys to define how incoming data is processed, personalized, and returned to Braze.
Each Journey is a configurable workflow composed of nodes that let you control both video generation logic and the response payload.

To configure your Journey:

  1. Create a new Journey in the Seen Platform
  2. Add a Trigger node and select the On Create trigger
    This ensures the Journey starts when Braze sends data to Seen. Create and add any segmentation logic within your workspace if needed.
  3. Build your logic using the following nodes as needed:
    • Conditional node: Route users based on attribute values (for example, plan type or region)
    • Project node: Apply dynamic video personalization using the incoming data
    • Player node: Generate a unique video player URL
  4. Add a Webhook node to define the response sent back to Braze

Webhook node response requirements

Because the response payload is configurable, ensure the following fields are returned to support the Braze Data Transformation described in the next step:

If your use case requires additional attributes, include them in the response and map them in Braze.

Step 3: Create a Data Transformation to receive data from Seen

Use Braze Data Transformations to ingest the Seen Journey response and store video assets on the user profile.

  1. Create the following custom attributes in Braze:
    • player_url
    • email_thumbnail_url
  2. Navigate to Data SettingsData Transformation and click Create transformation
  3. Configure the transformation:
    • Start from scratch
    • Destination → POST: Track users
  4. Share the generated webhook URL with Seen, or add it directly to the Journey Webhook node
  5. Use the following transformation code:
1
2
3
4
5
6
7
8
9
10
11
let brazecall = {
  "attributes": [
    {
      "braze_id": payload.id,
      "_update_existing_only": true,
      "player_url": payload.player_url,
      "email_thumbnail_url": payload.email_thumbnail_url
    }
  ]
};
return brazecall;
  1. Send a test payload to the provided endpoint. Send data to Seen Platform to run your Journey, or send the payload directly to Braze with Postman or another similar service.
  2. Select Validate to ensure everything works as intended.
  3. Select Save and Activate.
New Stuff!