Showing posts with label Conditions. Show all posts
Showing posts with label Conditions. Show all posts

Thursday, March 7, 2013

Using Sitecore Engagement Plans as an Audience Segmentation Tool

Engagement Plan as Audience Segmenter

I've been kicking around the idea of, instead of strictly mapping out a customer journey with Sitecore Engagement Plans, to instead use them as a visual audience segmentation tool.  With the great analytics that Sitecore is collecting, this seems like a natural extension to be able to divide the visitors within that analytics data into well-defined categories of patterns.  I'll end this post with an idea that could be added to the current Sitecore concept of Pattern Cards (with your great development addition, of course).

image
An example audience segmentation Engagement Plan

The idea is this: use the States and Conditions of Sitecore’s Engagement Plan to get a visual indication of the distribution of your audience based on any segmentation criteria.  Since the Rules Engine is so nicely involved in the Engagement Plan Condition checks, this to me is an incredibly natural use of this tool.

The Idea in Launch Sitecore

Here’s how it falls out for Launch Sitecore.  Our audience segments are clearly defined by the groups we envision might visit us at www.launchsitecore.net.  However, this definition is strictly based on content consumption—using Sitecore’s Pattern Card matching, we simply watch for the thresholds between these content consumption patterns.  If someone is reading a lot of articles around Sitecore’s Digital Marketing System, we might conclude he appears to be a marketer.  While this is really cool and easy to do, I have always thought that these patterns need to be a bit more descriptive, inclusive of content consumption patterns and potentially a lot more.  In addition, the definition of this pattern should be flexible and open to change on an ongoing basis—without development.

Talking to a lot of smart partners and clients lately has verified my assumptions.  As we get into the real-world use cases, we talk about all the attributes that should come together to fully define a marketing persona—everything from campaigns to keyword use in search to “known” profile attributes in CRMs to landing pages to referral sources.

Enter the Rules Engine

Enter the Sitecore Rules Engine and the perfect modeling environment for this situation.  Back to Launch Sitecore and our example.  As a simple start, all I want to do is segment my visitor traffic between two opposing possibilities—the visitor appears to be a Marketer or the visitor appears to be a Technologist.  We know that a couple of our Patterns nibble at this persona, and through content consumption our visitor might look like Mark the Marketer, or Devon the Developer.  But what we’re shooting for here is a much richer definition of the age-old split between marketer and technologist.  (By the way, if you consider yourself the perfect marriage of both, give me a shout).

First, we begin with a State that everyone is going to start their journey in:
image
The initial Engagement Plan state that all our visitors start in

We also get to decide which visitors we want in this plan.  For example, we might only want to evaluate visitors from a certain campaign.  Maybe I'm writing lots of articles on digital marketing subjects, and I want to test if the readers of those articles exhibit what I've defined to be "marketer" behavior on the site.

For the visitors we decide to track in this Engagement Plan, the first assumption is that we don’t yet have enough information to define them as Marketer or Technologist.  But we can immediately rectify that by invoking the Rules Engine in our first condition check.  We could check for either, but we chose to to first see if we should deem this visitor as technical.

image
A set of conditions we can check for to see if some one is "a technologist"
Our Condition invokes the Rules Engine where we can build a very sophisticated grouping of attributes that, for us at Launch Sitecore, peg someone with the Technical label.  We’re going to use the Pattern Card matches as a possibility (now grouping a couple of them together that represent our two technical Patterns), as well as including an additional possibility that someone got to Launch Sitecore using the word “development” in their search phrase (i.e., “Sitecore development”).

While this is a simple example, hopefully you’re seeing the possibilities here.  Never mind how rich the out of the box condition set is in Sitecore (geography, site, where you are in the content hierarchy itself, etc., etc.), we also know that this condition could be absolutely anything you dream up that returns a true/false.

If the condition returns true, we’re done and place the visitor in the Technical bucket:
image
A state for those we've deemed to be Technologists
If the overall condition returns false, we drop down to the check for the Marketer:

image
A set of conditions we can check for to see if some one is "a marketer"
As before, we are able to reuse our initial logic around Pattern Cards, with Connie and Mark combining forces as a possible reason to label a visitor as a Marketer.  In addition, we look for a search keyword containing DMS (Digital Marketing System) as well as a check for my MarchBlogBlitz campaign.  Since many of my articles in this time period are covering Analytics, I’m making the assumption that we have some Marketers on our hands.  Keep in mind the ability to replace the “or”s for “and”s, giving us possibly more granular condition definition.  As above for the Technical case, if this multi-clause condition returns true, we dump the visitor in the Marketing bucket.

