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.

Thursday, September 8, 2011

New Patterns in the Customer Engagement Platform

I have to admit--at first I was pretty confused about this new Patterns feature in Sitecore 6.5.  I understood the intent of allowing content authors the ability to assign a set of profile values in one fell swoop, wrapping up a bunch of attributes into a package that could be easily assigned to a piece of content they are working on.  Now, when I'm writing an article for instance, I could envision "who" this article is most targeted towards, give that audience member a name and face and set of "typical" demographic information.

The confusion in my head came down to terminology....profiles, profile cards, patterns, personas.  This won't be official documentation (Sitecore has plenty of that), but instead a quick and goofy example of how I started to get my own head around these concepts.  Specifically, this will dive into the Patterns concept, as I think you'll agree that this is an amazingly cool new feature in Sitecore's personalization engine.

One statement that helped me understand the difference between Profile Cards and Patterns:  Profile Cards are for assigning attribute values to content items.  Patterns allow rules to assess how closely a visitor matches an expected "mix" of attribute values.

Now starts my goofy example.  Instead of wrapping my head around nebulous attributes (yours will of course be concrete and real-world), I wanted to think about three cartoon characters that differed along three attribute axes.  The three axes--partyer, academic and worker:

Homer Simpson doesn't have a ton of redeeming qualities.  Donuts and beer provide sustenance.  He wins on the partyer scale:
While still showing hope with a value of 1 for Worker and Academic, Homer is off the charts at 10 on the Partyer scale
Scooby Doo is driven by snacks, but this leads to a particularly strong work ethic.  He wins on the Worker scale:
Scooby's snacks drive his work ethic.  A smart and fun loving dog, he still gets 1's for Academic and Partyer



Brian Griffin gets a little tricky.  Martinis are definitely a weakness, but his self-proclaimed academic prowess is what we'll concentrate on.  And for this example's simplicity sake, we'll hide his partying ways:

A true academic (let's concentrate on how he sees himself)
OK, let's see what we've done here.  Below is the area of the content tree where we can model profile attributes, profile cards and patterns:


In the Marketing Center, under the Profiles item we see the overall Profile I created, called Characters.  Directly under Characters are the three Profile Keys (which I've been calling attributes) that make up the possible segregation within the profile.  Remember that this is a mix--I can be on a scale of values between all these Profile Keys.  Profile Keys have a minimum and maximum value so you can decide on the granularity that content authors will have as they assign these values.

Notice there are no Profile Cards included above.  I kept this out on purpose--let's stick to one thing at a time.  Profile Cards would have allowed me to create a predefined mix of attributes that a content author could assign to a piece of content in one operation.  It could LOOK exactly like the patterns above, but a profile card's purpose is to promote the simple and consistent application of these Profile Keys to content.  The way I have it now (as we'll soon see) I will have to assign the value of 10 for Academic, 1 for Partyer and 1 for Worker individually.  Had I created a Profile Card, I could have assigned Brian Griffin to get the same result of those independent Profile Key assignments.

But let's get back to Patterns.  As you can see, under the Pattern Cards item, I added three new Pattern Cards (those are the screen shots with the character images above).  Basically a Pattern is an anticipation of shapes between the axis in the overall Profile.

Because Brian Griffin would be interested, I have to include the formula Sitecore uses to decide which Pattern is matched: 

Squared Euclidean Distance
d(p,q) = (p1 − q1)2 + (p2 − q2)2 + ... + (pi − qi)2 + ... + (pn − qn)2

For you Homers...ah, forget it you already stopped reading.

Thanks to Adam Conn for a much more serious coverage of this subject.

In our example, let's think of it like this.  We're going to label a visitor of our site with one of these characters.  A visitor is always going to be one....they might move from being a Homer to a Brian as they start reading more about the Ivy League.  They might move from Brian to Scooby as they read about the Industrial Revolution.  But they will always be one.

Now our controls on our Sitecore pages know who are visitor is at any one time and can start customizing the experience.  10% off on Scooby Snacks, Happy Hour tickets, virtual tours of the Louvre.  Maybe it's not so dramatic--a movement of a message from the bottom right to the top left, a slight reordering of navigation elements.

Two parts to accomplish this:

First, we have to get smart about our content authoring process, our workflow and review process.  Let's ensure that assigning Profile Keys is an important part of the content lifecycle.  Below you'll see an article that I'm writing called Martinis and Novels (shamelessly pandering to the Brian Griffin crowd).  In addition to the article itself, I've decided to apply the appropriate Profile Keys (remember for simplicity's sake I'm pandering to Brian's self-proclaimed academic prowess).

Clicking on the Profile icons on the right hand side of the Content Editor screen brings up this dialog



I've assigned the value of 10 for Academic, 1 for Partyer and 1 for Worker to my news article.  Now as a visitor browses to my article page, they accumulate those values for their session (or even across multiple sessions).  The "shape" of my article is a triangle that reaches high on the Academic scale and low on the other two.
 
I'd now go through a similar exercise for my articles targeted at other audiences and each content item will carry its own shape.  Doughnuts and Beer will reach way over on the Partyer axis.
 
Second, we want to implement a Rule on one of our controls that takes advantage of this shape matching.  We'll keep it simple and just show a different image (technically we'll change the Data Source of our control to point to a different content item containing an Image field).  Below shows how I can accomplish this in the Sitecore 6.5 Page Editor.  I have a simple control that renders an image.  It's default data source (the image it chooses) is the question mark.  Based on our pattern matching, though, I will switch the image to the appropriate content item that contains an image targeted towards that character:

This is an pre-built rule available in Sitecore 6.5.  I am able to simply look for a condition where the pattern matches the Profile Key distribution of the current visitor.  By looking for these three conditions, I am able to easily move between the cases (as someone becomes more of a Brian than a Homer).  I could also easily switch out the control altogether.

Keep in mind that these conditions can be much more elaborate.  Maybe this pattern matching is a single clause of an overall condition...think about the checks you could make to a CRM or any other persistent profile store in addition to the checks you can make against current visitor browsing patterns.  Sky's the limit...hopefully this gave you way to understand a simple scenario that can open up your significant real world ideas.