Allison Sparrow

Tech Marketing

Tag: marketo

A/B Testing Emails in Marketo

This post outlines how to test emails when you want to:

  • test for statistical significance
  • test an email in a nurture
  • have clear reporting when using an email performance report
  • track what variation a lead received

Email Programs are great to use if you are just getting started with A/B Testing. Email programs allow you to test a variety of different elements in your email, and then declare a winner after a send.


But what about when you want to A/B test an email in your nurture program? Email Programs come with their limitations:


I’m going to show you how I A/B test my email blasts and email nurtures. See this as a different way to test if you have one of the challenges above.

An A/B test for a simple email is easy to set up, and usually your objective will be opens and/or clicks. As pre-work, I strongly recommend outlining your hypothesis, goals and variable for your A/B test. You can use the framework I’ve outlined in my other post as a reference. Here’s an example of an email A/B test outline.

In this example, we are going to

  • test an email used in a nurture program
  • create a 50/50 split test
  • test the subject line as a variable

Start from a default program in Marketo

First, create a program in Marketo that contains an email. If you are going to test an existing email that’s already live, skip this part and jump to the next section: Emails.



Create your control email. This is the email that you’re going to try and beat out with your variation email.

You may be testing an existing email, or you may be creating a new email. You want your control email to be the content that you want to beat. So if your hypothesis is that “a funny subject line will be more effective than a serious one,” your control email will be the serious one.

Once your control email is completely reviewed, tested and approved, simply clone that email and append v2 to the new variation:


Smart Campaigns

OK! Now you’re going to set up campaigns that will automate the testing for you.

Campaign: Send Email

Depending on whether this is a blast or an email nurture, the Smart List will vary. Everything else is the same. In this example, I’ll show how you set it up as a nurture email.

Smart List

Member of any Engagement Program (the filter lies in the stream itself, when you drag the entire program into the stream).





Do nothing

For Nuture

Add to Engagement Stream



Activate the campaign



Let’s create a basic report so you can check your test at a moment’s notice!

Report: Email Performance

Smart List: none


Sent Date: All Time

Marketing Activities Emails: Email .v1, Email .v2


That’s it! So simple! Now when you look at your email performance report, you will easily see which one is performing better:



Create a High Impact Nurture Program, Every Time: Implementation

Build a data-driven engagement program in Marketo

The hardest part is behind you, the pre-work will not only force your team to align, but you now have a clear roadmap for what to track in Marketo! You will thank me, I promise. Now for the fun stuff.

In this example, we are going to create a 50/50 split test! First, create your Engagement program.* Once you’ve done that, we will add the following elements to it.

program screenshot

*If you’re interested in the naming conventions we use, I stole this from Edward Unthank, who’s concepts I really like.

What we will create:

  • Smart Lists
  • Static Lists
  • Reports
  • Smart Campaigns

Smart Lists

I like having reports to reference and play with in Marketo. I’ll walk you through how I create Baseline reports and Smart Lists for the engagement program.

You’ll be making 3 Smart Lists:

  1. Baseline Target Audience
  2. Baseline Conversion TA
  3. Target Audience (All Time)

Smart List: Baseline Target Audience

You should already have identified how your target audience has performed in the past against the variable you want to improve. We are going to create two smart lists in Marketo so that you can easily refer to the leads meet this criteria.

Here’s my Baseline Target Audience list. You won’t always need to restrict it by year, but it may make you more confident in the numbers.

baseline target audience

Smart List: Baseline Conversion Target Audience

Now from that list, I want a smart list that shows how many of those leads converted. Clone the TA 2015 list, and add an additional filter, for the variable you’re tracking

baseline target audience smart list

Smart List: Target Audience (All Time)

As a nice to have, I also create a Smart List that looks for any lead that qualifies, despite the year, for easy reference.

target audience all time

Static Lists

Static lists are helpful because they don’t need to cache. Super complicated smart lists can take a long time to load.

You’ll be making 4 Static Lists:

  1. Target Audience
  2. Control Group
  3. Variation Group
  4. Converted Group

Static List: Target Audience

This list will be a catch-all bucket for all leads that, moving forward, qualify for the nurture.

