Integration of SAP InfiniteInsight with Campaign Management Systems
Integrating Predictive Analytics capabilities into campaign management process is a regular question from our customers as those are two key steps in the marketing process, especially for Next Best Activity approaches.
The purpose of this document is to present the different possible approaches and best practice regarding the integration of InfiniteInsight with campaign management solutions. Note that the approach is similar for any other type of third party system that would rely on Predictive results to improve operations.
In this document will be presented the integration with Unica as this is the latest one documented by KXEN in a white paper before the aquisition by SAP. It is important to note that integration with other Marketing Campaign Management softwares of the market would be as easy as what is presented in this document. Only minimal technical details may differ.
Outbound marketing campaigns
The most traditional use case is to select the targets of a marketing campaign based on the results of a predictive model. To do so, the campaign manager would define the target by combining one or more filters in the “Campaign Flowchart”. Only the customers that match all criteria defined in filters would be included in the campaign. The criteria are usually demographics, purchase or campaigns history… They are accessible from a “360° view of the Customer” data model, specifically designed for Unica. Predictive scores and segments created by SAP InfiniteInsight must be made available seamlessly to the campaign manager so that they are combined with the basic eligibility criteria and eventually design the scored campaigns.
Campaign optimization or prioritization is an extension of the previous application. The same customer is often eligible to multiple campaigns at a time, while the contact policy limits the number of messages sent to avoid confusion of the communication and over-solicitation of the customer. The question is how to choose the best campaign for each customer. Unica Campaign has prioritization capabilities – Unica Optimize has optimization – which use the probability of success of each campaign as the criterion. This is why all campaigns must be scored with a predictive model, following the process described in the previous paragraph.
Usually, scores and segments are updated regularly in the database, and campaigns are launched immediately after. But it may also happen that campaigns must be run when scored values are getting old. For instance you want to launch a campaign the third week of a month while scores are updated at the beginning of each month; variations may have occurred for an important part of the customers base in industries with regular transactions such as Telecommunications, Banking or Retail. In such a case, the campaign manager would require to use the very latest information to select the eligible target. Supposing that the Unica data model is actually updated according a frequent pace, but the modeling results are not, it is necessary to implement on-demand scoring. This means calculating the scores and segment values at the time the targets are extracted rather than sending a query against a table.
Event-based campaigns are another type of campaigns. They are designed to react to some customer event, such as a purchase, a documentation request, etc. In this case, the campaign manager has no control over the number of customers to contact or over the sending date, compared to standard push campaigns. On all other aspects, the design of such campaigns in the campaign management software is similar. This is why this use case is comparable to scored campaigns, or more often to on-demand scoring because a relevant response to an event requires the freshest information possible.
Inbound Marketing a.k.a Real-Time Marketing
Inbound campaigns relates to scenarios designed to personalize in real time the experience of customers interacting with websites, call centers, and other inbound marketing channels. These campaigns are also called trigger campaigns because they rebound on a signal sent by the customer, a trigger event. Trigger events primarily fall into two categories:
- Customer-specific events – these events affect specific customers and change their requirements or expectations. Examples include the birth of a child, moving to a new house or a change in employment status.
- Relationship events – these events arise from the relationship the business already has with its customer or prospect. Examples would be the opening of a new account, the purchase of a product or the dropping a product or service.
Inbound campaigns are very popular in Marketing departments because this approach may yield higher return as it identifies the relevant time for action in the customer lifecycle. The objective of predictive analytics here is to determine the optimal answer once the right moment has been identified.
In most Marketing Management suites, there is a dedicated component that enables the campaign manager to design the appropriate response. The interface is very similar to outbound campaigns design, the main difference is that the entry point is one or more “actions” coming from a customer-facing front-end. A big part of the integration project consists in defining those actions and to connect Unica to the customer-facing systems via web services, java scripts and similar technologies. Then the campaign manager will affect the response depending on the customer profile: is he at risk, what is the purchase history, what products were clicked on, etc.? To do so, he will build a kind of decision tree based on available data and information retrieved from the front-end (such as browsing history, topics addressed with the call center…). In this case, scores and segments available in the data model are very useful, but most of the time on-demand scoring is required.
In this case, it is important to notice that the queries invoked by the campaign will consider only one row (customer) at a time. Additionally, the response time of the queries is crucial as it is expected to be “real-time” in order to provide the most interactive experience to the customer.
The technical approach would be very similar for adding SAP InfiniteInsight to an existing Unica platform as well as for the other way around.
The 4 most frequent approaches for integration with a campaign management system are:
- Database query or flat file
- Query with real-time rescore
- Use SAP InfiniteInsight API to score
- Create a scoring component
Database query or flat file
This is the simplest and most straightforward approach.
The minimal requirements are to create models and apply them using SAP InfiniteInsight Modeler. Of course it is recommended to create the analytical dataset using SAP InfiniteInsight Explorer, and scheduling the scoring process with SAP InfiniteInsight Factory is a useful option.
SAP InfiniteInsight Modeler will create or update the scores and segment values in a table within the underlying data model of Unica. If SAP InfiniteInsight Explorer was used to define the analytical dataset, the definitions will be automatically applied without any action required from the user. With SAP InfiniteInsight Scorer, the “In-Database Apply” option will optimize the processing time.
There is one table for each model, so either each table is mapped into the Unica semantic layer, or the DBA will have to create a job to combine all values into a single table of scoring results that would be made available for campaigns selection. This is the one and only necessary integration work.
There is also the possibility of updating directly the table containing scores that Unica will retrieve the values from. In this case, one must ensure to specify all necessary keys at the beginning of the model creation phase, at least the customer_id and the reference_date. If not done, the update would erase the scored values of the preceding period.
Query with real-time rescore
This option is recommended when one wants to calculate the score on-demand.
Once the model is created using SAP InfiniteInsight Modeler, the score equation is exported using SAP InfiniteInsight Scorer. The code may be exported as SQL code or User Defined Function (UDF), in the specific language of the underlying database system used by Unica. Likewise, it is possible to export the score equation as java code or C++.
The code is then made available to the campaign manager that would include it in the campaign flowchart using a specific tool. Of course, this means giving raw code to business people, what they usually are not familiar with and do not like very much. In addition the type of code to share will depend on the interface where it is used:
- Unica Campaign can include SQL code in the flowchart (Selection Process).
- Providing the UDF will be simpler for the user, but this requires the DBA to previously implement it in the database.
- There was found in documentation no mention of integration of PMML code into any Unica product.
- Unica Interact cannot include any SQL code, only java is permitted using the function EXTERNALCALLOUT.
- One must validate that the Java components required to run scores produced by SAP InfiniteInsight Scorer are correctly installed and activated.
If SAP InfiniteInsight Explorer or data manipulations were used to create the analytical dataset, this adds a major step in the integration process as the code exported by SAP InfiniteInsight Scorer doesn’t include those definitions. It is a simple select statement from a single table or view; it doesn’t create any physical table. As a consequence, the analytical dataset must be materialized in the Unica data model before the scores are shared with the users. Of course, only the columns used in the scoring equation will have to be included, not all those present in the training Analytical Data Set (ADS). As usually only a fraction of the customer base – if not a single customer – will be queried, it may be considered to materialize the ADS as a view instead of a physical table.
Creating one global “on-demand” ADS for all scores or one for each score is upon the choice of the DBA. The processing time and the manageability of a great number of objects are the main decision criteria.
Use SAP InfiniteInsight API to score
Anything that may be done using SAP InfiniteInsight interfaces can be reproduced using the APIs, and sometimes more. So it is very easy to create the process exactly as expected and control the business users respect the defined methodology.
Unica claims to be able to integrate easily in wider architectures using the standard communication protocols. It should be no problem to call the SAP InfiniteInsight API using the function EXTERNALCALLOUT, or the Interact API from Unica Interact.
Create a scoring component
This option is the same as the previous one, although it is richer as it has the capability of creating exactly the ‘Process’ dedicated to InfiniteInsight integration as you want it.
Of course this requires some specific development, but this is the only way to provide the business users with a seamless integration of InfiniteInsight models for on-demand scoring.
One may imagine creating a ‘Process’ in which the user could select the InfiniteInsight model to apply in a list, and then InfiniteInsight would be activated to score it against the input data defined by the preceding ‘Process’ it is connected to. The output would be the customers list with the scored values.
KXEN has examples of successful integration of a scoring component in MCM suites. The one presented at InsightLive11 with Aprimo required very light and short development effort:
Summary of technical approaches
Elements required by technical approach:
|Database query or flat file||Recommended||Necessary||Necessary (for iDBA)||Optional|
|Query with real-time rescore||Recommended||Necessary||Necessary|
|Use SAP InfiniteInsight API to score||Recommended||Necessary||Optional||Necessary||Optional|
|Create a scoring component||Recommended||Necessary||Optional||Necessary|
Use cases addressed by technical approach:
|Database query or flat file||Query with real-time rescore||Use SAP InfiniteInsight API to score||Create a scoring component|