Crawl, walk, run into digital marketing with Sitecore

Imagine this scenario: as an experienced digital marketer, you have multiple sources of acquisition: SEO, SEM, display advertising, print advertising, social media, and even offline events or tradeshows. All of those potential customers funnel into your website at various entry points and with varying moments in their decision life cycle. Your website, primed for these audiences, responds with the perfect message to each person, using data about that person, the campaign they responded to and their activity on your site to instantly deliver tailored content. Your site is perfectly tuned — thanks to A/B and multivariate testing — and linked to an engagement plan via marketing automation that gracefully leads the visitor through their purchase life cycle, ultimately delivering you a qualified lead or sales conversion. And on the backend, you have this amazing 360-degree view of that lead, includingevery interaction they have had with your brand. Sounds utopian, right? My guess is that you may have even been sold this vision before by one of the thousands of software vendors in the marketing technology landscape or an agency or SI that implements them.

Don’t get me wrong, it’s a great vision and it’s ultimately why we’re all in this business. Like all great visions, the challenge is getting from here to there. Most companies admit to being on the “immature” side of the Sitecore Customer Experience Maturity Model, somewhere around Initiate or Radiate. While there is more nuance to digital marketing maturity than found in the Sitecore model, it covers the basics. For marketers on the left side of the scale, the biggest challenge is knowing how to find the path to the right. It’s easy to stand still, in a state of paralysis.

So how do you get moving? Slowly. This is a marathon, not a sprint. And the speed with which you accelerate will depend on how quickly you and your organization can embrace new ways of thinking and new ways of doing. The formula is simple though: Crawl, Walk, Run.


No matter where you start the race, you want to be sure you have the right shoes on – they’re the foundation for your journey:

You need a mobile-optimized, content-rich website. You need  a solid understanding of your audiences, their need states and their journeys through engagement with your site and brand. And you need to be on a current version of Sitecore with xDB enabled, configured and collecting data about your users’ interactions. Out of the box, Sitecore will provide you the basic analytics that you would typically find in a Google Analytics report. You’ll want to start by building on those base analytics: identifying goals and assigning values to them.  In Sitecore’s terms, these goals and their values become your Engagement Value Scale. They show the relationship between a given activity on your website and the likelihood to convert. Example goals in a B2B environment might include:

  • Visiting a product page
  • Downloading a product brochure or whitepaper PDF
  • Watching a product demonstration video
  • Signing up for a webinar
  • Requesting a demo or sample
  • Requesting a quote or sales contact

Each of the above goals is assigned a point value in Sitecore. So a visit to a product page might have a value of 1, while requesting a quote might have a value of 6. Sitecore lets you track each visitor’s journey toward conversion over the full sales cycle, providing you with the starting point from which you can build your digital marketing engagement plans.


With your fundamentals in place, you’re ready to implement the next set of capabilities: campaign management and testing.

Campaign Management

Campaign management is relevant for companies that do any type of email marketing, PPC, social media or display advertising. This capability allows you to track incoming traffic to your site from all of those sources, and measure the value of that traffic over time. Many analytics systems will provide the basic traffic reports by campaign, but fail to give you insight on how well those campaigns deliver on actually converting visitors. Sitecore’s campaign management capabilities track the value of a visitor throughout all touchpoints over multiple visits, giving you a clearer picture on the ROI on your advertising spend.

A/B & Multivariate testing

When you have a better understanding of engagement value, you can start optimizing your site for conversions. Sitecore offers both A|B and multivariate testing capabilities that enable you to  test individual components (or sections) of a page, or entire pages. Sitecore can automatically choose test winners based on your specific criteria, based on the engagement values that you set in your crawl stage.


Every marketer’s goal is to deliver relevance, and personalized experiences are the “new normal” when it comes to being relevant to you target audiences. Sitecore enables both implicit and explicit personalization of digital experiences:

Explicit personalization changes your content and/or user experience based on information known about the visitor. Examples include the visitor’s location, their industry, the campaign they responded to, how many times they’ve visited, etc. You can create simple rules like, “if visitor responded to campaign ‘ABC’ then show this component. “Or you can create complex rules that combine many known facts, “if visitor is located in Texas and has visited the site at least 2 times and responded to campaign ‘ABC,’ then show this component.”

