Authors: Sunish Verma, Meenalochini Balasubramanian, and Jody Arthur
Enterprises today are amassing a tremendous wealth of customer data yet most continue to struggle with using their data to its fullest potential. This post describes how Adobe Experience Platform was able to help large enterprise customers better leverage its data and its mobile app to send personalized messages to customers in real-time on their mobile devices. With its integration of the platform's Journey Orchestration Service with a third party application in the company's existing tech stack, the moment customers initiate a triggering event within the app, such as watching a video or abandoning and a sports event in progress, they now receive personalized messages in real-time to deepen or reestablish the engagement.
This blog details a single implementation or customization on Adobe Experience Platform. Not all aspects are guaranteed as general availability. If you need professional guidance on how to proceed, then please reach out to Adobe Consulting Services on this topic.
Today, in the United States alone, smartphones are now in the pockets and purses of an estimated 81% of all adults. Businesses of all kinds are seeking new and innovative ways to use these devices to engage their customers and are developing branded mobile applications at breakneck speed. At Adobe Experience Platform, we're helping businesses use their mobile apps to connect with their customers on a deeper level with personalized experiences delivered in real-time.
Recently, we developed the ability for an Adobe Experience Platform client to send personalized messages to its customers through their smartphones based on their use of the company's mobile app. The customer wanted the ability to send personalized messages to its customers as soon as they started watching a video on their smartphones and also to invite them back into the experience if they stop watching before it's over.
We know many brands have invested in mobile niche vendors and Adobe will integrate with any vendor that has restful APIs to deliver push notifications. In this example, we did the POC with Airship, a leading MEA vendor with many common customers with Adobe. To accomplish this, we used Adobe Experience Platform's Journey Orchestration Service with Airship, a third-party application, to leverage the data the client already had in the platform. The personalization came from the data stored in Adobe Experience Platform and streaming data, which we were able to activate by integrating Airship with Journeys.
We started with a proof of concept, which was necessary to ensure that all the products in the architecture would work with the mobile app to provide a seamless personalized experience to the customer the moment he initiates a triggering event. We also needed to see if we could take the reporting from these events and get it back into the platform to complete the 360-degree view of the customer through this journey.
We initially considered two types of events, a specific date or time or a video start event, to use as our triggering event. We chose the video start because it is much better suited to the one-to-one personalization capabilities Journey provides. With a video start as our triggering event, when the user starts watching a live or prerecorded game on his smartphone through the company's mobile app he would receive a push notification with a personalized message on his phone.
Architecting Personalized Experiences
Figure 1 shows the high-level architecture we built for our proof of concept and to meet the client's goals. There were three main steps in the process, which are outlined in green.
Figure 1: High-level architecture for delivering real-time personalized messages using Adobe Experience Platform with Journey Orchestration Service and Airship.
The client's mobile app uses mobile SDKs, which flows analytics data into Adobe Experience Platform (Step 1). Prior to our proof of concept, we had already provisioned the Adobe Analytics connectors so the analytics data can flow into Adobe Experience Platform and through Pipeline into the client's data lake for activation. The analytics connector helps Journey Orchestration Service understand events and their payload. But, for real-time activation, you have to make an explicit call the moment an event happens. For our proof of concept, we built a data inlet for the client to allow its mobile app to fire the event data into Adobe Experience Platform where it can be written into Pipeline so that Journey can listen for it and act upon it the moment it occurs. At that moment, Pipeline automatically sends the notification to Journey (Step 2). Journey then use the workflows we developed to trigger actions based on events, in this case, a personalized message the moment the user starts watching a game on his smartphone (Step 3).
Within Journey, we can use a variety of conditions to set up specific logic if the use case requires it. These conditions can draw different attributes from the Unified Profile Service in Adobe Experience Platform. With streaming segmentation, Journey Orchestration Service can look up qualifying audiences in real-time allowing you to check the conditions set in your workflows to quickly determine if the user qualifies for a particular segment. The service will return boolean values such as yes/no or true/false, which can then be used to send the correct message to the user. Based on the conditions you have set, the action then sends this information out to Airship (Step 4), allowing us to use its test app to test the success of our push messaging.
Airship works based on the API. First, you support the REST APIs, then you develop authentication mechanisms based on the tokens in order to erase the encryption so the handshake between Journey and Airship can happen. We activated based on the endpoints provided by Airship to fire these calls and send the push message.
For the personalization to work, the explicit call must have the payload with the right attributes and IDs that would be used as the qualifying criteria for the push. With this integration, if you already have some data and content in Adobe Experience Platform, you can create custom messaging templates within Journey and use Airship to send them. For our proof of concept, we used a raw message to prove the handshake.
The setup in Adobe Experience Platform
The first step is creating a schema within the platform for the event (Figure 2). First, we created a schema in Adobe Experience Platform to define the data that would come from the event. For Journey, we needed the orchestration event ID mixin and to add any other data required in our payload and anything else that needs to come in our event. For our use case, the data we needed to show an end-to-end connection was the eventType and the id2 ID, which is the profile of the user ID.
Figure 2: Creating the Schema in Adobe Experience Platform.
We also created a dataset where the data could land in the platform and a streaming inlet through which to send the data (Figure 3).
Figure 3: Creating an inlet to flow the stream the events data into Adobe Experience Platform and a dataset to capture it.
The setup in Journeys
Our first step in Journeys is an event that starts the journey in Adobe Campaign. This will be a call from the app sending an analytics event, which informs Adobe Experience Platform that an event has occurred and providing the details through the analytics payload. When we create an event in Journey, we select the schema that we created in the platform and select the table fields that Journey would expect to receive from the event (everything that would come in our payload) (Figure 4).
Figure 4: Selecting the schema we set up in Adobe Experience Platform from within Adobe Campaign.
We also checked our JSON payload, which is the payload that would be sent when the event is triggered. Here we are sending the user and the alert notification. Where it says "toBeMapped" is true, this means that this event will be dynamically mapped by Journeys. This action is the post-call to Airship which sends the notification. In Figure 5, we can see in the action parameters that we have mapped those to be true. The named user comes in with the id1, and our test message also comes in as part of the event coming in, which pulls in which game the user was watching (id2).
Figure 5: Example of the payload in which we can set our message parameters.
Then we move over to the actions in Adobe Campaign. The action tells Journeys what to do when the event is triggered based on how the journey is configured (Figure 6). In this case, the action is to post to Airship.
Figure 6: Associating the action with the triggering event.
For the Airship setup, we downloaded the Airship test application to a mobile phone and set up the named user, which identifies the tester in the application on the phone. In Airship, we set up the authentication required for the message sending (i.e. created a user token in the UI for message sending). Then in Adobe Campaign, we set the URL required for Airship (Figure 7). For authorization, we used the bearer token. We can also use authentication based on whatever requirements we have for the send.
Figure 7: Setting up the URL required for Airship.
The following figures illustrate a couple of different examples we tested for the client for push notifications with this integration. One is based on the video start event we used in our original use case (Figure 8).
Figure 8: Journeys setup for a video start event.
The other is targeted to users that stop watching a game midstream (Figure 9). In this case, the notification is set to fire based on different conditions we set up in Journey. In this case, when a user abandons the activity, and we can wait a certain amount of time (e.g. 15 minutes) before sending the notification to the user to re-engage by inviting him back into the game or into another event.
With this approach, we have to configure an external data source to check the client's database for any additional data and get a list of all the events that we might include in our message. When configuring the chosen event, you would set a condition to push the notification when a certain ID equals the abandoned user's ID. We can also add other conditions in a particular segment. For example, is this a frequent user? Does the user only enjoy one particular sport or many? This ability to add conditions in Journey allows the client to solve any number of different use cases and create even greater personalization.
Figure 9: Example of how a triggered notification might be set up based on conditions created in Journeys.
When the conditions we have configured are met, we would go directly to Airship to our push message. If not, we go to the end of the process (Figure 10).
Figure 10: The setup with conditions for all the customer journeys in our use case.
In both examples, our mobile messages were received, the first within seconds of the triggering event (video start) and the second after the user stopped watching and the specified amount of time had passed (Figure 11). To verify that our integration worked, we used Journeys reporting (Figure 12).
Figure 11: Mobile messages received in response to triggering events.
Figure 12: Using Journey reporting to verify our integration was successfully sending push notifications.
Endless possibilities for personalized mobile messaging in real-time
With the client's analytics data already flowing into Adobe Experience Platform and Journey already provisioned for us, this integration only took about two weeks to develop. For this proof of concept, we wanted our use case to be fairly straightforward. So, we did not set up a lot of conditions within Journey. However, you can create as many conditions as your use case requires based on any number of combinations of attributes and segments drawn from the data within Adobe Experience Platform. This allows for endless possibilities for personalization. The payload is highly flexible and is limited only by the type and amount of data you have on the platform. There may be some limitations based on the third party application you might want to use and whether it can support all the parameters you want to send.
With this proof of concept, Adobe Experience Platform was able to help a large enterprise client better leverage its wealth of data in a new way to successfully send push messages to its customers on their mobile phones in real-time based on their use of the company's mobile app. The moment the user is qualified, the response with these integrations is very fast. This type of integration, which leveraged the client's existing technology via API, can be applied to any number of use cases in which a company wants to send real-time personalized messages based on triggering events.