Fusion App Studio – Tracking Clicks

April 6, 2019

A Lucidworks App Studio web application connected to a Fusion Search server collects interactions as “signals.” While many of these activities can also be found in the application’s Web server logs, signals in the Fusion server’s collections are the most complete, most analytics-ready and most available to Machine Learning for user personalization scenarios.

Annotation

The App Studio social module returns the following annotations:

  • Bookmark
  • Comment
  • Like
  • Saved Search

Click

Depending on who you talk to, the meaning of “click” web application analytics varies. It can simply mean a mouse click on a hyperlink, or it can mean a key press, screen touch, mouse click anywhere in the application. Fortunately, App Studio and Fusion Server have ways to support all meanings. Some examples follow.

App Studio Tags

<track:clicks>

Index.jsp and Login.jsp
Any <track:clicks> tag placed on the login.jsp or index.jsp page inside the tag will work if the user is already in. This is kind of a Catch22 for the login page of course, but can be proven by returning to login page after logging in and clicking on a <track:clicks> tag.

When applied to a single element
The <track:clicks> tag applies ONLY on any <a> anchor, most <widget> tags and some <search> tag elements, and not on <div> elements. Any text inside an <a>...</a> anchor tag will populate the Fusion signal collection’s label field. For example, <a href="http://see.me.here.com">Show This Text</a> will add “Show This Text” as a value in the collection’s label field.

When applied to a container
A <track:clicks> tag applied to an HTML container element (e.g. <div>, <span>, <layout:block>, <layout:grid> and etc.) will automatically return signals for each <a> and <widget> tags it contains.

Nesting
A <track:clicks> tag nested inside another <track:clicks> tag will return two events to the Fusion signals collection.

Signal fields
A type="" attribute can contain text and/or a variable (e.g. <track:clicks type="App Button"> or <track:clicks type="{{result.id}}"> ), which will populate the Fusion signal collections ctype field.

Roll your own
To add a custom ctype to a click, add your own attribute pair to the tag. For example, <track:clicks foo="bar"> adds a field called “foo” with value “bar” to the Fusion signals collection.

Fusion Collection
Fusion Search indicates a click signal with the value click in a type field. These entries include label and ctype fields alongside the typical timestamp, user_id and other fields.

  • timestamp.tdt: 2018-11-12T20:27:31.680Z
  • user_id: pdx12345
  • type: click
  • label: contact us
  • ctype: About Page links

Examples

  • Button
    • Apps
    • Bookmark
    • Chiclet – Help
    • Comment
    • Comment Post
    • Comment Delete
    • Image Enlarge
    • Image Close
    • Information
    • Like
    • More/Less
    • Overview
    • Related Products
    • Saved Search
  • Facet List
  • Form
    • Help
  • Logo
  • Pagination
  • Panel
    • Apps Button – Hover Menu
  • Result Card
    • Title Link
    • Image Link
  • Result List
    • Result List – Search Page
    • Result List – Galleries Card
    • Result List – Gallery Page Card
  • Search Box
    • Search Field/Button
    • Search Suggestion – Title
    • Search Suggestion – Fast Lane
    • Search Suggestion – Word/Phrase
  • Sort
    • Sort – Search Page
  • Tab
    • Global Navigation
    • Tab – Search Page
    • Tab – Galleries Page
  • Typography (Hyperlink)

More/Less

Put a <track:clicks> tag around an <a> button element that shows or hides search result metadata. Note, these buttons share a common tooltip and refer to AngularJS show/hide methods so only one is visible at a time depending on the click state.

moreless - Fusion App Studio - Tracking Clicks
<track:clicks type="{{result|field:'title'|actual}}">
	<a styling="tooltip-left"
	   tooltip="Show more or less"
	   >
		<button styling="icon button-moreless"
			padding-right="0.5"
			></button>
		<p hide-when="moreon">More</p>
		<p show-when="moreon">Less</p>  
	</a>
</track:clicks>

Fusion Search collects the search result title field and anchor tag text values as ctype and label fields

More

  • label: More
  • ctype: Treatment

Less

  • label: Less
  • ctype: Treatment

Apache Httpd and Tomcat server logs collect both events with essentially the same POST information:

More
10.1.22.333 - - [13/Nov/2018:14:05:20 -0800] “POST /mycollection/twigkit/api/activity/clicks HTTP/1.1” 200 -
Less
10.1.22.333 - - [13/Nov/2018:14:05:21 -0800] “POST /mycollection/twigkit/api/activity/clicks HTTP/1.1” 200 -

Facets – Hierarchical

Put a <track:clicks> tag outside a <search:facet:list> to track what filters are being selected. This applies to both hierarchical and standard facets. On multi-select facets, checkbox selections are tracked only when the Apply filter button is activated.