Implicit personalization changes the content or user experience based on information assumed or inferred about the visitor. For example: If a user just bought a vacuum cleaner on your website, you might assume that they also need vacuum cleaner bags, and you could display a special offer to them for bags. If a visitor is browsing a lot of content about caring for dogs, you might assume they are getting ready to adopt and show them dogs that are available in their area.

This type of personalization has the power to really reach visitors with content that is tailored to their interests, but it does require some legwork. I explore the details of personalization in my previous post “8 Steps to Start Your Personalization Journey

Most critically, understand that reaching that digital marketing pinnacle is truly a journey. You don’t get there overnight, and the pace at which you progress will depend in large part on how quickly you master each step along the crawl-walk-run. Avoid the temptation to try and do everything at once. Start with the basics (analytics & engagement value scoring); add campaign management & A|B testing; then move on to content and experience personalization. On each step of the journey, set benchmarks and success criteria, so you can understand and report on your progress, and you can revise your plan if you’re not meeting your goals. True marketing ROI is not that far off – this is how you get there!

Keeping Your Sitecore Tree Organized

There’s one big thing that should be on everyone’s mind when working with a lot of content.  That big thing is organization of the Sitecore content tree.  With a single site solution, organization can be a little less serious.  But, once you start to deal with a multi-site solution, organization is key.  There are so many different ways for a content tree to go from being very cleanly organized to being one of the most confusing things to try and navigate.  Admittedly, I like my content tree like how I have my folders on my computer, very organized.  That way, when you need to find something quickly, it is very easy.  If it’s disorganized, then it ends up being a longer process to find the item.  Which, multiplied by however many components you have on a page, could really affect how quickly you can create a site.  So, when I see a Sitecore tree that seems to have items spread out all over the place, I want nothing more than to help the client clean it up and give them the tools to keep it clean.

Component Tree 1

Let’s take a look at this screenshot.  In this multi-site solution, we have created components (or modules) to be added separately to the page allowing the content editor to essentially be able to build out a webpage from a blank slate.  So, due to the number of components that will be created, it is important to keep the components folder organized in order to quickly find the datasource you’re looking for.  As a developer, when setting up a components folder, one of the easiest, but more restrictive, ways is to create folders yourself and only allow the content editor to insert that type of component in that folder (eg. Creating a Rich Text folder and only allow a Rich Text component to be inserted below it).  This isn’t the way I wanted to implement this organization strategy since I didn’t exactly know if the client wanted them to be organized by site, by component type, by both, etc.  This way also doesn’t easily lend itself to growth since it’s more restrictive for the content editor.  So, a more flexible way to implement this is to create a new folder template and give all your components as an insert option to this folder.  But, the key step here is to also add the same folder template as an insert option as well.  This will allow the content editor to make folders as they please and organize the Sitecore tree to how it’ll make sense to them.

Component Folder Insert Options

Now, these were all ways as a developer to help the content editor.  But, a content editor should utilize these tools that the developer has implemented.  If a developer hasn’t implemented a good way to organize the Sitecore tree, it is absolutely worth asking.  This will only help out with confusion in similarly named components, identically named components that are different templates, etc (as mentioned in Keeping Item and Field Names Unique).  As a content editor, it is also worth thinking about how you want your data structured in Sitecore before you start building out your content.  This way, you could build out your folder structure logically before adding any sort of content.  If you don’t want the ability to create folders of your own, but want the restriction of only being able to add a specific component(s) under a certain folder, work with your developer and implement it together.  This way, you’ll have a way to organize your data that you’ll be happy with.  Personally, I’m a fan of giving the content editor the ability to structure their data as they please.  This allows the solution to easily expand if additional sites are added.  This also gives the ability for the content editor to change their mind about how the tree is structured.  Let’s say the content editor just wanted all the components to be grouped together regardless of site.  Well, after the content editor starts to get hundreds of components, that organization process may not be sustainable anymore.  Instead of needing to go to the developer and paying to have an additional ability to change how the content tree is organized, that ability is already there and the content author can alter that item structure without any negative effects to the site.

Component Tree 2

