The hardest SDL SmartTarget implementation parts are the ones you don't know about. This post covers four not-so-dumb SmartTarget (ST) questions you will likely encounter in your first SmartTarget implementations.
- How do I gather and implement personalization requirements?
- Can I have a tie, matching multiple ST Promotions?
- Can a Promotion have "OR" logic?
- Why is my Custom Footprint not working?
This post includes visuals (made with Canva) along with tips and recommendations from our recent client projects, Tridion Stack Exchange questions, and internal SDL knowledge sharing sessions.
The tl;dr answer to the four questions are:
- Claim-Trigger-Footprint. After confirming a personalization requirement for ST, create a Claim, Trigger, and Footprint (C-T-F).
- No. Regions return up to multiple promotions in order of priority so there are no ties for a given visitor.
- Yes. Promotions can have logical ORs within a trigger (e.g. City = San Diego OR Amsterdam). You really don't want confusing ORs between triggers, but there are ways to make that work if you prefer the confusion.
- Security feature. Allow your IP address and Footprint's claim in your Staging site's Ambient Data Framework configuration.
1. How do I gather and implement personalization requirements?
First be sure you understand SDL Web's content model and have read the documentation. Also consider reading my previous post on documenting ST requirements.
Your "personalization" toolkit includes SDL features such as BluePrinting, Taxonomy, Metadata, (contextual) templating, SmartTarget, the Ambient Data Framework (ADF), Content Delivery (CD) APIs, and non-SDL technologies ("how would you do it without Tridion?"). Don't assume a ST Promotion is the only solution for every personalization requirement. They are a good fit when you have lots of content, know something about your visitors, and the business wants to manage personalization. In this case be sure your requirement includes these acceptance criteria:
- Claim, where the application recognizes something about the visitor. Read about the Ambient Data setup in Jaime Santos Alcón's post.
- Trigger, the option that ST users select in the WHEN section of an ST promotion
- Footprint, as a way for Experience Manager (XPM) users to test, or an alternative way to preview personalization (custom code, Device Preview, other tools, etc.) See a post from Sayantan on configuring a Custom Footprint.
Refer to this "C-T-F" graphic to help explain how these relate which can help your design sessions, planning, and testing.
A given promotion's set of content presents on the website when a given visitor matches the triggers configured for them. You definitely should document your available claims, triggers, and footprints; however, you might debate whether you need to also document, or simply configure, the Promotions themselves. Here is a requirements example inspired from some of our clients.
Personalization User Story Example
Just like other Web Content Management (WCM) requirements, personalization user stories require two parts for your business users and ultimately for your visitors. For example, Marketing might be interested in this type of story:
"As a marketer for a popular vacation destination, when known or allowed by a visitor's browser/client, I want to promote relevant content for visitors based on:
- Geographic location-to-store mapping
- Home address (for customers)-to-store mapping
- Income level
- Referred by URL
- Calendar date range for an event or holiday season"
But from the perspective of the website visitor, the user story could be:
"In order to help website visitors find relevant offers, we will promote content related to their location, income level*, referring website (e.g. Google search or "from Facebook"), and current date."
Keep your visitors in mind in your requirements to avoid delivering a creepy customer experience. Also note the variation on the "As a, I want, So that" format, which David Evans and Gojko Adzic consider harmful if blindly followed.
Claims
Your SmartTarget setup should include Ambient Data Framework claims. For example
- Two claims (device location and home address) that map Geographic-IP to locations
- Income level
- Original referred by URL
- Dates and/or events
Understand that IP address or even locations (e.g. City or Country) aren't enough. You also need a mapping of what these mean to the business such as closest store, geographic market segment, etc.
Triggers
Create matching SmartTarget triggers to let you create promotions. Whereas the claims include web application code and things not necessarily related to SmartTarget, the triggers are a subset of the claims you want the business to create promotions with. The trigger options should be limited to business-friendly selections. Avoid plain text, "anything goes" options when possible in triggers.
For example, for calendar events, you might limit it pre-configured options such as:
- Summer vacation
- Pre-Halloween
- Halloween Night
- Pre-Christmas
- Christmas Eve and Day
*If known, income level could be defined as low, middle, or high. This could be less granular and it's better if the ranges reflect your actual customers. However, this does not suggest how the business should target customers based on income. Use sensitive data wisely and don't assume what your customers actually value.
Footprint
You also need a way to test, typically with a Custom Footprint if personalizing using the Ambient Data Framework and SmartTarget. Device Preview and other tools can help as well.
After collecting requirements and defining your Claim-Trigger-Footprint setup, be aware of the next three "gotchas."
2. Can I have a tie, matching multiple Promotions?
SmartTarget regions return promotions that match given visitor (ambient) attributes. What happens when there's a tie and a visitor's claims match multiple promotions?
- A region can accept multiple promotions, each with one-or-more Components.
- Promotions are prioritized based on their order in SmartTarget. Click-and-drag to change the priority.
As an example, consider two example SmartTarget Promotions for a hypothetical Next Thing and Current Thing.
Next Thing Promotion
- Content items:
- Ad
- Review
- Sign up
- Triggered when Interest = Next Thing
Current Thing Promotion
- Content item: Link to Help for 1.0
- Triggered when Product = CurrentThing
Visually, here are the two promotions:
Most understand that SmartTarget presents promotions that match the visitor's triggers. But you might not realize that a ST region can accept multiple items, from up to multiple promotions. The Landing Page Stories region example presents up to four items. With the current promotions, the visitor with at least the matching claims will see content items (Dynamic Component Presentations) from both Promotions.
When dealing with multiple promotions and their priority consider these tips for managing ST Promotions:
- Place more-specific promotions higher in the list (this is something you'll realize slightly after learning about the priority)
- You may want to group promotions by page and/or region (as of SmartTarget 2014) in your priority list, naming conventions can also help (e.g. {Page} {Region} {Purpose})
- When possible, model your promotions fairly generically with "location-agnostic" HTML (fewer classes/more semantic markup), fewer Component Templates, and places to actually personalize content. This lets you promote the same promotional content across the site. See how beer and flat designs can help.
3. Can a promotion have "OR" logic?
A SmartTarget Promotion presents when a visitor matches all of the triggers, which sounds like a logical "AND." Is a logical "OR" allowed with SmartTarget promotions?
First let's look at how you might promote career positions and a Mobile App based on claims (known or implicit visitor ambient data).
Yes, logical ORs are allowed for multivalued triggers. For implementers, this trigger type example for city, should make it clear:
<trigger-type url-param="visitor_city" name="City" basetype="text">
<list-of-values multiselect="true">
<value>San Jose</value>
<value>San Diego</value>
<value>New York</value>
<value>Florida</value>
<value>Amsterdam</value>
</list-of-values>
</trigger-type>
By selecting more than one value for city when creating the Promotion, the content will present with any of the values that match the (ADF) claim store. A trigger for device could be just mobile. Or you might want a trigger for device as mobile OR tablet. The ST interface hints at this by showing a pipe ("|" as in "San Diego | Amsterdam").
Rather than tediously needing a Promotion for each city, ST users can promote a set of content for multiple cities in the same promotion.
However, you can't create an OR between different triggers (e.g. City=San Jose OR FavoriteFood=Pizza, as an awkward example). Here are more strange examples.
Not only does this kind of logic not quite fit with ST Promotions*, it's harder to understand and test against. Indeed, Microsoft's Software Requirements (2nd edition) [Wiegers p. 159], recommends avoiding an "OR" on the left side of an IF/THEN software rule as well as no "AND" rules on the right. Such clean, atomic level rules are easier to work with in documentation AND with SmartTarget.
We can fix this problematic personalization scenario from above:
IF Device = Tablet | Mobile OR Referred By = Facebook THEN Promote the Internship
Simplify this into two (atomic) rules to create a clearer requirement that's easier to test. This will also be easier to manage independently in ST Promotions:
IF Device = Tablet | Mobile THEN Promote the Internship
IF Referred By = Facebook THEN Promote the Internship
*Technically, SmartTarget could allow this kind of same-content-for-these-triggers scenario by adding multiple promotions or by custom claims and triggers. But it's much easier going for atomic rules.
After you've set up the Claim-Trigger-Footprint combination, confirmed how many promotions and items will show in your regions, and implemented your smart logic, you might run into gotcha that comes up for many perfectly set up Claim-Trigger-Footprint setup.
4. Why is my Custom Footprint not working?
SmartTarget requirements include an Ambient Data Framework Claim, a ST Trigger, and a Custom Footprint (Claim-Trigger-Footprint). After a perfect setup, why doesn't my Custom Footprint work?
Knowing how Custom Footprints work gives the answer to this last question. In Experience Manager, changing your footprint settings will attempt to override your session claims. Notice, though, that you can try this against any website (such as my blog) as seen below from my SDL Tridion 2013 April Fool's day post. The screenshot is real--I navigated to my blog while using XPM and switched my device setting, making my blog respond with its mobile view.
The Content Delivery Ambient Data configuration, however, controls which IP addresses are allowed to change which claims. As a final step for the Claim-Trigger-Footprint setup, be sure to update your cd_ambient_conf (ONLY FOR STAGING).
<WhiteList>
<IPAddresses>
<Ip>0.0.0.0-255.255.255.255</Ip> <!-- assuming staging is behind your corporate firewall, all allowing IPs is okay, but this could be your corporate IP addresses if you prefer -->
<Ip>127.0.0.1</Ip>
</IPAddresses>
</WhiteList>
Also add the claim to GloballyAcceptedClaims.
These two settings are a security feature disguised as a development hassle.
After setting everything up, you might realize that SmartTarget is quite clever in how it enables the business to personalize content. Hopefully you'll now avoid these not-so-dumb questions.
References and Appreciation
See an excellent example of a Claim-Trigger-Footprint setup from community member Inmaculada Palacios. In the same week she asked, I saw the same issue at a separate client, even after a colleague reminded the team the week before. This likely happens as often as forgetting to set a Component Template to a Schema.
Much thanks to Peter Kjaer for explaining the footprint feature and answering my questions about search, ST Experiments, and their quantity limit (1 content item per experiment). He also dispels the OR myth and confirms you can implement the SmartTarget version of P&P with a few Claim-Trigger-Footprint setups. Though there are no "dumb" questions, on Stack Exchange be sure to research, try something first, and explain your expectations when you ask. See what else customers and implementers ask about SmartTarget on TridionStackExchange.
This post also includes insights from our semi-regular knowledge sharing sessions between SDL Web colleagues. To get access to the behind-the-scenes chat, you'd have to join the team. If you do get started with Tridion via SDL (and referrer=AlvinReyes), I'll split the bonus 50/50.