When I’m helping clients carve out a roadmap for using Sitecore XP, one of the easiest wins is using Engagement Value (EV) to enrich the Sitecore xDB. An engagement value model is central to many of Sitecore’s coolest features – try looking at the Path Analyzer** before and after you’ve deployed one.
As a quick refresher, with EV you assign a relative points value to interactions on your website to indicate which convey a deeper engagement by the visitor, such as reading an article or completing a form. I am a strong advocate of using EV out of the gate, and it will provide returns to you over and over, allowing you to trigger, segment, analyze and make decisions like never before.
But let’s say you do live in 2016, in a world where every organization has multiple marketing technologies all doing different things and battling for ownership of customer data. What if your lead generation forms are iframed in? What if your presentation layer makes liberal use of client-side interactions? What if your best interactions are (gasp) not even served by Sitecore?
We do have a few options, folks.
1. If you want to tag a client-side interaction, use an Ajax call and “sc_trk”
If you can intercept the Click event, you can load a Sitecore item with the very cool sc_trk URL parameter appended, which lets you specify a Goal item name.
You could also register a goal programmatically, using the Sitecore.Analytics.Tracker object, specifically with the CurrentPage.Register method as Sheetal Jain outlines here. This does require the Sitecore Context to be available.
2. If you host your form, but it submits elsewhere, intercept the submission with a redirect.
Goals applied to items are registered prior to the Page_Load event. Configure your form to submit to an item where you have assigned a goal, and then call a server-side redirect in Page_Load.
The Federated Experience Manager (FXM) will allow you to assign a goal to a component on an external website. If your forms are hosted on another system, you can set up an FXM “Capture Click Action” on a page component such as a link or button, and on the Click event, Sitecore will register the goal. Step-by-step instructions available here.
4. If you don’t host your form, consider moving your lead generation forms to Web Forms for Marketers.
Hosting forms in Sitecore is the easiest way to leverage many of Sitecore’s marketing features.
(a) Easily choose which Goal you want to register upon form submission
(b) Write a custom action if your form still needs to submit to separate system
(c) Take advantage of the ability to enroll the visitor into an Engagement Plan, and delight them with biweekly missives
Quick postscript: Sitecore Outcomes
I’m getting this question more frequently: “What are Sitecore outcomes? Aren’t they the same thing as goals?” Outcomes have been introduced in Sitecore 8, and they are not the same; Outcomes are events tied directly to Contacts, whereas Goals have engagement values and are tied to user sessions. (Yes, the two can be linked**, but Goals are immediately useful with anonymous visitors).
- Outcomes are significant events in a Contact’s relationship with a brand, whether on- or off-site.
- Can be defined in Marketing Center, but can only be registered programmatically
- Rely on identified contacts (the constructor requires a ContactID)
- Can allow contacts to be quantified by financial value they bring to the organization (though, I can't see the field to do so at the moment)
- Goals are what we just talked about above, and they are tied to a user session and contribute to accumulating engagement value. Visitors can be quantified by their level of engagement with the organization, and goals can be assigned to items within the Sitecore interface.
Both can be used in personalization rules, engagement plan triggers and analytics reports. Sitecore’s documentation has some handy examples to help you understand how Outcomes are envisioned by Sitecore.
* If you can capture a visitor’s unique identifier, such as email address, Sitecore will merge the visit data with other existing data based on that unique ID via this method call Sitecore.Analytics.Tracker.Current.Session.Identify(<UniqueID>). As such, the contact is then locked in shared session, and the same session data is available and changeable across active interactions and devices.