This document discusses using SAS to analyze a sales funnel by structuring data and creating exclusion variables to model the funnel. It demonstrates how to:
1) Structure a dataset with customer information and define possible exclusion variables
2) Create SAS code to apply the exclusion variables in a waterfall analysis for an email marketing campaign
3) Show how the order of exclusions affects the number excluded but not the final count
4) Introduce the general and unique exclusion profiles as better ways to assess the impact of individual exclusions
The overall goal is to analyze a retailer's loyalty program sales funnel to justify using direct mail or email as the primary contact channel and identify opportunities to expand the funnel.
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Expanding Your Sales Funnel with SAS® Email Waterfall Analysis
1. Expanding Your Sales Funnel
with SAS®
Michael Mina
2018 Ohio SAS Users Group Conference
May 21, 2018
2. Introduction
• The process by which many sales leads are narrowed
down to a smaller number of actual sales is often
referred to as a sales funnel.
• The idea behind the funnel image is that many sales
leads enter into the wider top of the funnel, but as a
result of exclusions, specific targeting criteria, and
customer choices, only some of them will actually
emerge from the narrow end of the funnel and result in
sales.
• Several different versions and graphical representations
of the sales funnel exist. A typical, simplified version
appears on this slide.
2
• We will focus on a specific application of SAS, namely
• how to structure a SAS data set to facilitate sales funnel analysis, and
• how to analyze this data to find expansion opportunities in any industry to which the sales
funnel concept is applicable.
• With a properly structured data set, the SAS code needed for sales funnel analysis is straightforward,
and can generate significant return on investment.
• The waterfall is a key concept in sales funnel analysis, and it will be covered, but this paper will focus on
increasing the number of waterfall survivors rather than the technical aspects of creating a waterfall
chart in SAS.
3. The waterfall and/or the waterfall chart
• All or part of the sales funnel is often described in more detail using a waterfall, which shows the
sequential reductions in leads as they fail to pass certain qualifications.
• Sales funnel analytics includes, but is not limited to, expanding your sales funnel – In other words,
increasing some metric (generally the number of qualified leads) that come out of the funnel, or
getting more customers to survive the previously mentioned qualifications.
3
/*
Sample waterfall - Code was modified from that which appeared in
http://support.sas.com/rnd/datavisualization/yourGraphs/businessQuick/waterfall
/
*/
data waterfall;
length id $10;
format Amount best.;
input ID $ Amount type $;
datalines;
Initial 1000000 Subtotal
Exclusion1 -250000 Exclusion
Exclusion2 -150000 Exclusion
Exclusion3 -100000 Exclusion
;
/* Open the LISTING destination and assign the ANALYSIS style to the graph */
ods listing style=analysis;
ods graphics / width=5in height=2.81in;
title 'Sample Waterfall';
proc sgplot data=waterfall noautolegend;
waterfall category=id response=amount / colorgroup=type dataskin=sheen
datalabel name='a';
keylegend 'a' / location=inside position=topright across=1;
xaxis display=(nolabel);
yaxis grid display=(nolabel) offsetmin=0;
run;
Waterfall charts were popularized by McKinsey & Company in its presentations to clients. (https://en.wikipedia.org/wiki/Waterfall_chart)
4. Our hypothetical business case
• Suppose we are employed in the marketing analytics department of a retailer
with a number of stores and a significant online presence.
• Our company launched a loyalty program several months ago and has
enrolled 100,000 customers to date.
• Our primary means of interacting with program members has been:
1) Email – when we have an email address, which we do have for 80,120
customers
2) Point of sale – at the cash register
3) Direct mail – we have mailing addresses for all 100.000 members, but
sending mail is costly
• Senior management wants to running campaigns where we mail retail
circulars to members of the loyalty program
• The circulars would have special deals, coupons, etc., which customers
would redeem (which would count as a response to the campaign).
• Whether the circulars are paper or electronic is yet to be determined
by senior management.
• Our analysis may play a role in their decision.
• We need to analyze the sales funnel in two ways:
1) By assuming we will use email only (electronic circular)
2) By assuming we will use direct mail only (paper circular)
• Essentially, we need to justify using direct mail or email as our contact
channel.
4
5. Structuring the analytical data set
• Suppose that as our starting point, we are given the following data for all loyalty program customers:
• Based on past experience, we already suspect that we will not be permitted to contact customers with special
restrictions (special_restrictions=1), or premier customers (premier_customer=1), regardless of whether we use
direct mail or email. When we run our first waterfall for either the direct mail or email channels, we will apply
those exclusions.
• Exclusions depend on a variety of factors, including legal requirements, channel-specific factors, and business
objectives. Consider our "homeowner" variable.
• If you wanted to sell homeowners insurance, you would likely exclude everyone who was not a homeowner.
• However, if you wanted to sell renters insurance, you would likely exclude everyone who was a homeowner.
• Note that there are people who are neither homeowners nor renters, but homeowner=0 would be strongly
correlated with renters, especially with customers in their mid-twenties or above. Also note that one can be a
renter of their primary residence, and still be the owner of a home.
5
Variable Definition
customer_id A unique customer identifier.
sales_region The sales region (A, B, or C) in which the customer resides.
email_provided If the customer provided an email address, then 1, otherwise 0.
homeowner If the customer owns their primary residence, then 1, otherwise 0.
special_restrictions
These customers were flagged with a 1 to indicate that additional marketing to them is unlikely to be
beneficial, and is thus discouraged (e.g., too many complaints, too many returns).
premier_customer
These are our best customers, flagged with a 1, as determined by several metrics, not all of which are
contained in this data set. As a segment, they are normally managed by a dedicated team, and are usually
excluded from marketing efforts not originating from the management team of that segment.
credit_score
The range containing the customer FICO score. This data came from the team that manages our store credit
card and they use it to exclude certain customers from certain credit card marketing promotions. However,
credit score may not be applicable to our particular marketing plans. We question whether affiliate sharing
laws would even allow us to use this data.
household_income
The range containing household (not customer) income. This was either provided by the customer, or derived
using demographic data, or modeled using variables not contained in this data set.
6. Structuring the analytical data set (cont'd)
• This is a sample of the data set we were given:
6
Customer file for sales funnel analysis
(obs=20)
Obs customer_id sales_region email_provided homeowner special_restrictions premier_customer credit_score household_income
1 1 A 1 1 0 0 B. 650 - 679 D. $75K - $100K
2 2 A 1 1 0 0 C. 680 - 749 A. $0 - $25K
3 3 A 1 0 0 0 B. 650 - 679 D. $75K - $100K
4 4 A 1 1 0 1 C. 680 - 749 B. $25K - $50K
5 5 A 1 0 0 0 E. 800 - 850 D. $75K - $100K
6 6 A 0 1 0 0 C. 680 - 749 D. $75K - $100K
7 7 B 0 1 0 0 E. 800 - 850 C. $50K - $75K
8 8 A 1 1 0 0 D. 750 - 799 C. $50K - $75K
9 9 B 1 1 0 0 D. 750 - 799 C. $50K - $75K
10 10 A 0 1 0 0 B. 650 - 679 E. $100K+
11 11 A 1 1 0 0 D. 750 - 799 A. $0 - $25K
12 12 B 1 1 0 0 A. 300 - 649 C. $50K - $75K
13 13 A 1 1 0 0 E. 800 - 850 C. $50K - $75K
14 14 A 1 1 0 0 E. 800 - 850 B. $25K - $50K
15 15 A 1 1 1 0 E. 800 - 850 B. $25K - $50K
16 16 B 1 1 1 0 D. 750 - 799 D. $75K - $100K
17 17 C 1 1 0 0 D. 750 - 799 C. $50K - $75K
18 18 A 1 1 0 0 D. 750 - 799 E. $100K+
19 19 B 0 1 0 0 C. 680 - 749 D. $75K - $100K
20 20 A 1 1 0 0 B. 650 - 679 D. $75K - $100K
7. Defining exclusion variables
• Exclusion variables should be defined negatively, so that the variable for a particular exclusion is equal
to one when the customer should be excluded, and zero otherwise.
• For example, if you want to exclude people who are not homeowners, then don't exclude them using
homeowner=0. Instead, define a variable non_homeowner so that:
if homeowner=0 then non_homeowner=1; else non_homeowner=0;
and then exclude a customer with non_homeowner=1
• This will make your coding consistent and allows quick summation of the number of customers affected
by one or more exclusions.
• Even though we're not entirely certain which exclusions we will apply, we can create possible exclusion
variables for them with this code:
7
/* Define exclusion variables as needed */
data s.customer_file_mod;
set s.customer_file;
if homeowner=0 then non_homeowner=1;
else non_homeowner=0;
if email_provided=0 then email_not_provided=1;
else email_not_provided=0;
length credit1 $ 1;
length income1 $ 1;
credit1=substr(credit_score,1,1);
if credit1='A' or credit1='B' then credit_score_exclude=1;
else credit_score_exclude=0;
income1=substr(household_income,1,1);
if income1='A' or income1='B' then income_exclude=1;
else income_exclude=0;
run;
Why would you define possible exclusions
before you've created your waterfall code?
Because at this stage, you probably don't know
for certain which exclusions will be used in your
final waterfall, and it's generally easier to have
all possible exclusions coded.
In some situations, you will develop one
waterfall after another and have senior
management review the results each time
before a final decision is made as to which
exclusions to apply.
8. Creating the email waterfall code – applying the exclusion variables
• Note: The data used are synthetically constructed. The exclusions used here are for illustrative
purposes only and should not be construed as support for excluding customers from marketing
campaigns due to their specific circumstances or characteristics.
• The waterfall code will take the customer_file_mod data set and classify customers on the basis
of the exclusion affecting them, if any.
• If desired, one could combine defining exclusion variables with applying those variables in a waterfall.
They have not been combined in this presentation.
• If our goal is to email customers, then we need to exclude customers that haven't given us their email
address. The code for applying exclusions should create an order in which each exclusion is applied,
and a description of each exclusion, like so:
• Exclusion order matters - The order in which exclusions appear in your code will affect the number of
customers listed as being excluded by that particular exclusion, even though the final number of
waterfall survivors will be the same in either case.
• For example, consider the following two waterfalls.
• In waterfall 1, the email not provided exclusion is the first exclusion applied.
• In waterfall 2, it is the last. First, we run the waterfalls:
8
if email_not_provided=1 then do;
exclusion_order=1;
exclusion_desc='email not provided';
end;
9. Exclusion order matters – a demonstration
9
data waterfall1;
set s.customer_file_mod;
length exclusion_desc $ 25.;
if email_not_provided=1 then do;
exclusion_order=1;
exclusion_desc='email not provided';
end;
else if special_restrictions=1 then do;
exclusion_order=2;
exclusion_desc='special_restrictions';
end;
else if premier_customer=1 then do;
exclusion_order=3;
exclusion_desc='premier customer';
end;
else if not_homeowner=1 then do;
exclusion_order=4;
exclusion_desc='not homeowner';
end;
else if credit_score_exclude=1 then do;
exclusion_order=5;
exclusion_desc='low credit score';
end;
else if income_exclude=1 then do;
exclusion_order=6;
exclusion_desc='low income';
end;
else do;
exclusion_order=7;
exclusion_desc='do not exclude';
end;
exclusion_count=sum(email_not_provided,
special_restrictions, premier_customer,
not_homeowner, credit_score_exclude,
income_exclude);
if exclusion_count=1
then exactly_one_excl=1;
else exactly_one_excl=0;
run;
data waterfall2;
set s.customer_file_mod;
length exclusion_desc $ 25.;
if special_restrictions=1 then do;
exclusion_order=1;
exclusion_desc='special_restrictions';
end;
else if premier_customer=1 then do;
exclusion_order=2;
exclusion_desc='premier customer';
end;
else if not_homeowner=1 then do;
exclusion_order=3;
exclusion_desc='not homeowner';
end;
else if credit_score_exclude=1 then do;
exclusion_order=4;
exclusion_desc='low credit score';
end;
else if income_exclude=1 then do;
exclusion_order=5;
exclusion_desc='low income';
end;
else if email_not_provided then do;
exclusion_order=6;
exclusion_desc='email not provided';
end;
else do;
exclusion_order=7;
exclusion_desc='do not exclude';
end;
exclusion_count=sum(email_not_provided,
special_restrictions, premier_customer,
not_homeowner, credit_score_exclude,
income_exclude);
if exclusion_count=1
then exactly_one_excl=1;
else exactly_one_excl=0;
run;
10. Exclusion order matters – a demonstration (cont'd)
10
/* Create waterfall 1 components */
proc sql;
create table s.waterfall1_sum as
select exclusion_order, exclusion_desc
, count(*) as customer_count
from waterfall1
group by exclusion_order, exclusion_desc
order by exclusion_order
;
quit;
/* Create waterfall 2 components */
proc sql;
create table s.waterfall2_sum as
select exclusion_order, exclusion_desc
, count(*) as customer_count
from waterfall2
group by exclusion_order, exclusion_desc
order by exclusion_order
;
quit;
Waterfall 1
Obs exclusion_order exclusion_desc customer_count
1 1 email not provided 19,880
2 2 special restrictions 5,942
3 3 premier customer 2,303
4 4 not homeowner 14,325
5 5 low credit score 11,554
6 6 low income 9,261
7 7 do not exclude 36,735
Waterfall 2
Obs exclusion_order exclusion_desc customer_count
1 1 special restrictions 7,482
2 2 premier customer 2,855
3 3 not homeowner 17,882
4 4 low credit score 14,427
5 5 low income 11,540
6 6 email not provided 9,079
7 7 do not exclude 36,735
• In waterfall 1, the number of customers excluded due to email not provided is 19,880. In waterfall 2,
the number is 9,079 - less than half the number excluded in waterfall 1.
• The waterfall, whether in table or chart form, is a very useful tool for showing how exclusions narrow
your sales funnel, but comparing two otherwise identical waterfalls with just one exclusion in a
different order shows that waterfalls are not the best tool for assessing the impact of individual
exclusions. Two better tools for that purpose are the general exclusion profile, and the unique
exclusion profile.
11. The general exclusion profile and the unique exclusion profile
• The general exclusion profile in its simplest form is a table showing customer count by each
combination of exclusion variables.
• The unique exclusion profile also groups customers by each combination of exclusion variables, but it
selects only those customers with exactly_one_excl=1. This gives a more accurate view of the impact of
each exclusion.
11
/* Create waterfall 1 general exclusion profile */
proc sql;
create table s.waterfall1_gep as
select email_not_provided
, special_restrictions, premier_customer
, not_homeowner, credit_score_exclude
, income_exclude
, count(*) as customer_count
from waterfall1
/* There is no "where" clause */
group by email_not_provided
, special_restrictions, premier_customer
, not_homeowner, credit_score_exclude
, income_exclude
;
quit;
/* Create waterfall 1 unique exclusion profile */
proc sql;
create table s.waterfall1_uep as
select email_not_provided
, special_restrictions, premier_customer
, not_homeowner, credit_score_exclude
, income_exclude
, count(*) as customer_count
from waterfall1
where exactly_one_excl=1
group by email_not_provided
, special_restrictions, premier_customer
, not_homeowner, credit_score_exclude
, income_exclude
;
quit;
12. The general exclusion profile and the unique exclusion profile (cont'd)
• Notice that the top row of the general exclusion
profile, with all exclusion variables equal to
zero, is the number of waterfall survivors (i.e.,
customers that are not excluded).
• The general exclusion profile is useful for
showing the impact of the interaction of
multiple exclusions
• The unique exclusion profile is useful for
showing the impact of a single exclusion.
• A misinterpretation of waterfall 1 would suggest
that removing the email not provided non-
homeowner exclusion alone would result in
14,325 additional waterfall survivors. The
unique exclusion profile shows that removing
that exclusion alone would result in only 9,207
additional waterfall survivors.
12
Waterfall 1: General exclusion profile (obs=20)
Obs email_not_provided special_restrictions premier_customer not_homeowner credit_score_exclude income_exclude customer_count
1 0 0 0 0 0 0 36,735
2 0 0 0 0 0 1 9,261
3 0 0 0 0 1 0 9,234
4 0 0 0 0 1 1 2,320
5 0 0 0 1 0 0 9,207
6 0 0 0 1 0 1 2,241
7 0 0 0 1 1 0 2,289
8 0 0 0 1 1 1 588
9 0 0 1 0 0 0 1,130
10 0 0 1 0 0 1 297
11 0 0 1 0 1 0 307
12 0 0 1 0 1 1 81
13 0 0 1 1 0 0 315
14 0 0 1 1 0 1 69
15 0 0 1 1 1 0 85
16 0 0 1 1 1 1 19
17 0 1 0 0 0 0 2,939
18 0 1 0 0 0 1 709
19 0 1 0 0 1 0 794
20 0 1 0 0 1 1 205
Waterfall 1: Unique exclusion profile
Obs email_not_provided special_restrictions premier_customer not_homeowner credit_score_exclude income_exclude customer_count
1 0 0 0 0 0 1 9,261
2 0 0 0 0 1 0 9,234
3 0 0 0 1 0 0 9,207
4 0 0 1 0 0 0 1,130
5 0 1 0 0 0 0 2,939
6 1 0 0 0 0 0 9,079
• Note that waterfall 1 had "low income" as the last exclusion (the row before "do not exclude" is the last exclusion),
and it affects 9,261 customers, which is the amount indicated in the unique exclusion profile table.
• Similarly, note that waterfall 2 had "email not provided" as the last exclusion, which affects 9,079 customers, and
that matches the figure indicated in the unique exclusion profile table.
• The last exclusion in a waterfall will have the quantity impacted by only that exclusion, and should match the
quantity associated with that exclusion in the unique exclusion profile.
13. Steps to building your own waterfall code
• Due to constraints on time and/or resources, or other reasons, you may inherit a pre-existing waterfall and be
tasked with modifying it, rather than being given time to construct a new one. Alternatively, stakeholders may
want a new waterfall created with exclusions they already have in mind.
• In either case, to increase the number of waterfall survivors and expand your sales funnel, do the following:
1) Ensure that there are no problematic exclusions under consideration
2) Determine which exclusions are absolutely required
3) Remove unnecessary or inapplicable exclusions
4) Size the opportunity and effort involved in minimizing the impact of the remaining exclusions
• In our hypothetical example, we follow the above steps and get the following:
1) Ensure that there are no problematic exclusions under consideration
• We suspect that the credit score exclusion might have been applicable for another waterfall that
was used by the team that gave us the data, but we are convinced that (a) it's not relevant for our
marketing campaign and (b) might have been given to us in violation of affiliate sharing laws.
• Consider involving members of a Compliance and/or Legal team to help determine which
exclusions should not be applied. We will remove the credit_score exclusion.
2) Determine which exclusions are absolutely required
• Discussions between the appropriate departments have failed to convince the premier customer
segment manager to allow marketing to that segment. As a result, the premier_customer
exclusion cannot be removed.
• We agree that the special_restrictions exclusion should not be removed.
• Also, if we don't have email addresses, we cannot email customers, so the email_not_provided
exclusion cannot be removed.
13
14. Steps to building your own waterfall code (cont'd)
• In our hypothetical example, we follow the above steps and get the following (cont'd):
3) Remove unnecessary or inapplicable exclusions
• Homeownership is not relevant to our marketing campaign, so we will remove the non-
homeowner exclusion.
• Income is not relevant to our marketing campaign, so we will remove the income exclusion.
• Income may be relevant to a future part of our sales funnel analysis, but at this point, we should
not exclude customers on this basis.
• Data that may be unsuitable for purposes of exclusion may be suitable for analytical purposes.
4) Size the opportunity and effort involved in minimizing the impact of the remaining exclusions
• As previously mentioned, if we don't have email addresses, we cannot email customers, so the
email not provided exclusion cannot be removed.
• Getting additional email addresses is a method of expanding the sales funnel, and we will size the
effort associated with getting those email addresses.
14
15. Our final waterfall for contact via email
• Create the email waterfall by making these changes to waterfall 1:
• Comment out (or delete) code related to the unused exclusions, and change the formula for
exclusion_count to account for the actual exclusions used. Name the new waterfall "waterfall3"
• Running waterfall 3 and summarizing the results shows 71,785 waterfall survivors – almost double the
36,735 survivors of waterfalls 1 and 2.
15
Keep these exclusions Remove these exclusions
email_not_provided credit_score_exclude
special_restrictions not_homeowner
premier_customer income_exclude
/*
else if credit_score_exclude=1 then do;
exclusion_order=4;
exclusion_desc='low credit score';
end;
else if income_exclude=1 then do;
exclusion_order=5;
exclusion_desc='low income';
end;
else email_not_provided then do;
exclusion_order=6;
exclusion_desc='email not provided';
end;
*/
/*
exclusion_count=sum(email_not_provided,
special_restrictions, premier_customer,
not_homeowner, credit_score_exclude,
income_exclude);
*/
exclusion_count=sum(email_not_provided,
special_restrictions, premier_customer);
Waterfall 3
Obs exclusion_order exclusion_desc customer_count
1 1 email not provided 19,880
2 2 special restrictions 5,942
3 3 premier customer 2,303
4 7 do not exclude 71,785
17. Our status thus far
• We started out being given a waterfall that suggested we would only be able to contact 36,735
customers by email. Through our efforts, we now have a waterfall that allows us to contact 71,785
customers by email.
• However, note that even after we've doubled the number of waterfall survivors, we're still missing the
email addresses of 20% of customers enrolled in the program (recall that we have valid email addresses
for 80,120 customers in the loyalty program).
• We can proceed with the email campaign, but at some point, senior management wants us to
investigate the issue of email addresses not being provided.
• The hope is that we will determine the causes, and suggest remedies.
• We want to know how much effort would be involved in determining the causes, and what the
expected benefits would be. This will be discussed in more detail below.
• In the meantime, our two options for contacting these customers – this is really just a choice of contact
channel – are:
• To help senior management decide which option to use, we will create performance estimates for each
(i.e., do some opportunity sizing).
• At this time, incorporating financial data into our analysis would be helpful.
17
1) Contact all eligible loyalty program customers by email (where eligibility is
determined by the email waterfall), since email has a much lower cost than direct
mail, even though it is much less effective in generating responses, or
2) Contact all eligible loyalty program customers by direct mail (where eligibility is
determined by the direct mail waterfall – not yet developed), since direct mail has a
much better response rate than email, even though it is much more expensive.
18. • We need some financial data appended to the above data to help us evaluate option 1 vs option 2. This
is the information we were able to obtain:
• A sample of the data set appears here:
Appending financial data for opportunity sizing
Variable Definition
customer_id A unique customer identifier.
exp_ann_sales_from_us
The amount that we expect the customer to spend in the next 12 months from our stores
in the absence of any special marketing promotion. This can be based on actual sales,
demographic data, predictive models, etc.
exp_ann_sales_total
The amount that we expect the customer to spend in the next 12 months from all stores,
including our own. This can be based on actual sales, demographic data, predictive
models, etc.
exp_ann_sales_oppty Defined as exp_ann_sales_total minus exp_ann_sales_from_us.
18
Traditional sales funnel
analysis often focuses on
customers that fall out at each
stage of the waterfall.
By adding a financial
component to that analysis,
and learning where financial
opportunity falls out, you can
make more informed decisions.
19. • We merge the financial data with the source data set we used in waterfall 3 using customer_id, then
we run that combined data set though waterfall 3.
• We then summarize the results as previously shown, but we include summations of financial data in
our exclusion profile code, to get the following exclusion profiles with sizing information:
• This tells us that the 71,875 customers who would be eligible for our email campaign already generate
$27.1MM in sales for us, and about $40.9MM for our competitors.
Exclusion profiles with financial information appended for sizing
19
Waterfall 3: General exclusion profile with sizing information
Obs email_not_provided special_restrictions premier_customer customer_count exp_ann_sales_from_us exp_ann_sales_total exp_ann_sales_oppty
1 0 0 0 71,875 27,128,911$ 67,996,310$ 40,867,399$
2 0 0 1 2,303 852,873$ 2,971,919$ 2,119,046$
3 0 1 0 5,773 2,204,740$ 5,535,127$ 3,330,387$
4 0 1 1 169 68,205$ 236,036$ 167,831$
5 1 0 0 17,788 6,707,992$ 16,751,480$ 10,043,488$
6 1 0 1 552 210,006$ 737,378$ 527,372$
7 1 1 0 1,492 567,509$ 1,417,768$ 850,259$
8 1 1 1 48 18,100$ 68,260$ 50,160$
Waterfall 3: Unique exclusion profile with sizing information
Obs email_not_provided special_restrictions premier_customer customer_count exp_ann_sales_from_us exp_ann_sales_total exp_ann_sales_oppty
1 0 0 1 2,303 852,873$ 2,971,919$ 2,119,046$
2 0 1 0 5,773 2,204,740$ 5,535,127$ 3,330,387$
3 1 0 0 17,788 6,707,992$ 16,751,480$ 10,043,488$
20. Sizing contact via direct mail without a direct mail waterfall
• You world create the direct mail waterfall by making these changes to the email waterfall (waterfall 3):
• Important note:
• While a new direct mail waterfall would be necessary to conduct a direct mail campaign, it is not
always necessary to create new waterfall code for opportunity sizing.
• In this case, by inspecting the unique exclusion profile for waterfall 3, we know that removing the
email_not_provided exclusion (and no others) will add 17,788 waterfall survivors to the 71,785
waterfall 3 survivors, so that we end up with 89,663 customers that we can contact through
direct mail.
• Similarly, we see that the expected annual sales opportunity is $40.9MM if the
email_not_provided exclusion is applied, but if it is removed, it will increase by $10.0MM so that
it equals $50.9MM.
20
Waterfall 3: General exclusion profile with sizing information
Obs email_not_provided special_restrictions premier_customer customer_count exp_ann_sales_from_us exp_ann_sales_total exp_ann_sales_oppty
1 0 0 0 71,875 27,128,911$ 67,996,310$ 40,867,399$
2 0 0 1 2,303 852,873$ 2,971,919$ 2,119,046$
3 0 1 0 5,773 2,204,740$ 5,535,127$ 3,330,387$
4 0 1 1 169 68,205$ 236,036$ 167,831$
5 1 0 0 17,788 6,707,992$ 16,751,480$ 10,043,488$
6 1 0 1 552 210,006$ 737,378$ 527,372$
7 1 1 0 1,492 567,509$ 1,417,768$ 850,259$
8 1 1 1 48 18,100$ 68,260$ 50,160$
Waterfall 3: Unique exclusion profile with sizing information
Obs email_not_provided special_restrictions premier_customer customer_count exp_ann_sales_from_us exp_ann_sales_total exp_ann_sales_oppty
1 0 0 1 2,303 852,873$ 2,971,919$ 2,119,046$
2 0 1 0 5,773 2,204,740$ 5,535,127$ 3,330,387$
3 1 0 0 17,788 6,707,992$ 16,751,480$ 10,043,488$
21. Opportunity sizing direct mail vs email
• We develop performance estimates using some assumptions based on past experience, models,
etc., and obtain the following:
• Note that email is not free. The cost of email includes everything from server and software costs to
legal review of the email piece.
• Overall, the direct mail option is expected to generate more sales than the email option (see
column I: $687K vs $110K). However, when considering incremental sales per marketing dollar
spent, email is 6x more effective ($34.12 vs. $5.68).
• Senior management reviewed this information and decided that they would rather use email than
direct mail, because they would rather spend $3.2K to increase sales by $110K, than spend $121K
to increase sales by $687K.
21
Channel
Customers
Eligible for
Contact
Control
Group %
Customers
Contacted
Expected
Response
Rate
Expected
Responders
Expected Avg
Annual Sales
Opportunity
(from profiles)
Expected
Incremental
Sales (%)
Expected
Incremental
Sales ($)
Expected
Sales from us
(from
profiles)
Increase in
sales (%)
Contact
Cost per
Piece
Contact
Cost
Incremental
Sales per
Marketing
Dollar
(A) (B) (C) (D) (E) (F) (G) (H) (I) (J) (K) (L) (M) (N)
=(B)x(1-(C)) =(E)x(D) =(F)x(G)x(H) =(I)/(J) =(L)x(D) =(I)/(M)
Direct mail 89,663 10% 80,697 5.0% 4,035 568$ 30.00% 687,297$ 33,836,833$ 2.0% 1.50$ 121,045$ 5.68$
Email 71,875 10% 64,688 1.0% 647 569$ 30.00% 110,342$ 27,128,911$ 0.4% 0.05$ 3,234$ 34.12$
= Assumptions based on past experience, models, etc.
22. Our status thus far
• We expanded our sales funnel by reviewing our exclusions and only keeping those that were
necessary.
• We used that information to size the expected results of a direct mail campaign vs an email
campaign.
• Senior management used our work to make an informed marketing decision – use email rather
than direct mail.
• However, this decision makes the number of customers excluded due to our not having
customer email address a much more visible issue.
• What can be done about the fact that 17,788 customers would be excluded simply because
we don't have their email address?
22
Channel
Customers
Eligible for
Contact
Control
Group %
Customers
Contacted
Expected
Response
Rate
Expected
Responders
Expected Avg
Annual Sales
Opportunity
(from profiles)
Expected
Incremental
Sales (%)
Expected
Incremental
Sales ($)
Expected
Sales from us
(from
profiles)
Increase in
sales (%)
Contact
Cost per
Piece
Contact
Cost
Incremental
Sales per
Marketing
Dollar
(A) (B) (C) (D) (E) (F) (G) (H) (I) (J) (K) (L) (M) (N)
=(B)x(1-(C)) =(E)x(D) =(F)x(G)x(H) =(I)/(J) =(L)x(D) =(I)/(M)
Direct mail 89,663 10% 80,697 5.0% 4,035 568$ 30.00% 687,297$ 33,836,833$ 2.0% 1.50$ 121,045$ 5.68$
Email 71,875 10% 64,688 1.0% 647 569$ 30.00% 110,342$ 27,128,911$ 0.4% 0.05$ 3,234$ 34.12$
= Assumptions based on past experience, models, etc.
23. A closer look at the email sales exclusion by region
• Investigation of our data by sales region led to the discovery that there are significant differences by sales
region in whether or not a customer's email has been provided.
• We observe in the table on the left that sales region B has a significantly higher percentage of customers with
no email provided: 41.07%, vs 4.73% for region A and 16.65% for region C.
• In addition, the table on the right shows that of the $11.5MM worth of expected annual sales opportunity
belonging to customers with email_not_provided=1, $8.0MM (70%) belongs to the 13,877 customers in
region B with email_not_provided=1.
23
/* Frequency of email_not_provided by
sales_region */
proc freq data=s.waterfall3_w_appends;
/* No 'weight' */
tables sales_region*email_not_provided /
format=comma12. nocol nopercent;
title 'Customer count by sales region and email
exclusion';
run;
/* Frequency of email_not_provided by
sales_region */
proc freq data=s.waterfall3_w_appends;
weight exp_ann_sales_oppty;
tables sales_region*email_not_provided /
format=dollar12. nocol nopercent;
title 'Expected annual sales opportunity by
sales region and email exclusion';
run;
Customer count by sales region and email exclusion
The FREQ Procedure
Table of sales_region by email_not_provided
email_not_provided
0 1 Total
sales_region
A Frequency 40,139 1,994 42,133
Row Pct 95.27 4.73
B Frequency 19,914 13,877 33,791
Row Pct 58.93 41.07
C Frequency 20,067 4,009 24,076
Row Pct 83.35 16.65
Total Frequency 80,120 19,880 100,000
Expected annual sales opportunity by sales region and email exclusion
The FREQ Procedure
Table of sales_region by email_not_provided
email_not_provided
0 1 Total
sales_region
A Frequency $23,291,547 $1,150,341 $24,441,888
Row Pct 95.29 4.71
B Frequency $11,507,738 $8,025,619 $19,533,357
Row Pct 58.91 41.09
C Frequency $11,385,378 $2,295,319 $13,680,697
Row Pct 83.22 16.78
Total Frequency $46,184,663 $11,471,279 $57,655,942
24. Sizing a sales funnel expansion
• The higher percentage of customers with email not provided in sales region B could be for any number
of reasons, including but not limited to:
1) Fewer customers in this region having an email address.
2) More customers in this region choosing not to provide their email address.
3) Sales associates in this region unsuccessfully requesting, or failing to request email addresses.
4) Problems with the process by which loyalty program enrollment data from this region, but not
the others, is made available for use within the corporation (e.g., problem with the data feed).
• Understanding the root cause of the problem, and how it might be addressed, are necessary for
effectively sizing the expansion.
• Senior management wants us to size the effort and likely outcome of an initiative to gather more
emails from customers in sales region B. In theory, this could result in a significant sales funnel
expansion.
• We can rerun waterfall3 just for customers in sales region B, remembering to ensure that
exactly_one_excl=sum(email_not_provided,special_restrictions,premier_customer), since those are
the only three exclusions in effect for the email waterfall.
• We summarize and get the following unique exclusion profile:
24
25. Sizing a sales funnel expansion (cont'd)
• This tells us that if we get emails for every customer in sales region B, the maximum impact it would
have is
• Allowing 12,416 more customers to survive the waterfall, and
• Increasing annual sales by an estimated $7,024,480.
• If fully realized, this would be an expansion of the sales funnel:
• By 17% in terms of customers: 12,416/71,875 = 17%
• By 26% in terms of possible sales: ($7,024,480 in exp_ann_sales_oppty)/($27,128,911 in
exp_ann_sales_on_us) = 26%
• However, it is unlikely in the extreme that we would get an email address for all of these customers,
much less fully realize the full sales opportunity. That would be expecting all of them to get email
addresses and give them to us, and respond to our campaign, and to shop only with us and nowhere
else.
• Even so, the unique exclusion profile suggests that addressing this exclusion offers more opportunity
(by customers and by sales) than addressing the others.
• We would expect an additional sales opportunity of $566 for each customer in sales region B that gives
us an email address ($7,024,480 / 12,416 = $566).
25
26. Sizing a sales funnel expansion (cont'd)
• Sizing this more completely results in the following:
• Even with the favorable assumptions in the above table, the expansion would result in a paltry sales increase of
0.03%.
• Another way to look at this: Out of $7.0MM in potential additional sales opportunity (from the unique exclusion
profile), we're expecting to realize only $7.6K (0.11% of the total).
• To get the full $7.0MM in additional sales opportunity, we would need
• Column C = 100% (i.e., get every person to create and give us their email address)
• Column E = 0% (i.e., no control group)
• Column G = 100% (i.e., all of them redeem their offers in store or online)
• Column J = 100% (i.e., all of them buy from us whatever they would have bought from a competitor)
26
Channel
Customers
Eligible for
Contact
Add'l
Emails
Expected
(%)
Add'l
Emails
Expected
($)
Control
Group %
Customers
Contacted
Expected
Response
Rate
Expected
Responders
Expected Avg
Annual Sales
Opportunity
(from profiles)
Expected
Incremental
Sales (%)
Expected
Incremental
Sales ($)
Expected Sales from us
for customers in the
email campaign (from
profiles)
Increase in
sales (%)
(A) (B) (C) (D) (E) (F) (G) (H) (I) (J) (K) (L) (M)
=(C)x(B) =(B)x(1-(E)) =(G)x(F) =(H)x(I)x(J) =(K)/(L)
Email 12,416 20% 2,483 10% 2,235 2.0% 45 566$ 30.00% 7,586$ 27,128,911$ 0.03%
= Assumptions based on past experience, models, etc.
27. Final thoughts on sizing a sales funnel expansion
• The most important part of sizing is ensuring that you really captured all the necessary information:
• What are the costs associated with the expansion? For example, if training will be done, how much does the
training cost? What about lost work time to train sales associates?
• How would our numbers change if we expected the loyalty program enrollment to grow 1% per month,
rather than stay at 100,000?
• What if sales region B was enrolling new members at twice the rate of other sales regions?
• We're assuming that the only gains we get are from additional sales. What if we would lose sales from not
running these campaigns when our competitors did run such campaigns? That would mean that our
incremental sales figures are understated.
• What about the halo effect? It's possible that customers who received a circular but didn't redeem any offers
could have increased their spending on other items in your store.
• Should we size the impact on one campaign only? Wouldn't the benefits of training the sales associates
positively impact every campaign from that point forward?
• If the training is successful, wouldn't we consider conducting it in other sales regions? Should we size the
benefits and costs of that?
• After you've answered those questions, derive a performance estimate, consider the costs, and ask if the sales
funnel expansion is worth it.
27
28. Thank you
Acknowledgements
The author thanks Kaiqing Fan for accepting his presentation, and Mary MacDougall for her tireless efforts over
many years in keeping SAS users connected, and all those who helped organize the 2018 Ohio SAS Users
Conference.
Disclaimer
The contents of this paper are the work of the author and do not necessarily represent the opinions,
recommendations, or practices of his employer.
Trademarks
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS
Institute Inc. in the USA and other countries. ® indicates USA registration. Other brand and product names are
trademarks of their respective companies.
Author information
Michael Mina is a Vice President in the Decision Science Department of PNC Financial Services. Over the course of
his career, he has worked in banking, consulting, insurance, healthcare management, benefit services, and
academia. He was a presenter at the 2009 Midwest SAS Users Group (MWSUG) Conference, and is scheduled to
present at the upcoming 2018 Advanced Research Techniques (ART) Forum of the American Marketing
Association.
Questions and comments can be sent to:
Michael Mina
Email: michael.mina@att.net
Website: http://michaelmina.info
LinkedIn: https://www.linkedin.com/in/michaelmina/
28