Personalised Videos In Salesforce Marketing Cloud With Seen.io

Personalised content is a given for any company or organisation in this day and age. Especially when it comes to Salesforce and Salesforce Marketing Cloud. If you are an existing customer you might have already thought about Customer Segmentation, Personalised Content, Dynamic Content, Email Personalisation, Journey Personalisation, Predictive Intelligence, Automation and Triggers, Social Media and Mobile, but have you thought of Seen.io? The dynamic personalised video system... direct to your customers.
Personalised Videos In Salesforce Marketing Cloud With Seen.io
Gravitai, William McMahon
15 November 2023 Salesforce













Salesforce Marketing CloudSeen.io

Take a seat and prepare to dive into the world of personalised content to keep your customers buzzing with excitement.

At Gravitai, our passion comes from creating highly personalised automated marketing campaigns. Discovering Seen.io was a game changer for us as an organisation. Once again taking personalisation to another step.

Catching your audience off guard. It's what we all want.

Driven by pure ambition, we embarked on an exciting journey to integrate Salesforce Marketing Cloud with Seen.io to ensure that other SFMC customers experience our joy with the same personalisation.

Our goal? Well...

Simply to leverage the power of personalisation videos in our marketing campaigns for customers. The integration of these two platforms is not just about technology; it's about revolutionising how we connect with audiences. 

By incorporating personalised videos into our campaigns, we can create more than just messages; we create experiences that resonate on an extreme personal level.

What Is Seen.io?


Seen.io is an innovative platform specialising in personalised video content, transforming standard marketing messages into engaging, unique experiences for each viewer. 

Its technology allows for dynamic video personalisation, where elements like text, images, and scenes can be tailored to the individual viewer, making every interaction significantly more engaging and memorable.

What Is The Benefit of Personalised Videos For Marketing?


The benefits of personalised videos and in general personalised content in marketing are manifold. 

Personalised videos lead to higher engagement rates, as they capture the viewer's attention more effectively than generic content.

This heightened engagement translates to improved conversion rates and, ultimately, a significant Return on Investment (ROI). Not to mention that personalised content also aids in building stronger customer relationships. 

When customers feel that a brand understands their individual needs preferences, their loyalty to the brand deepens. 

Furthermore, personalised marketing strategies can provide valuable insights into customer preferences and behaviour. This enables more targeted and effective future campaigns.

According to a recent study, personalisation often results in 10 - 15% increase across all sales and revenue. The better a company's ability to use data to increase customer knowledge and intimacy, the higher the returns on investment.


According to a recent study, personalisation often results in 10 - 15% increase across all sales and revenue. The better a company's ability to use data to increase customer knowledge and intimacy, the higher the returns on investment. 

In essence, the fusion of Salesforce Marketing Cloud and Seen.io in our campaigns is not just an integration of technologies; it's a confluence of creativity, innovation, and strategic marketing that propels us towards unprecedented levels of customer engagement and business success.

It is also critical to note the importance of personalisation to Salesforce.

"Business is all about the customer: what the customer wants and what they get. Generally, every customer wants a product or services that solves their problem, worth their money, and is always delivered with amazing customer service. At Salesforce, we believe in delivering personalised, seamless experiences that empower businesses to connect with their customers in meaningful ways."

Salesforce on Personalisation in Marketing

Prerequisites


Before diving into the intricacies of our integration solution, let's outline the prerequisites. Firstly, a Salesforce Marketing Cloud environment is a given – as the whole concept is to integrate SFMC with Seen.io. 

We reached out to our friends at Seen.io, who generously provided us with API credentials and crafted a demo campaign for our project (which you’ll see later).

A campaign in Seen.io forms the basis of the video template. We opted for a standard template for our prototype, but it's worth noting that Seen.io offers the flexibility to design videos tailored to specific brands and audiences for subscribing customers. 

You can view case-studies of how other clients have used seen.io below.

CLIENTS CASE STUDy

To gear up for this project, we immersed ourselves in the Seen.io API documentation, available here if needed.

Don’t worry if this documentation is too technical to understand, we hope this blog article provides you with a working example to integrate Salesforce Marketing Cloud with Seen.io.

This exploration was crucial to understanding the technical requirements of our solution. Recognising the need for advanced technical skills in Salesforce Marketing Cloud, we brought our most talented developers on board to work on building the prototype.



[Source - Giphy]

That's right - they were hooked on getting this configured.

A strong technical understanding of Salesforce Marketing Cloud is required, however we found the Seen.io API documentation to be well documented and easy to understand. 

In order for Seen.io to provision our account, we were required to supply a ‘Call Back URL’ which is like an API within SFMC, which Seen.io will use to pass back the Video URL and information. More on this later.

To aid our understanding, we crafted a high-level visual design of  our solution, which will be elaborated in the next section. 