Nice little trick if both of these checks return false.  We simply put the visitor back into the Undecided state and let other things trigger another check (maybe the next check is done on a follow up Goal, Page Visit, Login Event or anything else we might wait for our visitor to accomplish).  We do this by one last Conditional check, which always returns True:
image
Send the visitor back until we're sure
Here’s another look at the overall plan:
image
The full audience segmentation Engagement Plan
Pretty simple, but sky’s the limit.  One really cool idea that fits nicely into this is a very simple geography breakdown.  I could have, for instance, three states representing West, Central, and Eastern United States and immediately drop visitors into those states as they enter the site based on our GEOIP resolution.  (Since I am in the world of ideas only here, be sure to appreciate performance implications of making such wholesale checks).

Manually test how a visitor maps to the plan

One last really cool thing.  Since I have lots of visitor information in our Launch Sitecore site, I can even run a visitor through my new Engagement Plan.  Using the Supervise features of Engagement Plans, I grabbed my user (the Visitor associated with my Facebook authentication).  I moved that User to my new plan and the Undecided State.  In Supervise, I can manually press the trigger:

image

Since my Conditions are checked at Session End (among other events), I chose to run the Session End Trigger.
image

Sitecore goes through the entire logic of my plan and determines that my user account should be placed in the Marketing bucket.

image
The results of manually sending someone through the plan
Way cool.

NOW GO DOWNLOAD LAUNCH SITECORE.  (Need to get that great data for my reporting experiment).  I’ll let you know how our audience trends between this new Marketing and Technologist segmentation.

Extra Credit

For the interested student and the great developer….

Where I think this would be even more interesting is to use this same logic in the Pattern Card feature of Sitecore.  My prototype took all of 2 seconds (since it doesn’t in any way work).  But for an enterprising developer that adds the Rules logic to the Pattern Card check, this seems like a killer feature:

image

This becomes especially interesting considering Pattern Cards are an automatic dimension of Sitecore’s Analytics reporting.

Tuesday, January 29, 2013

“Dynamic” Goals in Sitecore CEP and Google Analytics

A quick aside as I continue to compare and contrast my experience setting up GA with my current understanding of Sitecore CEP….

I started thinking about Goals in a much more dynamic way.  While I appreciate the Engagement Value that Sitecore assigns to the Goals you can model directly in the system, I often get the feedback that goes something like, “yeah, but we might have one goal that would be worth very different things based on other factors, like where it’s accomplished, on which site, based on whether the visitor has accomplished something else”, etc., etc., etc.

As always, in ECommerce this is usually pretty straightforward.  Goal = Purchase, and Value = Invoice Total.  With most of our Goals, though, the Value can be much harder to agree on.  I like the example here of a site registration Goal.  Two different departments might have this same Goal, but they might weight it very differently in terms of Value.  One department has determined that registration leads to a particularly high ECommerce conversion rate, so they feel the act of registration itself should be high up the Engagement Value pyramid.  Another department, while still wanting to track the Registration goal occurrence, hasn’t seen the same focused correlation towards their interesting conversions.

While we can certainly consider setting up different Goals for the different purposes (and starting down the path of Department 1 Registration, Department 2 Registration), what I like about the opportunity of this use case is to detach the Engagement Value from the Goal itself.  The simplest code sample I could think of is below:

if (Sitecore.Analytics.Tracker.IsActive)
Tracker.CurrentVisit.Value += 1000;
 



where we arbitrarily add 1000 Engagement Value points to the current Visit.  While this is oversimplified, it highlights the main point here….let additional logic determine the actual Engagement Value based on additional criteria (in the Sitecore Context or otherwise),  and then promote the simple maintenance of that additional criteria.

Tying to a CRM for an attribute like this could be very interesting (salespeople determining the value of a demo request for their own region).  I also like the idea of modeling this as Sitecore content.  Maybe a Goal should look at where it is in Context to the content hierarchy (if the current item has a Value use it, if not look up the tree, etc.).  Probably better—model this in the Rules Editor (multiple clause condition like “if item is subitem of books section, and visit number is greater than 5”).