In the end, as a developer, the most important thing is to deliver a solution that the client is happy with.  Knowing full well that there will be some complex data that will need to be made easier for a content editor to work with, organization is key.  As you can see in the “Component Tree 2” screenshot, I have organized the components from the “Component Tree 1” screenshot into easier to understand folders by using the same insert options as shown in the “Component Folder Insert Options” screenshot.  If there are even more components, and there still are too many items under each folder, you can easily add another level of the site that they’re created for.  But, for this situation, just doing the one level is enough.  It is all dependent on how much content is going to be going into each site and how easily it is to understand where to find those items.




Keeping Item and Field Names Unique

There are many things that can help with confusion as a developer and as a content author.  One of the biggest confusions I’ve come across has been duplicate item names, fields, and placeholders.  Sitecore will render whatever the first instance of that name is.  So, if you have an item with the same name as another, it will render the one higher up in the tree.  The same idea expands to placeholders and field names as well.  There’s a way to work with the placeholders and not be required to create multiple placeholders that have the same function called “Dynamic Placeholders“. However, the other two require some discipline as a developer and a content author.

As a content author, to avoid general confusion, giving unique names to items will avoid a possible situation where content you’ve entered is not showing up properly or not at all.  I’ve run into a few situations where the client has asked me to troubleshoot why the content they’ve updated was not displaying like they were expecting.  When I started troubleshooting, I noticed that there were items that had the same name.  It turned out they were editing the lower of the items which meant the rendered content wasn’t actually updating.  In addition, I had also noticed that other renderings were missing content entirely.  After looking into this situation, I found out that there were different templates that were utilizing the same name as well.  So, the content author added a Rich Text block to the page and correctly pointed the Datasource.  However, the item above it was an Accordion template that shared the same name.  Since Sitecore uses the path to get to the Datasource as opposed to a GUID, the rendered page was trying to render the Accordion template in the Rich Text rendering, which didn’t render properly.  One of the easiest ways to do this is to either put all items that belong together in a folder or name each one differently but name them in a way that a content author will understand that they go together (see green highlighted area).

As a developer, however, one of the things that will avoid general confusion for content authors is to name your template fields well.  Naming something “Content” can work if you’re creating a template that’s going to be inherited in to multiple places.  However, if you are creating a field specifically for a template type, it’s worth naming your fields more specifically.  As you see in the screenshot, there are two fields named “Page Title”.  One field is being inherited while the other field was added to the template itself with the same name.  This means, the first one will be the field that gets rendered while the second one is about as useless as it can be.  To avoid these types of situations, it’s good to plan out your templates before you create them to see what fields are being inherited and what fields you’ll need to create.

Do you have a plan for new Data Privacy Laws?

What are data privacy laws?

Data privacy laws prohibit the misuse of information that is gathered about individuals. Laws may vary by country, but if your business extends into other countries, you can potentially be taken to task for some of their regulations. For example, if you’re a US company that sells products or collects data from EU citizens or provides data to companies in the EU, you might be affected the General Data Protection Regulation. The General Data Protection Regulation (GDPR for short) is a set of EU regulations taking effect on May 25, 2018.

The GDPR covers a myriad of topics: the responsibility and accountability of those who gather information, how companies handle data breaches, and how data should be provided to individuals at their request.

As a result of these regulations, companies need to come up with a plan to balance the needs of the business and the needs of the user. Even if the company is based in the US, that business can have users abroad, so it’s best to take these regulations into account.

Why should you care?

Protecting the interests of your users is always a sound business strategy. Look at it this way: when someone asks for their information, it’s not a personal attack on your company—they want to ensure that the information that you have is accurate. Users that go out of their way to request information are usually tech savvy individuals, and having a plan in place for when a user requests information shows that you have their best interests in mind.

Accountability for your user’s data also means that you should be transparent when there are problems such as a data breach. Getting ahead of things and communicating to your users when there are such problems can prevent further headaches—requests for information usually increase when there is outside press.

Companies that fail to comply with these new regulations could face fines. The French Data Protection Agency recently fined Google €100,000 for not scrubbing web search results enough in response to a European privacy ruling.

