How can I build a dynamic Upsell Program? | Community
Skip to main content
Level 4
August 22, 2019
Solved

How can I build a dynamic Upsell Program?

  • August 22, 2019
  • 1 reply
  • 6456 views

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.

  1. Batch #1: date stamps Account Cancelled Date and calculates the nurture start date
  2. Batch #2: on nurture start date, add to list "nurture list"
  3. 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)
  4. 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!

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by Jay_Jiang

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

1 reply

Jay_Jiang
Level 10
August 23, 2019

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

RonnBuAuthor
Level 4
August 23, 2019

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.

Jay_Jiang
Level 10
August 26, 2019
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