I started down this path as it’s taking me longer and longer to figure out how to model complex Goal achievement in Google Analytics.  Of course I’m quite biased towards Sitecore here, but thinking through the Sitecore API possibilities, coupled with allowing content authors easy maintenance has been quite a bit more exciting than considering all the landing pages I’d need so far in my Google Analytics Goal scenarios.  To be fair, I have to dig deeper into GA and see what I get from their API.

Wednesday, September 14, 2011

Sitecore Customer Engagement Platform: Segmenting the Audience

I'm amazed at the richness of the conditions that exist in Sitecore's Customer Engagement platform that can be used to strategize audience segmentation.  This new release takes huge leaps towards the very exciting goal of synthesizing customer activity--online, offline, implicit behavior, explicit profile attributes (either in Sitecore or external to it), channel activity based on email campaigns, mobile experiences, subscriptions, external social sites and much more.

I've had lots of conversations recently that boil down to "where do I begin?"

Mark Twain reminds us:
"Never put off till tomorrow, what you can do the day after tomorrow."
Remember, this is a marathon, not a sprint.  The great thing is, you've chosen (or are now choosing) a Customer Engagement Platform that is built on the groundwork of THE world-class Sitecore Web Content Management System.  This is not a new building.  This is not new set of really high floors set to topple.  This is an expansion of an amazing platform that is the right combination of high and wide, with incredibly sturdy sections all over the place that are ready for your designer touches, when you're ready.  (Walk around for a while).

But let's use another Twain quote as an addendum today:
"All good things arrive unto them that wait - and don't die in the meantime"
After all, we are trying to have the best digital marketing strategy on the planet.  Put one foot in front of the other, eat the elephant one bite at at time, and now my trite quoting is officially done.  Let's look at a really simple starting plan:


In this scenario, we decide that our visitors (or potentially even more compelling--our members or customers), are in one of four states.  These states could also be envisioned as a sales funnel, with the first state I'll describe being the entry point to the funnel:
  1. Just Browsing.  Think of this as a default state where you don't want to make any assumptions yet.  You have content for this--compelling content pages that keep this visitor engaged and circling down the funnel.  In terms of Sitecore's Customer Engagement Platform, maybe this visitor hasn't yet hit your predefined and prestrategized thresholds of goal achievement or profile values.  You're just not ready to guide this visitor in any particular direction until she "tells" you a bit more about herself.  She also hasn't logged in (although this doesn't necessarily mean that she hasn't been to your site before).
  2. Interested in featured product line.   It's the end of the quarter and you have three million of these widgets to sell.  The company is buzzing with ideas about how to promote and unload this last batch--from email newsletters going out to new subscribers, customer service agents noting the promotion to all call in customers, an add running directly on your home page and various landing pages pushing the widget.  While this impression is going to be everywhere--both online and off--you obviously don't want to assume someone is interested in the widget because they've heard about it.  Your criteria is more specific--it's the conversion, the achievement of a predefined goal you've identified as a confident assumption of customer engagement.  As we'll see, this doesn't have to be one thing.  Maybe he specifically searched Google for the exact part number of the widget.  Maybe he opens the email, goes to the landing page, and fills out a form asking for pricing.  Maybe he's downloaded both the widget installation manual AND watched the Getting Started Video.  Maybe he's talked to a customer service agent and told him that he's "very interested" in purchasing by the end of the quarter.  However he got to to this state, now you're ready.  You're ready to change his experience as he gets to the next landing page two days before the quarter ends.  He now gets the very aggressive coupon clearly presented on his arrival.
  3. Ready to buy online.  It's down to the wire and we only have a few days left to the quarter.  Salespeople are carefully watching the transition to this state.  These visitors have been presented the coupon (and maybe even that coupon was part of a multi-variate test where different messaging was presented).  There's been contact outside of the site, where customer service has entered detailed notes in the CRM about the questions asked last week.  This company's DNS record is all over your Sitecore Analytics data--multiple employees of the company have filled out Web Forms for Marketers forms and we've tagged names and email addresses.  We see conversions all over the place, from downloads, to form submissions, to poll questions showing buying intent.  Finally, we see that a shopping cart has been started and 50,000 widgets are in it.  The shopping cart is almost complete.  It's the 30th.  Time for a call.
  4. Existing customer.  Any time during the month we can have an authentication event--someone logged in and we now know him.  Whether his profile data is directly in Sitecore's security tables or sitting in Dynamics, Salesforce or another CRM or home-grown system, we know have a rich set of profile information to work with as we customize this visiting experience.  Has he purchased the Widget in the past?  Has he purchased products that are profiled in a similar way?  Has he specifically told us that he wants to receive email campaigns with these types of offers?
