BookmarkSubscribeRSS Feed

Marketing Optimization Contact History

Started ‎05-25-2016 by
Modified ‎05-25-2016 by
Views 1,330



This short article describes how to use and implement Contact History in SAS Marketing Optimization (M0), and provides examples.


SAS Marketing Optimization (MO) can take into account historical offers made to customers when applying max/min or blocking contact policies.


If you had a contact rule that says “Only send one email per customer in three consecutive days”, and let’s assume an email was sent to the customer on Monday, then the next time that the customer could receive an email would be Thursday.


Because of this capability, it is possible to implement in MO a variety of contact policies. For example: ‘Send to a customer at most 1 email every 7 days”, “Send to a household at least 2 letters for communication X in a period of 6 months”, “If an agent contacts a customer with an investment offer, do not send emails to that customer in the next two months”


Implementation Considerations

  • What time period should you use: days, months or a different length of time? The decision should follow your business process. For example, is it important to send the offers on specific days of the week or is it the same to send them any day of the week? If the former then use days, in the latter use weeks.
  • Notice that some months have 28, 30 or 31 days. If you indicate “one contact per month” a solution that sends one offer on July 31st and another one on August 1st would be correct. However, if you specify “one contact every 31 days” then you could have one offer on July 31st and the next one on August 31st.
  • The Time Period table should not have any gaps. For example, if you are working with days, don’t skip weekends.
  • The Time Period table must have all time_periods that are in the Communication and the Communication History tables.
  • The field “order_no” in the time period table can’t have negative values.
  • The Contact History table must only contain enough data to satisfy the contact policies horizon. For example, if the contact rule with the longest period corresponds to 30 days, then only include at most the past 30 days in the Contact History table.
  • Make sure the max/min time related constraints are logically consistent. For example, asking that a customer receives at least 2 communications in a month, and asking that a household receives at most 3 communications in a month will not be logically consistent since some households have more than one customer. This inconsistency will result in an infeasible scenario.
  • Make sure you have enough resources (customers, money, etc.) to satisfy all the scenario constraints. If not the problem will become infeasible. For example, do you have enough call hours in the call center for a policy that says “at least one mortgage offer thru CC every three months for the young professional customers?”
  • Only add Min contact policies if they are absolutely necessary. In general, it is more difficult to find a solution with them.
  • Remember that defining a time-based contact policy or blocking constraint in the UI will add several constraints to the scenario

What data is needed?

Appendix I of the SAS Marketing Optimization 6.1 User’s Guide mentions in detail the characteristics of the additional three tables needed. The screen shots below describe an implementation where the time period is month, and the campaigns to optimize correspond to the period January up to April, and 4 months is the longest period of the max/min contact policies. For this example, I added these three tables to the MO Sample input data that is included with every MO installation.


Time Period Table

Establishes a sequence of the time periods that are contained in the Communication AND Communication History tables. Two columns are required: time_period and order_no. Additional user columns can be added to be used later on as communication filters. For example, a column named quarters could have the values Qtr1, Qtr2, etc.


 time period table.png


Communication History Table

This table must contain all of the required and user-defined columns that are in the Communication table. It must also contains one additional column that is required and does not exist in the Communication table called unique_comm_mapping_id, which must be unique. The same column must also exist in the Contact History table




Contact History table

MO matches the values in the Contact History table to those that are listed in the Communication History table to determine which offers a customer has already received. It contains one row for each contact that has already been made to each customer. This table contains two required columns. The customer ID column matching the customer ID in the Customer table. The second column is called unique_comm_mapping_id.




Communications Table

Notice in the Communications table (below) the values of the time_period column, they are for future campaigns starting on January up to April. Notice in the Communication History table that the time periods correspond to past campaigns ran from September to December. Notice that the Time Period table has values from September up to April.




Settings in the User Interface

If the input data for the scenario uses contact history then select the Objective Page, select Advanced and check the box for “Include contact history in optimization.” This selections is only available if you have contact history tables.



Version history
Last update:
‎05-25-2016 02:24 PM
Updated by:



Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.

If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website. 

Register now!

Free course: Data Literacy Essentials

Data Literacy is for all, even absolute beginners. Jump on board with this free e-learning  and boost your career prospects.

Get Started

Article Tags