The GDPR has even steeper fines, requiring you to respond within a month’s time and providing the data in a portable format (such as XML). Breaches of some provisions could lead to fines of up to €20 million or 4% of global annual turnover for the preceding financial year, whichever is the greater amount. Just to put that into perspective, Google had a revenue of $74.54 billion in 2015, if they were found to be in violation of some of these provisions, they could be facing fines up to $2.9 billion.

How do I come up with a plan?

There are a few points to keep in mind when you’re coming up with a plan to better serve your clients information needs:

  • What information are you collecting about your users?
  • Where is this information stored?
  • How is that information being used?
  • How are we going to get this information to a user in a timely fashion in a format that they can easily read?

Tracking down all of that information can be daunting, as it could be fragmented throughout your CRM, analytics, and random databases. If you’re using a CMS such as Sitecore, finding your user data becomes an easier mountain to climb.

Using Sitecore’s xDB can allow for the collection of all that data in one central place, using a noSQL database. From analytics to personalization, it can be your one-stop shop for all your users’ data.

Sitecore xDB allows for a 360° view of all of your customer interactions, and it tracks each individual customer. This is extremely valuable once you associate a user profile to an individual browser session. The data is stored for as long as you want and allows you to configure how long between requests for consent. This provides you with the flexibility to respond to requests for data efficiently and effectively.

The platform is extremely flexible, allowing your organization to tailor it to your specific needs through custom development efforts and third party integrations.

Additionally, Sitecore announced xConnect in 2016. This is Sitecore’s API for exchanging data with the xDB. Scheduled for release with Sitecore 8.3, it looks to be a promising tool in gathering data from all of your third party applications and putting them in one central repository.

What now?

Clients are concerned that they’re going to be caught between a rock and a hard place when data regulations come knocking. May 2018 is right around the corner, but as long as your organization can take the appropriate steps to plan for these regulations, you can know that you’re taking steps to make your users feel safe.


European Union Reference Site:

Google Compliance Help:

Sitecore Experience Profile:


Page Template vs. Component Site Architecture

In the last couple projects that I’ve worked on, I’ve been faced with a very common question.  How should we architect the solution, using Components or Page Templates?  Components meaning a piece of data that can be used in multiple places and can be rendered anywhere on the page.  Essentially a free way of designing a web page without needing a developer’s intervention.  Page Templates meaning a much more rigid design of the pages that will prevent possible design complications.  There are major pros and cons to both of these options, and most people will end up wanting a combination of the two.

Page Template Architecture

pagetemplatepresentationdetailsThis is one of the more common ways to architect the Sitecore content tree.  Essentially, you create numerous page types depending on what data you want to display on the page.  For example, you’d have a Homepage, a Products page, a Product Detail page, a 404 page, etc.  The perk of the Page Template architecture is that all the fields that are on the Page Template are relevant to the page and only that page.  There should not be any fields that crossover between the different pages that aren’t relevant to that page, assuming you inherited properly.  This also allows for all your data to be entered in one place.  All you’d need to do is create the page in the content tree and enter all your data in that item.  However, a perk and downfall is that a content author does not have control of the look of the page.  That is controlled by the template and layouts associated with that template.  The only choice the content author has is which template to create.

However, there are few downfalls to this architecture.  If you wanted to allow for any additional data to be added to the page, it would require some developer intervention to not only add the field in Sitecore, but to add the ability for the code to render that data.  This architecture also doesn’t make any repeated data easy to content manage.  Each time you created a page, you’d need to re-enter any repeated data.  Unless, of course, it is set in the Standard Values of that template.

Component Based Architecture

componentspresentationdetailsThe biggest perk to having a Component based architecture is the flexibility it provides the content editor.  You can take a blank page, and with the power of a handful of components, you can build a webpage multiple different ways.  Do you want a page that has 2 columns at the top with 1 column below that with a YouTube video in the 1 column and a rich text component in the left column and an image in the right column the 2 column one?  How about on the next page, you want that layout to change up a bit.  You can put 1 column at the top of the page with an image in that while the 2 column can go below it with a YouTube video in the left column and the rich text in the right.  Having a component based architecture allows for that.  It also allows for one page type to be created.  This is also depending on if all pages will have the same basic structure and data.  There may be some exceptions to this if there’s additional data that needs to be added specifically for certain page types.  The content author would create a page in the Sitecore content tree, then would start building out that page in the Experience Editor.  In the Experience Editor, there will be one placeholder that would allow for the structure of content (eg. one column, two column, three column, etc.).  Within that content, there will be additional placeholders that would allow for all the different component types to be inserted into them (eg. image, rich text, YouTube video).