With the four possible states fully described, let's see some conditions we could use to personalize the experience for our visitor.  In follow up posts, I'll keep this theme alive and talk about how we could monitor this with the new Customer Engagement Platform Engagement Plans.

Keep in mind that, while there is an incredible set of predefined conditions available in Sitecore by default, this condition engine is easily extensible to account for your own very specific conditions--conditions that may be based on information in Sitecore or in any external system in your overall solution.

To keep the example simple, let's imagine a simple News Story that we're writing for our site.  You could think of this News Story as being a landing page, the Widget product page itself....whatever.  The point is that we can simply have an image control on this page that can show something different based on the state the visitor is in.

It all starts with placing our simple Show Image control on the page.  We can easily do this in the Device Editor shown below, or we can do it directly in the Page Editor:

Adding our Show Image control in Content Editor's Device Editor.
Now we can set up the set of conditions that will segregate our visiting audience into the four states.  For our example, we'll simply upload some images that are nice visual indications of the current visitor's state.  In the real world case, we might have the Image control vary the advertisement image, we may swap out the control altogether based on the visitor's state, we may have a very rich control that uses dramatically different logic, markup, access to external systems, etc.  Here's our images:
Funnel images to depict the visitor's state
Now we are able to have our Show Image control easily switch between these images.  Techically the control itself is able to switch its Data Source....point to a different content item in the overall Sitecore content tree.

Now, personalizing the component is an exercise of thinking through all the conditions that would lead to our decision that this visitor is part of a particular state.  First one is easy (working from the top of the funnel down).  Here, we just have the "Just Browsing" image, since we're not ready to differentiate the experience for the visitor based on our current information.

Now, it's on to the Interested in Product state.  We've decided that we'll determine a visitor to be interested in the Widget product if ANY of these conditions exist (we could have used AND clauses to ensure multiple factors exist):
  1. This visitor is a known user that has received an email campaign focusing on widgets from us and has opened the email.
  2. This visitor has reached a landing page we set up (maybe by browsing through the site, maybe they saw the link in a featured search result, maybe a Facebook wall post) AND they've filled out the form that they see there.
  3. This visitor reached our site by searching on a specific term in a search engine.
Here's what that set of conditions looks like using prebuilt conditions in Sitecore's Rule Set Editor:

Rule Set Editor for our multiple, independent clause condition
Similarly, we'll list the conditions that brings a visitor down to the "Ready to Buy" section of the funnel.  For our example, we decide that this person could:
  1. Have an "Engagement Value" greater than 10.  This will be covered more in my follow up posts, but think of a combination of goals, events and conversions each having a specific value associated with them.
  2. Have a user name (could just be a tag that we've captured, doesn't need to be an authentication event) of Mike Casey.  Maybe our customer service agent has talked to Mike.
  3. Be a member of the Flagged in CRM role.  More again in a future post, but our connection to a CRM could allow a non-CMS user (like a customer service agent working in a CRM) to affect the existance of this condition simply by completing their day-to-day tasks.
  4. Have a lead profile score of greater than 25.  Since your content authors are able to assign profile values to the content they create, you are now able to determine a threshold at which you'd be confident on the lead value of this visitor.
Completing our rule set by including a check for a particular customer role (this could get a lot more interesting by tying our knowledge of this customer to this clause--what products did they buy, what are their site preferences, etc), we know have a fully built out set of conditions to match a visitor into the approrpriate state:
Our finished set of conditions

Hopefully this gets you thinking about where to start and how rich the set of prebuilt conditions in Sitecore really is.  Remember that you don't have to consider sweeping changes to your Web site based on these conditions--little things, nuanced changes in site navigation, featured image spots, customized landing pages can be incredibly powerful.  In future posts we'll dive deeper into the Engagement Plans that can help us move our audience along the path towards our predefined goals for our digital strategy.