However, following SFMC best practices, the principle of our design is to pre-process the audience and creation of the personalised videos before send. This provides more reliable performance and failsafe, rather than processing transactions individually at time of send.

High Level Solution Design





The solution is made up of several components, which we detailed: 

Object

Description

Master Data Extensions 

These are our existing ‘Master Data Extension’ – typically a SFMC client will store Customer, Order and Preference data in such a data hierarchy.

SQL Query (Audience Selection) 

If you’re familiar with SFMC, you’ll understand that we use SQL to query the Master Data Extensions to build an Audience. Read more about using SFMC SQL Studio in our separate blog.  

Seen.io Audience 

This is our Seen.io Audience data extension, which the SQL query has stored our selected audience in. We’re going to use this audience to create personalised videos with Seen.io 

SSJS Script / API Integration 

We use a scripting tool (SSJS) in SFMC Automation Studio to process the data from our Seen.io Audience and send records to Seen.io. Here is where we post personalised elements e.g. First_Name which Seen.io will use to personalise the videos.  

Cloud Page Resource / Callback URL 

We use a SFMC Cloud Page (code resource) to act as a custom API interface as a callback URL for Seen.io to post records to SFMC Data Extensions 

Seen.io API 

The Seen.io API is the endpoint we POST our requests to from SFMC 

Seen.io Internal Magic 

Internally, Seen.io has it’s own magic layer to generate the personalised video and will POST back the Video URL to SFMC Callback URL 

Seen.io Campaign 

The Seen.io Campaign is the video template / creative of the Video which Seen.io will personalise. 

Seen.io Callback Results Data Extension 

This is the data extension in SFMC which we’ll store the results returned from Seen.io. This will contain the video_urlimage_urlcustomer_id and more. 


As mentioned, we are using this best practice approach so that pre-process the API requests before send. The end-result is that the Seen.io Audience Data Extension will contain the Video URL, Landing Page URL and Placeholder image, which we can then simply use within our Salesforce Marketing Cloud Email Studio templates.

Detailed Solution Elements


Without going too deep into each element of the solution, we’ll concentrate on the key technical elements of the Salesforce Marketing Cloud to Seen.io integration. 

We assume that you have some technical capabilities and understanding of the general elements of Salesforce Marketing Cloud e.g. SQL Queries and Data Extensions, but if you are struggling to understand or implement the solution then reach out to us for assistance.

Seen.io Audience


We have created a Data Extension called seenIO, which contains the fields / attributes e.g. customer_id and first_name which we want to pass to Seen.io to personalise our video.


Seen.io Callback Data Extension


We have created a separate data extension – called SeenIOCallback – to store the video_urlthumbnail_url etc which is received from Seen.io. Note that we are using customer_id, which we have already passed to Seen.io as a common subscriber key identifier.


SSJS Script / API Integration


Within Automation Studio, we have created a SSJS Script and we execute the following code:

<script runat="server" language="javascript">
	Platform.Load("Core", "1.1.1")
	
	
/*--- Functions Code Block ---*/

	function makeSeenIOAPICall(accessToken, payload) {

	if (accessToken != 'Invalid' || accessToken != null || accessToken != undefined || accessToken != '') {


		var requestUrl = 'https://api.seen.io/v1/campaigns/gravitai-test/receivers/'
		
		var seenIOAPI = new Script.Util.HttpRequest(requestUrl);
		seenIOAPI.emptyContentHandling = 0;
		seenIOAPI.retries = 2;
		seenIOAPI.continueOnError = true;
		seenIOAPI.contentType = "application/json";
		seenIOAPI.setHeader("Authorization", accessToken);
		seenIOAPI.method = "POST";
		seenIOAPI.postData = payload;

		var resp = seenIOAPI.send();
		var respStr = String(resp.content);
		var respJSON = Platform.Function.ParseJSON(respStr);
		var fullresponse = Platform.Function.ParseJSON(String(resp.content));

		return "Done";

		}
	}


