Skip to content

VideoSmart

VideoSmart provides personalized, interactive video technology that enables you to deliver data-driven, non-linear content at scale. Each video is dynamically generated using customer-level data, allowing for tailored messaging and user journeys within a single video experience.

The VideoSmart integration allows you to embed personalized video content in email campaigns by using Braze Connected Content and Liquid templating to request video assets from VideoSmart. This integration is typically implemented through a reusable Braze Content Block template, enabling consistent deployment across campaigns while allowing flexibility in campaign selection and personalization logic.

This integration is developed and maintained by VideoSmart.

About this integration

VideoSmart integrates with Braze to dynamically generate personalized video assets at send time, which are then embedded directly into your Braze campaign and Canvas email content.

In Braze, you select the relevant VideoSmart campaign and pass customer attributes (through Liquid templating) to VideoSmart when you send. These attributes are used to render a unique, personalized video experience for each recipient. You can then use Braze Connected Content to request video URLs or assets from VideoSmart’s API in real time, enabling scalable personalization.

This integration is designed for Braze email messages that support Liquid templating and Connected Content, and can be configured to work with standard Braze user profile attributes or custom data fields.

Use cases

Common use cases include the following:

  • Customer onboarding and welcome journeys
  • Financial education (such as pensions and insurance policies)
  • Annual statements and regulatory communications
  • Product awareness and cross-sell campaigns
  • Customer retention and re-engagement campaigns
  • Abandoned cart reminders: When a customer adds products to their cart but doesn’t purchase, you send an email with a personalized video that highlights the items they left behind
  • Post-purchase follow-ups: After a purchase, send a personalized thank you video and recommend related products

Prerequisites

Before you start, confirm you have the following:

Integration

Follow these steps to enable the VideoSmart Content Block and use it in an email.

Step 1: Set up the VideoSmart Content Block template in Braze

Request the VideoSmart Content Block template from your VideoSmart representative and add it to your Braze dashboard.

VideoSmart will provide credentials for the Connected Content authentication used by the Content Block.

Step 2: Set up Connected Content authentication

Create a Connected Content Basic Authentication credential in Braze named “basic_credentials”.

Step 3: Add the Content Block to your email

Insert the VideoSmart Content Block into your email where you want the video content to appear.

In most Braze setups, Content Blocks are referenced using the following pattern (replace “VideoSmart_Campaign” with the name of the Content Block in your account):

{{content_blocks.${VideoSmart_Campaign}}}

Step 4: Override campaign and record data (optional)

If your Content Block supports defaults, you can use it without setting any variables.

If you need to choose a specific VideoSmart campaign, pass custom personalization fields, or do both, set the following Liquid variables before rendering the Content Block:

  • vs_campaign_id: VideoSmart campaign identifier
  • vs_record_data: a JSON string containing the values you want to pass into the VideoSmart template

Example

This example uses Braze user attributes for the first name and last name:

1
2
3
4
5
6
7
8
9
{% assign vs_campaign_id = "CAMPAIGN_ID" %}

{% capture vs_record_data %}
{
  "FirstName": "{{ ${first_name} | default: 'John' | json_escape }}",
  "LastName": "{{ ${last_name} | default: 'Doe' | json_escape }}"
}
{% endcapture %}
{% assign vs_record_data = vs_record_data | strip_newlines %}

Step 5: Use the variables generated by VideoSmart’s Content Block template

After the Content Block runs, it generates variables you can reference elsewhere in your email.

Common variables include:

Variable Description
{{ video_url }} URL of the personalized video
{{ poster_url }} URL of the poster image for the video
{{ output_data.VARIABLE_NAME }} Additional output fields exposed by the Content Block

VideoSmart’s API has a rate limit of 10,000 requests per minute. If you exceed this limit, you may receive errors or experience delays in video generation.

To reduce this risk, configure Braze campaign rate limiting so the message send rate stays below VideoSmart API capacity.

For Braze guidance on delivery speed and rate limiting, see Delivery speed and rate limiting.

Considerations

  • Connected Content is executed when the message is rendered, so values can differ between preview and send if your defaults or attributes differ.
  • Confirm your email includes the Content Block before referencing variables like video_url.
  • If you use custom fields in vs_record_data, confirm the expected field names with VideoSmart.

Troubleshooting

Preview not working

If Braze Preview fails (for example, repeated retries or authentication errors), check that:

  • The Connected Content credential “basic_credentials” exists and is configured correctly.
  • The VideoSmart Content Block template is present in your Braze account.
  • Any required variables (for example, vs_campaign_id or required fields in vs_record_data) have defaults set for preview.

VideoSmart’s Content Block template variables not generating expected output

If the variables generated by VideoSmart’s Content Block template are not generating the expected output, check the following:

  • The VideoSmart Content Block template is set up correctly in Braze.
  • The Connected Content authentication is set up correctly with the appropriate credentials.
  • Print variables in your email to confirm they are being set. For example: {{ video_url }}

If you are using a custom campaign, also verify:

  • vs_campaign_id is set to a valid campaign identifier.
  • vs_record_data is valid JSON and contains the expected fields.
New Stuff!