facets hierarchical - Fusion App Studio - Tracking Clicks

Request

  • filter: topics/1%2FInstitutes%2FCancer Institute
  • page_title: Search

Facets – Standard

Put a <track:clicks> tag outside a <search:facet:list> to track what filters are being selected. The Show more button is not tracked.

facets standard - Fusion App Studio - Tracking Clicks
<track:clicks type="Filter click">
	<search:facet-list platform="p_apps"
					query="q_apps"
					response="r_apps"
					styling="facet-list facet-list-wrappedheader"
					show-empty="false">
		<search:facet facet-name="environment"
					collapsible="true"
					max-characters="50"
					show="20"
					show-more="24"
					></search:facet>
	</search:facet-list>
</track:clicks>

Click

Fusion Search collects the <track:clicks> tag’s type and the <search:facet> tag’s facet-name values as ctype and label fields.

  • label: environment/IS Automation & Reporting
  • ctype: Filter click

Request

Fusion Search also captures the facet request.

  • filter: environment/IS Automation & Reporting
  • page_title: Apps

About Page

Put a <track:clicks> tag outside a <layout:block> to track all <a> tag clicks inside the container.

<track:clicks type="About Page links">
	<layout:box styling="text-center" >
		<h1>HI<i>!</i></h1>
	</layout:box>
	<layout:box>
		<p><strong>Welcome.</strong></p>
		<p>This site is about putting facts at your fingertips for confident decisions and constructive actions. Learn how to leverage its key features by scrolling though the examples below, and get to your data wherever you are on the web.</p>
		<p>Once you are up and running, <a href="mailto:me@here.com">contact us</a> about anything, even if it's just to say "Hi!"</p>
	</layout:box>
	…
	<layout:box>
		<h4 class="psjh-h4">Get support.</h4>
		<p>How can you add something to this site? <a href="http://me.here.com/sites/hi/pages/request.aspx" target="_blank">Submit a request</a> and let's talk about it</p>
		<p>Is something busted or just not right? Want to provide feedback on a product? We'd like to hear about it. Send us an email - <a href="mailto:me@here.com" target="_blank">me@here.com</a></p>
	</layout:box>
</track:clicks>

Clicks

Fusion Search collects the <track:clicks> tag’s type and each the <a> tag’s text values as ctype and label fields when when clicked.

  • label: contact us
  • ctype: About Page links
  • label: Submit a request
  • ctype: About Page links
  • label: me@here.com
  • ctype: About Page links

Apache Httpd and Tomcat server logs collect both events with the same POST information:
10.1.22.333 - - [13/Nov/2018:14:05:20 -0800] “POST /mycollection/twigkit/api/activity/clicks HTTP/1.1” 200 -

Logout

<track:clicks type="Logout button">
	<widget:logout styling="psjh-logout">Logout</widget:logout>
</track:clicks>

Fusion Search collects the <track:clicks> tag’s type value as a ctype field when when clicked.

  • label: Logout
  • ctype: Logout button

Login

On an Apache Httpd and Tomcat web server, an application sign-in is only implied in the log by arrival on the login page. The log does not clearly indicate sign-offs, session time-outs and other actions that return people to the login page.

A Fusion Search server tracks application sign-ins explicitly as a login event type. This event indicates a true sign-in to the application has occurred.

10.1.22.333 - - [13/Nov/2018:14:05:20 -0800] “GET /login/ HTTP/1.1” 200 4348

  • timestamp.tdt: 2018-11-12T20:27:31.680Z
  • user_id: pdx12345
  • type: login

By default, App Studio will return one login event for each Authentication provider in /src/main/resources/spring-security.xml. When more than one Authentication provider is specified, then more than one login event will show up in the Fusion Server signals.

<beans:bean id="loginListener" class="twigkit.security.springsecurity.listeners.LoginListener"/>

Some request and response events can also represent a login event when the user is redirected to the home page. When multiple Authentication providers are specified, the logs will typically show one response for each provider.

An App Studio <track:clicks> tag can also be added to a sign-in button in a form on the login page, but the tag depends on the user being logged in first. Sign-in is required before any <track:clicks> tags will work.

analytics loginform - Fusion App Studio - Tracking Clicks
A click on the sign-in button would show actual button click or enter key press. Tracking clicks here would be useful to determine multiple clicks indicating the first click does not open site content quickly enough for people.
analytics loginhelp 1 - Fusion App Studio - Tracking Clicks
A click on a Login Help link on the home page is would show how many people need to consult the login help content.

Query

Fusion Search collects any query request received from App Studio or any other source as a signal.

Request

Fusion Search collects any request received from App Studio or any other source as a signal.

Response

Fusion Search collects any response to an App Studio or any other source event as a signal.

Session

Leave a Reply

Your email address will not be published. Required fields are marked *