For this example, I’m not going to retroactively put leads into this program. When I activate it, it will only be effective for new leads that apply moving forward.  I think it’s cleaner to start fresh.

Static List: Control Group

Half of the leads that qualify for this nurture will go into this list. This is the group that *won’t* be receiving the new email nurture.

Static List: Variation Group

The other half of the leads that qualify for this nurture will go into this list. This is the group that *will* be receiving the email nurture.

Static List: Converted Group

This is going to be where you add any lead that qualifies for nurture, and that performs the desired activity you wish for them to do. They could be a member of either list!


Let’s create some basic reports so you’re ready to check on your nurture program’s progress at a moment’s notice! Reports can be a little clunky to set up, and if you’re using smart lists, they can take a while to load. Fortunately, you’ve set up Static Lists that will automatically be up to date once you have your Nurture Program running. Your reports will load super quickly.

You’ll create 3 reports:

  1. Baseline Conversion Lead Performance
  2. Control Group Conversion Lead Performance
  3. Variation Group Conversion Lead Performance

Report: Baseline Conversion Lead Performance

This is the report you can link to in your Nurture Roadmap doc when presenting the baseline conversion rate for your target audience.

Smart List:

Member of Target Audience 2015

baseline ta 2015


Lead Created at: 2015, Group Leads by Account Created Date (variable metric)

baseline report setup

Report: Control Group Conversion Lead Performance

This report will allow you to monitor the Control Group’s conversion performance. Select a Lead Performance Report out of the Report options.

Smart List:

Member of Control Group List



Group Leads by Account Created Date (variable metric)

control group setup

Now you’ll see anyone that has that field populated v. those who doesn’t!

Report: Variation Group Conversion Lead Performance

Now, clone your Control Group report and simply replace the list with the Variation Group Static List.

Smart List:

Member of Variation Group Static List



Group Leads by Account Created Date (variable metric)


Now when someone asks you how the campaign is going, you can easily look at your reports to give an answer. Proactively preparing for these ad-hoc sort of questions is really valuable. It can be deflating to have to respond with: “let me email you the results once I pull the numbers” when you’ve already done so much work!

Smart Campaigns

OK! Now you’re going to set up campaigns that will automate the testing for you. I won’t go over how to make sure the flow of your campaigns are set up correctly. Please prioritize at least a week to insert test leads through: it will save you work in the long term.

You’ll create 5 Campaigns:

  1. Add to List
  2. Add to Test
  3. Add to Stream
  4. Converted

Campaign: Add to List

I like the “Add to List” trigger as much as the “Request a Campaign” trigger. It ensures you aren’t bogging up your campaign queue in Marketo.

This campaign is going to be your Trigger List: using whatever action the lead takes in order to qualify for this nurture program. This example nurture is for new leads created from a particular source. I do not recommend using the Lead Created trigger in engagement programs. Ideally you are only using the Lead Created trigger once in your entire Marketo instance. If your target audience is TOFU, I recommend doing a Daily Batch campaign. That way you don’t have crazy backlogs, and it’s easier to control. Here’s how I would set up this example:

Smart List

campaign add to list

Note these filters should be very similar to your Target Audience Smart List!


campaign flow


Daily, Each Lead can flow through ONCE


Campaign: Add to Test

Smart List

add to stream


Request Welcome Email (if you want an email to go out right away), Add to List using Random Sample




Campaign: Add to Stream

Smart List





Note that I’m only adding those who receive the email as members of the Engagement Program. That means I’m going to perform my A/B test analysis outside of the Program metrics. This way the Engagement Program only looks at conversions for those who actually received the emails. If the program is successful, all I have to do is deactivate the Add to Test Campaign, and change the Add to Stream trigger to be Add to Target Audience (If it does go through however, I’d probably create a clean static list. But I’m OCD like that).



Campaign: Converted

Smart List

Triggered, based on a field update. My filter is member of both variations.



if they are part of the variation (leads receiving the email) their status will change. All members will be added to the list. If they are part of the variation (leads receiving the email) their status will change. All members will be added to the list.




Intro | Part 1

© 2018 Allison Sparrow

Theme by Anders NorenUp ↑