There are also some very noticeable disadvantages for this architecture.  One of the biggest ones is that the content you enter is separate from the page itself.  So, you’ll need to not only create the page, but you’ll need to create the datasource as well.  Another disadvantage is the default Sitecore Placeholders don’t take into account adding multiple of the same placeholder (eg. adding two 2 column renderings that have “leftcolumn” and “rightcolumn” placeholders).  This can be solved by the use of Dynamic Placeholders.  However, Dynamic Placeholders aren’t an out-of-the-box solution from Sitecore.  So, there will need to be some custom work added to enable that ability.


hybridpresentationdetailsWhat a lot of people settle on is a hybrid of the two of these architectures.  For example, you have a News Feed page.  This page pulls in a feed of any articles you have published.  The layout of that page shouldn’t change.  However, there can be placeholders placed at the top or bottom of the page to allow for flexible content to be added.  There are even more options that aren’t as obvious.  It could be as subtle as the HTML structure being slightly different between two fully component based pages.  For example, one renders slightly wider than the other.  This would require a different sublayout or rendering which would mean that a developer would need to create a new template in order to add that wider sublayout or rendering to the Standard Values as opposed to the narrower initial sublayout or rendering.

Sitecore Campaign Set-up

Now that you know more about your users and their behavior, it’s time to analyze what brings users to your site in order to create marketing initiatives that result in more conversions.

Sitecore Campaigns allow you to target the user once they arrive at the site. Campaigns, like the Google Analytics URL Builder, include a query string that ensures inbound links are tracked in Sitecore Analytics. However, Campaigns can take this tracking further—they can be used to trigger personalization. (More on this in a future post.)

Once you have Campaigns set up, you can incorporate them into any inbound marketing activities. Analytics can track the activities that are triggering Goals and Profiles you’ve established. For example, you could see that email marketing is leading to more brochure downloads from the Retired Profile you established. Or you could track that Facebook is driving more newsletter signups for the Young segment.

To configure a Sitecore Campaign, log into the Sitecore Experience Platform dashboard and open the Marketing control panel.

Create the Campaign Category

To create the category, right click on the Campaign folder and Insert New Category (social categories are configured). Name it and save.


Create the Campaign

This is where you’ll create the specific Campaign. For example, you may have several AdWords campaigns simultaneously in flight. To create, right click on the Campaign Category that you created, insert new Campaign and name it to correlate to your on- or offline Campaign (example: Fall Sale).

Fill in the appropriate fields. Not all of these are necessary—we recommend starting with these:



Channel Select the appropriate channel from the available dropdowns.
Title The title of the Campaign should match your on- or offline Campaign.
Campaign Link This Campaign query string will be used to ensure site visits generated by this campaign are recorded by Analytics and can trigger personalization.

For example: sc_camp=7147FC33D65741B78CF354926779C1AE

Append the query to the link to your website from the inbound source. If the link already includes a query string, prefix the provided text with an ampersand (&). If the link does not include an existing query string, prefix the text with a question mark (?).

Type A Campaign can either be online or offline.
Enroll in Engagement Plan Select the engagement plan state you’ll assign to visitors when they participate in this Campaign.
Traffic Type This is how the Campaign is categorized in Analytics. Example: A visitor might come from an email campaign, which will put them into the Referred – Other category. To ensure that this visit is classified as the Email type, set traffic type as Email.

Deploy the Campaign in Workflow

You must deploy a Campaign in the workflow before you can associate it with a content item. To deploy a Campaign:

In the Marketing Center, select the campaign you want to deploy.

On the Review tab in the Workflow group, click Deploy.

Associating a Campaign with a Content Item

After creating a Campaign in the Marketing Center, you must ensure that the Campaign is triggered in Sitecore Analytics so you can track which Campaigns are driving visitors to your site.