/*--- Main Code Block ---*/
	var batchSize = 7;
	var subscriberRecords = DataExtension.Init("seenIO");
	var subscriberRecords_dataRows = subscriberRecords.Rows.Retrieve();
	var recordCount = subscriberRecords_dataRows.length;
	if(batchSize > recordCount) {
		batchSize = recordCount;
	}

	if (subscriberRecords_dataRows && subscriberRecords_dataRows.length > 0)
	{
		var payload, payload_str;
		var j = 0;
		for(var i=0; i<subscriberRecords_dataRows.length; i++) 
		{

			var customer_id = subscriberRecords_dataRows[i]["customer_id"];
			var first_name = subscriberRecords_dataRows[i]["first_name"];
			var last_name = subscriberRecords_dataRows[i]["last_name"];
			var email = subscriberRecords_dataRows[i]["email"];
			var phone = subscriberRecords_dataRows[i]["phone"];
			var gender = subscriberRecords_dataRows[i]["gender"];
			var city = subscriberRecords_dataRows[i]["city"];
			
			var payload = 
			{
				"first_name": first_name,
				"last_name": last_name,
				"email": email,
				"phone": phone,
				"customer_id": customer_id,
				"extra_args": {
					"gender": gender,
					 "city": city
				}
			};

			if (j === 0) {
				payload_str = Stringify(payload)
			} else {
				payload_str = payload_str + "," + Stringify(payload)
			}

			if(batchSize - j == 1 || recordCount - i == 1) {
				payload_str = "[" + payload_str + "]"
				var SeenIOAPIResponse  = makeSeenIOAPICall("Token ######INSERT YOUR TOKEN######", payload_str);
				j = 0;
			} else {
				j = j + 1;
			}
			
		}
		
	}

</script>


This script first authenticates with the Seen.io API, and will then poll and loop through records in the SeenIO data extension. It builds a JSON payload of the fields from the data extension (First_name, Last_Name) etc and will post these to the Seen.io API. 

Being considerate programmers, we have included a batchSize of 7, meaning the script will process 7 records at a time from the data extension and post these to the Seen.io API (so we don’t break the API with large volume loads). 

This batchSize can be adjusted to determine best optimal performance for your needs.

Cloud Page Resource / Callback URL


For the Callback URL which Seen.io requires, we created an SFMC Cloud Page Resource File (Javascript File).

The purpose of this public endpoint is to receive the POST request from Seen.io, which contains the video_url and customer_id attributes for each record / personalised video Seen.io sends back to Salesforce Marketing Cloud. 

The Cloud Page Resource File acts as a custom SFMC API, which retrieves the attributes from the Seen.io POST request and inserts this data into the SeenIOCallback data extension.

<script runat="server"> 
    Platform.Load("Core","1");
    try{
        var jsonpost = Platform.Request.GetPostData(0);
        var respJson = Platform.Function.ParseJSON(jsonpost);
        var resp_customer_id = respJson.customer_id;
        var resp_landing_page_url = respJson.landing_page_url;
        var resp_video_url = respJson.video_url;
        var resp_thumbnail_url = respJson.thumbnail_url;
        var resp_email_thumbnail_url = respJson.email_thumbnail_url;
        var Message = "Call back";
        var insertResponse = Platform.Function.InsertData("SeenIoCallback",["Message","Body", "customer_id", "landing_page_url", "video_url", "thumbnail_url", "email_thumbnail_url"],[Message,jsonpost, resp_customer_id, resp_landing_page_url, resp_video_url, resp_thumbnail_url, resp_email_thumbnail_url]);
    } catch (e) {
      Write("<br>" + Stringify(e))
    }
  </script>


If successful, then you should see results in the SeenIoCallback data extension that look like this:


We can then use this data in our emails using AMPScript – which should be a familiar practice to SFMC users. Here is our end-result – a personalised Seen.io video that was generated in seconds, using the data we sent from Salesforce Marketing Cloud.

The Seen.io Result


Want to see something cool? Take a look at Seen.io in its full glory.


Pretty awesome, eh!

Congrats - you have now integrated Salesforce Marketing Cloud and Seen.io! Start reaping the personalisation rewards.


For further support, tips and tricks or if you need any assistance setting up your Salesforce Marketing Cloud integration with Seen.io, reach out to us.


NEED MARKETING CLOUD HELP?

As a dedicated Salesforce Partner, we can help assist in implementation, support and further integrations.

Find Out More

Seen.io FAQs

Seen.io does not After Effects but instead their own rending engine. Fast and robust ready for action and personalisation. This is due to only being able to use a number of limited effects when it comes to After Effects. Their own engine provides a greater spectrum of options.

It is a great question. Possible animations include, Anchor Points, Positions, Separate Dimensions, Scale, Rotation, Orientation and Opacity. Across text animations things such as Position, Scale, Rotation and Opacity are also included. For more information on effects you can find them in the Seen Documentation (Production Guide) available.

They certainly are. With the SEEN app you can quickly integrate web-service API to effortlessly generate millions of unique data-driven videos for your customers. Build your videos around First Name, Gender, Last Purchase, Position Interests, Language, Birth Date, Purchasing History and more. If you want to learn more you can find the application here for more information.

Note: App does not run in Salesforce Marketing Cloud - that is where this guide comes in!

That is correct, there are! SEEN use a template framework for all their landing pages which contain the video layers including additional text and buttons. Easy to also customise to suit each customer across their branding with elements such as fonts, colours, logos and splash designs. If you want to learn more about the branding and design elements then you can do so here for more info.

Get In Touch

Archive