What is the best way to build a dynamic Upsell Program?
The Keys are 1. Program Re-Entry (or Loop) every 30 days after subscribing to a product (successful upsell conversion) and 2. Dynamic Segmentation to ensure they receive the version of the email that applies to them. Obviously this would require an exit condition or transition for when the Data Value Change does in fact convert from Product 1 Subscribed = FALSE to Product 1 Subscribed = TRUE. *These are boolean custom fields I created since I'm dealing with a custom CRM where custom objects cannot be used in Segmentation.
I'd like to set it up so a LEAD will not receive the 3 Upsell emails until 30 days after purchasing the previous product. And then every 30 days re-enter to be upsold.
I have 8 Products which is how the segmentation is constructed. The segmentation is built out in a product hierarchy sequence with the logic being:
01 Does Not Have Product 1 ---> then Send 3 email sequence promoting Product 1
02 Does Not Have Product 2 ---> BUT has Product 1 ---> then Send 3 Email sequence promoting Product 2
... and so on and so forth for 03 through 08.
In this thread How can I "allow" a lead to re-enter the same Engagement Program every x number of days? with tremendous help from Jay Jiang and others I was able to solve a similar issue with a dynamic never-ending Re-Engagement (Canceled Clients) program loop.
- Batch #1: date stamps Account Cancelled Date and calculates the nurture start date
- Batch #2: on nurture start date, add to list "nurture list"
- Smart Campaign A: trigger: Added to List is "nurture List" | flow: Send Email and wait sequence with last step Add to List "nurture list" (which is another way of creating a loop)
- Smart Campaign B: "Remover" trigger campaign that listens for when a lead should be removed from flow of Smart Campaign A and (optionally) removed from list "nurture list"
Will this "Loop" method also work with an Upsell Campaign meeting all the same conditions as the Canceled Program while utilizing snippets (segmentation)?
I think one option around the 'Re-Entering' a stream/program issue would be to run it once then every 30 days just clone it and re-batch and run it again as a new program. I think there is a smarter way to do it than that.
I'm sure I'm leaving out details but I don't want make this too confusing. Hopefully you get the idea. Thanks!
Solved! Go to Solution.
I would replace engagement programs with default (brown folder) programs then.
In your single smart campaign that has "add to engagement program" choices, replace the choices with "Add to list" choices
Each default program replacing the engagement programs will need it's own static list, and an additional trigger campaign listening for "Add to list" (refer to above) with the sending flow logic
The exit smart campaigns for each program can be simplified and reduced by 1 smart campaign. Because you won't need to check for content exhausted with a filter, you can directly include the "Add to List = 01 Ascension List (up-sell).Nurture List (up-sell)" at the end of the sending flow logic
The remaining exit smart campaign needs smart list: check if product of the current nurture is changed to subscribed and flow: 1) "remove from flow" of the sending flow smart campaign (instead of "change cadence = paused") and 2) "Add to List = 01 Ascension List (up-sell).Nurture List (up-sell)"
finally, to actually repeat everything all over again, create 1 more single batch campaign that checks for ALL 8 product X nurture completed = true, and flow to change data value for all (8 change data value steps) back to false. These leads will then qualify for the entry batch campaign again
Hi Ronn Burner
There are many ways to approach this but I can work with the idea you have in mind.
The contentious bit is using a boolean field for each product combined with segmentations. It can work but you'll need an extra boolean field for each of the 8 products to track that they have already gone through the nurtures for the product.
Since segmentations match on the first one, if your customer never bought the first product, they'll be forever receiving emails about the first product. Unless this is the actual behaviour you're after, you need a second boolean field that tracks if the customer has already gone through the nurture and this field can be updated using an exhausted content constraint on a Member of Engagment program special filter.
So to summarise the above
Create pairs of boolean fields for each product
one to track if the product has been purchased
one to track if the product nurture has been completed
Your segmentation smart list for each product segment would be
product ownership boolean is false
product nurture completed boolean is false
On to the actual automation solution...
You can use the same loop template program as a base with some modifications. You would just need to carefully identify your nurture entry requirements...
Ideally, have a field at the account level tracking if the account is a customer or prospect (or ex-customer) - which is updated in CRM when an opportunity closes and is won. You would use that field as a filter and filter for "Customer" AND also filter for the product segment IS NOT Default (when a record reaches Default it would mean they've either bought or completed nurtures for all of your products). You'd want this to be a trigger nurture with "added to list = up-sell list"
Your flow would be Add to Engagement program with choices for each of the 8 product segments and adding to their respective nurtures (yes you'll need to create a nurture program for each product)
In each of the product nurtures, have an exit/exhausted nurture batch campaign: Data value changes "X product ownership" = true OR member of engagement program = "X product" w/ exhausted content = true ; flow: change engagement program cadence = paused, add to list = "up-sell list" (which creates the loop by triggering the nurture entry smart campaign again and puts the lead onto the next product nurture)
Also have a separate trigger campaign that changes the X product nurture completed boolean to true when nurture content is exhausted
Eventually after the final product nurture triggers it's exit/exhausted smart campaign, and by this time the segment would have updated to Default, when the nurture entry smart campaign runs again, the record fails to qualify for the nurture because it's segment is now Default
This is great, Jay Jiang. I follow you crystal clear for 99% of this and I built it out as such. I had much of this already built but slightly different. In my mind in the "Sender" campaign of the "Loop" I could just use segmentation with snippets for the three emails but if I'm following you correctly here all 8 product nurtures will have the same 3 dynamic emails in Stream 1 of each program, right?
Ideally, have a field at the account level tracking if the account is a customer or prospect (or ex-customer) - which is updated in CRM when an opportunity closes and is won.
You would use that field as a filter and filter for "Customer" AND also filter for the product segment IS NOT Default (when a record reaches Default it would mean they've either bought or completed nurtures for all of your products)
I am handling this in the segmentation with Account Status --> is 'Active' rather than in the Smart Campaign batch. Is there any reason I should not do that? This will only be for current clients - former clients are currently being handled in another program. (We only market to clients (and canceled clients) that our sister company obtains.) It's also a one-way street here with data passing only from CRM to Marketo. I am using Data Value Changes: Product X Subscribed = True, which should work exactly the same for closed/won opportunities.
You'd want this to be a trigger nurture with "added to list = up-sell list"
Your flow would be Add to Engagement program with choices for each of the 8 product segments and adding to their respective nurtures (yes you'll need to create a nurture program for each product)
Things got a little murky here so just to summarize how I've interpreted it here is what I've built thus far:
Campaign 1 - (Batch)
Account Status is 'Active' AND Product Segment is not 'Default'
Flow: Add to List = "Nurture Up-sell List"; Add to Engagement Program = Product X, Stream 1
Now these need to be done for all 8 product engagement programs...
Campaign 2 - (Trigger) Product X Entry
Added to List = "Nurture Up-sell List"
Flow: Add to Engagement Program = Product X, Stream 1
Campaign 3 - (Batch) Exit Conditions
Data Value Changed: 'Product X Subscribed' = True OR Member of Engagement Program = True, Program is Product X, Exhausted Content = True
Flow: Change Engagement Program Cadence: 'Product X' = Paused
Campaign 4 - (Trigger) Nurture Completed
Member of Engagement Program = True, Program is Product X, Exhausted Content = True
Flow: Change Data Value: Product X Nurture Completed = True
How is the 30 Day wait after Data Value Change: Product X Subscribed = True best implemented to ensure at least 30 days have passed prior to beginning an up-sell push? In the flow of Campaign 1 before Add to List?
Eventually after the final product nurture triggers it's exit/exhausted smart campaign, and by this time the segment would have updated to Default, when the nurture entry smart campaign runs again, the record fails to qualify for the nurture because it's segment is now Default
Correct me if I'm wrong but this is set up in a way that the record moves through the first product nurture program of a product they do not have until the record either converts or receives the 3 emails (exhausts the content.) Then moves to the next product the record is not subscribed to and so on and so forth until the record runs through all of the product nurtures they are not subscribed to one time and then becomes default and will no longer enter an up-sell nurture and receive content. If that is true, how can I make this so the record resets and repeats again until they are subscribed to all 8 products? I'm back in the "re-entry" conundrum where a record can only pass through the program/stream once.
My goal is for each record to go through this up-sell nurture every 30 days until they have all 8 products sans opting out and the like.
Thank you, Sir.
In my mind in the "Sender" campaign of the "Loop" I could just use segmentation with snippets for the three emails but if I'm following you correctly here all 8 product nurtures will have the same 3 dynamic emails in Stream 1 of each program, right?
Yes you could build it in one smart campaign with 3 emails and segmentations + dynamic content, I did remember you wanting to do this but in the end I wrote down what I would have done... One thing to note about doing it in one smart campaign, if you want to add more emails for only a few of the products, things can get very messy very quickly, where as if you had one nurture for each product, just click drag the new email to the end of the stream.
I am handling this in the segmentation with Account Status --> is 'Active' rather than in the Smart Campaign batch. Is there any reason I should not do that?
I am using Data Value Changes: Product X Subscribed = True
My example there was to indicate that you ought to differentiate two states, i) a customer has purchased product A || B || C vs. ii) a customer has been marketed product A || B || C.
Whichever you intended to use "Product X Subscribed" for, if you only track 1 of these states, expect the following respectively i) you won't have a mechanism to progress to the next segment, the lead will receive emails of next product in the segmentation hierarchy and will continue to receive them until they have purchased said product. ii) you might send emails about a product the lead has already purchased
Campaign 1 - (Batch)
Account Status is 'Active' AND Product Segment is not 'Default'
Flow: Add to List = "Nurture Up-sell List"; Add to Engagement Program = Product X, Stream 1
This is not what I meant for the entry smart campaign. Sorry if I wasn't clear, but you only need 1 of this smart campaign. See below screenshot (you need to create a static list called "Upsell Nurture List"):
For the 8x engagement program solution, your flow with choices would be:
Campaign 2 - (Trigger) Product X Entry
Added to List = "Nurture Up-sell List"
Flow: Add to Engagement Program = Product X, Stream 1
This is not needed.
Campaign 3 - (Batch) Exit Conditions
Data Value Changed: 'Product X Subscribed' = True OR Member of Engagement Program = True, Program is Product X, Exhausted Content = True
Flow: Change Engagement Program Cadence: 'Product X' = Paused
I know I wrote "Data value changes" and I wrote this by mistake. While you can use a trigger campaign, I actually meant to convey a batch campaign: And you're right that you need 8 of these, one for each engagement program.
Campaign 4 - (Trigger) Nurture Completed
Member of Engagement Program = True, Program is Product X, Exhausted Content = True
Flow: Change Data Value: Product X Nurture Completed = True
You're correct with this one, but you need a field to track that the product nurture has been completed
Before you get into this I wanted to make sure we're on the same page up front - for clarity. If I'm following you correctly this is what I think we're trying to execute here. This will help you see if and/or where I'm lost. Screenshots for all are below and labeled like I have listed here.
Yes you could build it in one smart campaign with 3 emails and segmentations + dynamic content, I did remember you wanting to do this but in the end I wrote down what I would have done...
Gotcha. No dynamic content, simply unique emails per product stream. Makes sense and simplifies it. Now we're just directing traffic in the smart campaigns. Make no mistake, I completely intend to do this exactly how you would do it. I was just letting you know the path I was heading down and how far off base I was. Hence, why I'm begging you to help fix me.
One thing to note about doing it in one smart campaign, if you want to add more emails for only a few of the products, things can get very messy very quickly, where as if you had one nurture for each product, just click drag the new email to the end of the stream.
You're totally right. Intellectually, I see and understand the big picture of what we're trying to do here. It's the finite details to execute it properly I want to make sure I have right.
My example there was to indicate that you ought to differentiate two states, i) a customer has purchased product A || B || C vs. ii) a customer has been marketed product A || B || C.
Whichever you intended to use "Product X Subscribed" for, if you only track 1 of these states, expect the following respectively i) you won't have a mechanism to progress to the next segment, the lead will receive emails of next product in the segmentation hierarchy and will continue to receive them until they have purchased said product. ii) you might send emails about a product the lead has already purchased
I think I did what you suggested actually I just poorly described it. I should have been using screenshots all along to make your life easier. My apologies. I did differentiate (I think) between those two states by creating those two fields. You can see them in the screenshot below of my segmentation. The other 7 product segments mirror this one which is Product A only.
Filter 1: (FYI - for us 'Active' = client || 2,3,4 = suppression || 5 & 6 = (DMS is the name of Product A.) Nurture Completed and Subscribed are boolean fields I created for each of the 8 products.
----- Segmentation -----
This is not what I meant for the entry smart campaign. Sorry if I wasn't clear, but you only need 1 of this smart campaign. See below screenshot (you need to create a static list called "Upsell Nurture List"):
I did only build one of these smart campaigns, however, my version was clearly incorrect.
All of our records are, in fact, customers (Active). So I have product specific boolean fields indicating purchased (subscribed) for each of the 8 products. Here's where things just got confusing for me though.
With that information should my smart campaign look like the screenshot below? Using advanced filters "1 and 2 and (3 or 4 or 5 or 6 or 7 or 8 or 9 or 10)" to indicate they are currently subscribed to at least one product and which of the 8 products they are subscribed to which will then slot them accordingly in the flow.
----- Entry (Up-sell Nurture List) ----- **Only need this one smart campaign**
How should I handle the Default Choice?
Another very dumb question for you: In order to populate my "Nurture List" am I simply building a campaign with all members of the segmentation and then filtering down to specific segments in the Entry (Up-sell Nurture List) campaign?
----- Add to List "Up-sell Nurture List" ----- **Only need this one smart campaign**
I know I wrote "Data value changes" and I wrote this by mistake.
You were perfectly clear. I'm an idiot. Trying so hard to get it right I apparently took it too literal. You're leading the blind here. Sorry. And thank you!
----- Exit (Up-sell Nurture List) ----- **Need this smart campaign for each of the 8 Nurture programs**
You're correct with this one, but you need a field to track that the product nurture has been completed
I believe I have done that. DMS is the name of Product A. I have created Nurture Completed and Subscribed boolean fields for each of the 8 products.
----- Nurture Completed ----- **Need this smart campaign for each of the 8 Nurture programs**
I think we're almost on the same page.
Smart Campaigns
- Add to List "Up-sell Nurture List" - *Single SC* - List of members from segmentation to feed Up-sell Nurture campaign
It sounds like you're looking for a mechanism to add people into the loop. What I've been referring as the entry smart campaign is the loop itself, so there was a disconnect there.
Set up a weekly batch campaign with schedule "Run through once" to add people to the loop by adding them to the static list, which you have found yourself
With that information should my smart campaign look like the screenshot below? Using advanced filters 1 and 2 and (3 or 4 or 5 or 6 or 7 or 8 or 9 or 10).
Don't list each of the product subscribed booleans because your segmentation "is not default" and any of the booleans = true, clash with each other.
How should I handle the Default Choice?
As above, your smart list filter is excluding default segment, so you don't need a default choice in the flow
We are so close. I can see it. And yet I still have minor questions. I'll be brief.
The next 2 paragraphs you wrote seem like you're first saying I don't need a mechanism to add people to the loop - then saying to add people to the loop in the same batch fashion like I have in the screenshot above.
It sounds like you're looking for a mechanism to add people into the loop. What I've been referring as the entry smart campaign is the loop itself, so there was a disconnect there.
I am. You're exactly right. How are they in the loop without being in a program or added to list to begin with? I think what you're saying is the Entry Campaign is the loop itself because once records are in - no mechanism is necessary to add them to the loop again - they will continue to pass through that each time until all products are purchased or they have exhausted all content for each product engagement program. But I need to get them into the loop to begin with - and once they are in, they continue to loop until they've completed one of those two outcomes. So I do need to gather and enter records into the loop - to begin the loop - and that must be what you're saying in regards to setting up a weekly batch, right?
One thing I did overlook is the Exit Product A nurture (your naming convention in your screenshot) would actually add all "subscribers" (customers) to that product's program and "Pause" them in that engagement program as there is no need to receive that product's content - then "Add to List" and now that segment/record is, in fact, in the loop. That makes sense but I don't think that's what you meant.
This would "enter" all customers subscribed to at any 1 of those 8 products. But those customers not subscribed to any of those 8 products (we have many other lesser products) would then need to enter by being added to the static list, right?
Set up a weekly batch campaign with schedule "Run through once" to add people to the loop by adding them to the static list, which you have found yourself
The Add to List "Up-sell Nurture List campaign (screenshot above) is this isn't it?
Product Segmentation = is all (including default)
Flow: Add to List
I'm sorry. What am I missing? Are you seeing this as 3 or 4 total smart campaigns (not counting the cloned campaigns per product) - 4 right? Feels like I'm only a tiny detail away from connecting this all together and tying a bow on it. Learning these complexities and nuances are invaluable to me. Thank you.
Don't list each of the product subscribed booleans because your segmentation "is not default" and any of the booleans = true, clash with each other.
You're right. Good catch.
One thing I did overlook is the Exit Product A nurture (your naming convention in your screenshot) would actually add all "subscribers" (customers) to that product's program and "Pause" them in that engagement program...
Good catch, you'll need to check if the record is already in the engagement program like so:
4 total smart campaigns. Previously I was only thinking 3, because I left out the "add to loop" one.
The Add to List "Up-sell Nurture List campaign (screenshot above) is this isn't it?
Product Segmentation = is all (including default)
Flow: Add to List
Yes, this is the fourth smart campaign which you listed and I didn't. This will add people to the loop and you can set it up as a weekly batch.
Got it! This is such a beautiful dynamic up-sell automation. Many thank you's!
This is essentially done - but in a perfect world and since we're here...
How would you make this so the lead record repeats again and again after exhausting all programs until they are subscribed to all 8 products? I'm back in the "re-entry" conundrum where a record can only pass through the program/stream once.
Clone the program and send them through version II? I know I'd have to reset the record and/or solve for them being "Paused" and make the Product X Nurture Completed (exhausted) go from True to False. A few ways come to mind but how would you do it?
Considering that for the 4 smart campaigns I currently have, aside from the Weekly Batch - how would you set the "run through flow" schedule for them?
I would replace engagement programs with default (brown folder) programs then.
In your single smart campaign that has "add to engagement program" choices, replace the choices with "Add to list" choices
Each default program replacing the engagement programs will need it's own static list, and an additional trigger campaign listening for "Add to list" (refer to above) with the sending flow logic
The exit smart campaigns for each program can be simplified and reduced by 1 smart campaign. Because you won't need to check for content exhausted with a filter, you can directly include the "Add to List = 01 Ascension List (up-sell).Nurture List (up-sell)" at the end of the sending flow logic
The remaining exit smart campaign needs smart list: check if product of the current nurture is changed to subscribed and flow: 1) "remove from flow" of the sending flow smart campaign (instead of "change cadence = paused") and 2) "Add to List = 01 Ascension List (up-sell).Nurture List (up-sell)"
finally, to actually repeat everything all over again, create 1 more single batch campaign that checks for ALL 8 product X nurture completed = true, and flow to change data value for all (8 change data value steps) back to false. These leads will then qualify for the entry batch campaign again