To associate a Campaign with a content item:

assign campaign

In the Content Editor, expand the content tree and navigate to the content item you want to associate a campaign with.

In the Analyze tab, in the Attributes group, click Attributes.

In the Attributes dialog (Figure 2), click the Campaigns tab and select the Campaign you wish to associate with the content item.

Campaigns can also be assigned at the Standard Values level, if you would like to track all content. For further implementation information, Contact HI. 

Configuring Goals in Sitecore

You’ve done the work of categorizing your users and content. Now it’s time to discuss your specific goals for each user group. Sitecore goals measure activities visitors can perform on your website. You can assign a goal for any action you’d like your user to take.

Example goals:

  • Download a brochure
  • Register for a newsletter
  • Visit a page

We’ve established our data-first approach in previous posts: gather data now; capitalizing on it later. We recommend setting up all of your goals on the site to start compiling insights on your users. When you’ve created profiles, you’ll have the ability to segment your data to note trends—such as young users are more likely to download a brochure compared to senior users.

Prioritizing your goals by level of importance will give you the best insights. For example, a user signing up for a newsletter is likely more valuable than a page visit. Sitecore allows you to assign different engagement value points to each goal. As a visitor navigates through the site, Sitecore tracks points as the user triggers goals. Once the visitor leaves, Sitecore calculates the engagement value for the visit. The Experience Profile will allow you the goals and engagement value of each site visit.

The number of engagement value points allocated to each goal isn’t as important as the ratio between engagement value points assigned to the different goals. For example, a user signing up for a newsletter could be 10 times more valuable to a marketer than one simply visiting a page. In that case, your engagement value points would look like this:

Engagement Values

In a future post, we’ll talk about incorporating goals into engagement plans to further capitalize on Sitecore’s advanced marketing functions. In the meantime, what follows are the step-by-step instructions for setting up Sitecore goals.

Setting Up Sitecore Goals

 To configure a goal, log into the Sitecore Experience Platform dashboard and open the Marketing control panel.

  1. Create the Goal

To create the category, right-click on the Goals folder and insert new Goal. (An optional step would be to first create a Goal Category to group goals.) Name it and save.

creating goal

  1. Fill in the appropriate fields

Not all of these categories are necessary; we recommend starting with these:

Name The name for your goal.
Points The number of engagement value points that are assigned to a visitor when they achieve this goal.
Description A suitable description of the action, such as a user signing up for a newsletter.
Rule Select the rule that should be evaluated when the page event associated with this goal is triggered.
Goal Checked by default. Select this checkbox to ensure that the goal appears in the Content Editor’s Goals dialog. You can then associate the goal with a content item.
Track as Latest Event (Sitecore 8) Select this checkbox to ensure that the goal appears in the lists of latest events on the Experience Profile.
Show in Events (Sitecore 8) Select this checkbox to ensure that the goal appears in the lists of events on the Experience Profile.

(We recommend choosing one of the final two options.)

  1. Save, Deploy and Publish the Goal

After you’ve filled in the appropriate fields, you can save the Goal. You must deploy the new goal before it becomes available in the Marketing Center, and you can associate it with a content item or a campaign.

To deploy a Goal:

  1. In the Marketing Center, select the goal that you want to deploy.
  2. On the Review tab, in the Workflow group, click Deploy.
  3. Publish the item.

The new Goal is now available in the Marketing Center and you can associate it with content items and use it in your campaigns.

Associating a Goal with a Content Item or Media Library File

After you have created a Goal and deployed it, you can associate it with a content item or Media Library file. This means that the Goal is achieved every time a visitor views this item.

assign goal

To associate a Goal with a content item:

  1. In the Content Editor, navigate to the content item to be assigned a specific goal
  2. Click the Analyze tab and, in the Attributes group, click Goals. In the Goals dialog, select the Goal that you want to associate with the selected content item.

To associate a Goal with a media item:

  1. In the Sitecore desktop, open the Media Library.
  2. Navigate to or search for the content item you want to track.
  3. In the ribbon, Analyze tab, Attributes group, click Goals.
  4. In the Goals dialog, select the desired Goal.
  5. In the Media Library ribbon, click Save.