Interact Advanced Analytics

Interact Advanced Analytics allows you to capture a wide range of transactional data (page hits, and dynamic events), and access the raw analytics data via your BI tooling of choice to analyze at will. You can use this data to create own reports, visualizations, dashboards, and usage models, which may not be available out of the box.

Advanced Analytics is a side-car component which means it does not impact the site performance under load, or when performing heavy analysis. It is secured with state of art encryption in-transit and at-rest, with completely isolated storage per customer.

Advanced analytics also supports configuration through the Developer Framework, to provide the capabilities to enrich the data and events captured within Advanced Analytics - from adding custom fields, controlling session length, to excluding certain user groups.

You can use Interact's Advanced Analytics with tools like:

  • Tableau
  • Power BI
  • Looker
  • Qlik
  • SAS BI
  • SAP Business Objects
  • Sisense
  • Infor Birst
  • etc.

You can also access this data programmatically in eg.

  • Python
  • Jupyter Notebooks
  • etc.

Advanced Analytics Schema

Group

Field Name

Field Type

Description

Hosting

hosting_pod

string

Hosted pod name - EU, US

Tenant

tenant_guid

string

Tenant GUID in Interact's cloud ecosystem - can be retrieved from the /info path on the site domain

Versions

version_interact

string

Neutrino version

Versions

version_junejs

string

Version of the Advanced Analytics collector script

Person/User

person_id

string

Internal Interact Person ID

Person/User

person_ispoweruser

boolean

True if PowerUser, False otherwise

Person/User

person_timezone

string

Timezone set in the Neutrino profile

Person/User

person_primarycompany

string

Primary Company set on user's profile - comapny may be renamed on the Interact UI to another entity by using System Text (eg. Primary Division)

Person/User

person_primarydepartment

string

Primary Department set on user's profile - department may be renamed on the Interact UI to another entity by using System Text (eg. Primary Cost Center)

Person/User

person_primarylocation

string

Primary Location set on user's profile - location may be renamed on the Interact UI to another entity by using System Text (eg. Primary Store Number)

Authenticated Session

authentication_sessionid

string

Logged in Session ID - not related to interaction session/user journey session. It is reset every time the login session expires and requires to be refreshed. Not related to the interaction session.

Interactive Session

session_interactionguid

string

Random GUID which is used for connecting each interaction in the tracked session - stored in localstorage and reset if the session TTL is exceeded between 2 interaction points.

Interactive Session

session_pageindex

int

Page number in the current user journey (interaction chain) - session timeout resets back to full time after each interaction - eg. 30 mins threshold, will allow for maximum of 30 mins wait between each interaction, before considering the session ended. Starts with 0 for the first interaction, and then increments with each page change.

Interactive Session

session_interactionindex

int

Interaction number in the current user journey (interaction chain) - session timeout resets back to full time after each interaction - eg. 30 mins threshold, will allow for maximum of 30 mins wait between each interaction, before considering the session ended. Starts with 0 for the first interaction, and then increments with each interaction (page or dynamic event - eg. blog was liked.)

Device

device_browserinfo

string

Parsed UserAgent info - browser name and browser version (space separated)

Device

device_useragent

string

User agent

Device

device_browserlanguage

string

Browser language

Device

device_browsergeolocationenabled

boolean

Does the browser have location services enabled? - measured with Modernizr

Device

device_browsertouchenabled

boolean

Is the browser touch enabled? - measured with Modernizr

Device

device_browserhtml5videoenabled

boolean

Does the browser have HTML 5 videos enabled? - measured with Modernizr

Device

device_browsersvgenabled

boolean

Does the browser support SVGs? - measured with Modernizr

Device

device_screenresolution

string

Resolution of the screen (not browser size)

Event

event_name

string

Text representation of the event - eg. Liked blog - from the "Tracked Events" table below

Request

request_pageloadduration

int

Time taken for the document.ready event to fire from start of HTML rendering

Request

request_pagetitle

string

Title of the window tab

Request

request_url

string

URL of the loaded page

Request

request_interactmodule

string

Interact module which is inferred from the URL pattern - from the "Tracked Modules" table below

Request

request_timestamputc

timestamp

UTC timestamp measured on the browser

Request

request_timestampusertime

timestamp

User's browser time measured on the browser (not based on profile timezone set on user's profile)

Request

request_ipaddress

string

Client IP detected upon ingestion - not available for the referrer fields.

Referrer

referrer_pageloadduration

int

Time to document.ready event on the previous page (if any)

Referrer

referrer_pagetitle

string

Previous page title (if any)

Referrer

referrer_url

string

URL of the previous page in the interaction chain.

Referrer

referrer_interactmodule

string

Previous page module (if any) - from the "Tracked Modules" table below

Referrer

referrer_timestamputc

timestamp

Previous page request timestamp (UTC time) (if any)

Referrer

referrer_timestampusertime

timestamp

Previous page request timestamp (user's time) (if any)

Custom Fields

custom_field1

string

Can be populated by the customer with any data they want - eg. EmployeeID, WorkdayID

Custom Fields

custom_field2

string

Can be populated by the customer with any data they want - eg. EmployeeID, WorkdayID

Custom Fields

custom_field3

string

Can be populated by the customer with any data they want - eg. EmployeeID, WorkdayID

Custom Fields

custom_field4

string

Can be populated by the customer with any data they want - eg. EmployeeID, WorkdayID

Custom Fields

custom_field5

string

Can be populated by the customer with any data they want - eg. EmployeeID, WorkdayID

Custom Fields

custom_field6

string

Can be populated by the customer with any data they want - eg. EmployeeID, WorkdayID

Custom Fields

custom_field7

string

Can be populated by the customer with any data they want - eg. EmployeeID, WorkdayID

Custom Fields

custom_field8

string

Can be populated by the customer with any data they want - eg. EmployeeID, WorkdayID

Custom Fields

custom_field9

string

Can be populated by the customer with any data they want - eg. EmployeeID, WorkdayID

Custom Fields

custom_field10

string

Can be populated by the customer with any data they want - eg. EmployeeID, WorkdayID

Autodetected Info from CDN

autodetected_city

string

Pulled from the CloudFront headers (if present) - Contains the name of the viewer’s city.

Autodetected Info from CDN

autodetected_country

string

Pulled from the CloudFront headers (if present) - Contains the two-letter country code for the viewer’s country. For a list of country codes, see ISO 3166-1 alpha-2.

Autodetected Info from CDN

autodetected_countryname

string

Pulled from the CloudFront headers (if present) - Contains the name of the viewer’s country.

Autodetected Info from CDN

autodetected_region

string

Pulled from the CloudFront headers (if present) - Contains a code (up to three characters) that represent the viewer’s region. The region is the most specific subdivision of the ISO 3166-2 code.

Autodetected Info from CDN

autodetected_regionname

string

Pulled from the CloudFront headers (if present) - Contains the name of the viewer’s region. The region is the most specific subdivision of the ISO 3166-2 code.

Autodetected Info from CDN

autodetected_latitude

string

Pulled from the CloudFront headers (if present) - Contains the viewer’s approximate latitude.

Autodetected Info from CDN

autodetected_longitude

string

Pulled from the CloudFront headers (if present) - Contains the viewer’s approximate longitude.

Autodetected Info from CDN

autodetected_metrocode

string

Pulled from the CloudFront headers (if present) - Contains the viewer’s metro code. This is present only when the viewer is in the United States.

Autodetected Info from CDN

autodetected_postalcode

string

Pulled from the CloudFront headers (if present) - Contains the viewer’s postal code.

Autodetected Info from CDN

autodetected_timezone

string

Pulled from the CloudFront headers (if present) - Timezone in detected location, in IANA time zone database format (for example, America/Los_Angeles).

Autodetected Info from CDN

autodetected_androidviewer

boolean

Pulled from the CloudFront headers (if present) - Set to true when CloudFront determines that the viewer is a device with the Android operating system.

Autodetected Info from CDN

autodetected_desktopviewer

boolean

Pulled from the CloudFront headers (if present) - Set to true when CloudFront determines that the viewer is a desktop device.

Autodetected Info from CDN

autodetected_iosviewer

boolean

Pulled from the CloudFront headers (if present) - Set to true when CloudFront determines that the viewer is a device with an Apple operating system.

Autodetected Info from CDN

autodetected_mobileviewer

boolean

Pulled from the CloudFront headers (if present) - Set to true when CloudFront determines that the viewer is a mobile device.

Autodetected Info from CDN

autodetected_smarttvviewer

boolean

Pulled from the CloudFront headers (if present) - Set to true when CloudFront determines that the viewer is a smart TV.

Autodetected Info from CDN

autodetected_tabletviewer

boolean

Pulled from the CloudFront headers (if present) - Set to true when CloudFront determines that the viewer is a tablet.

Tracked Events

Area

Event Name

Match Criteria

HTTP Method

Traffic Type

Broadcasts

Visited Broadcast

loweredUrl == "/broadcasts"

GET

Page URL

Pulse

Visited Pulse

loweredUrl == "/pulse/auth/getloginlink"

GET

Page URL

Search

Search

loweredUrl.includes("/interact/pages/content/search/search.aspx") || loweredUrl.includes("/search?q=")

GET

Page URL

General

Page Hit

Default

GET

Page URL

Blogs

Created blog

url == "/api/blog/"

POST

XHR

Blogs

Edited blog

url == "/api/blog/"

PUT

XHR

Blogs

Deleted blog

url == "/api/blog/"

DELETE

XHR

Blogs

Liked blog

/(api/blog/([0-9]+)/blog-post/([0-9]+)/like)$/.test(url)

POST

XHR

Blogs

Unliked blog

/(api/blog/([0-9]+)/blog-post/([0-9]+)/like)$/.test(url)

DELETE

XHR

Blogs

Saw who liked blog

/(api/blog/post/([0-9]+)/like)/.test(url)

XHR

Blogs

Liked blog comment

/(api/([0-9]+)/like)$/.test(url)

POST

XHR

Blogs

Unliked blog comment

/(api/([0-9]+)/like)$/.test(url)

DELETE

XHR

Blogs

Liked blog comment reply

/(api/([0-9]+)/reply/([0-9]+)/like)$/.test(url)

POST

XHR

Blogs

Unliked blog comment reply

/(api/([0-9]+)/reply/([0-9]+)/like)$/.test(url)

DELETE

XHR

Blogs

Saw who liked blog comment

/(api/person/0/timeline/([0-9]+)/like)$/.test(url)

XHR

Blogs

Saw who replied to blog comment

/(api/blog/([0-9]+)/blog-post/([0-9]+)/comment/([0-9]+)/reply)/.test(url)

GET

XHR

Blogs

Commented on blog

/(api/blog/([0-9]+)/blog-post/([0-9]+)/comment)$/.test(url)

XHR

Blogs

Subscribed to blog

/(api/blog/([0-9]+)/person/([0-9]+)/subscribe)$/.test(url)

XHR

Blogs

Unsubscribed from blog

/(api/blog/([0-9]+)/person/([0-9]+)/unsubscribe)$/.test(url)

XHR

People

Followed user

/(api/people/followers/([0-9]+))$/.test(url)

PUT

XHR

People

Unfollowed user

/(api/people/followers/([0-9]+))$/.test(url)

DELETE

XHR

People

Endorsed user

/(api/people/([0-9]+)/expertise/([0-9]+)/endorsement)$/.test(url)

POST

XHR

People

Removed endorsement

/(api/people/([0-9]+)/expertise/([0-9]+)/endorsement)$/.test(url)

DELETE

XHR

Timeline

Posted to timeline

/(/api/person/([0-9]+)/timeline)$/.test(url)

POST

XHR

Timeline

Deleted post in timeline

/(/api/person/([0-9]+)/timeline/([0-9]+))$/.test(url)

DELETE

XHR

Timeline

Liked timeline

/(api/person/([0-9]+)/timeline/([0-9]+)/like)$/.test(url)

POST

XHR

Timeline

Unliked timeline

/(api/person/([0-9]+)/timeline/([0-9]+)/like)$/.test(url)

DELETE

XHR

Timeline

Replied to timeline post

/(api/person/([0-9]+)/timeline/([0-9]+)/reply)$/.test(url)

POST

XHR

Timeline

Liked timeline reply

/(api/person/([0-9]+)/timeline/([0-9]+)/reply/([0-9]+)/like)$/.test(url)

POST

XHR

Timeline

Unliked timeline reply

/(api/person/([0-9]+)/timeline/([0-9]+)/reply/([0-9]+)/like)$/.test(url)

DELETE

XHR

Tracked Modules

Module Name

Match Criteria

HTTP Method

Traffic Type

Absence Booking

loweredUrl.includes("absencebooking2")

GET

Page URL

Administration

loweredUrl.includes("admin")

GET

Page URL

Analytics

loweredUrl.includes("analytics")

GET

Page URL

Blog

loweredUrl.includes("blog/blog")

GET

Page URL

Broadcasts

urlObj.pathname == '/broadcasts' || urlObj.pathname == '/broadcasts/create'

GET

Page URL

Business Contacts

loweredUrl.includes("contacts")

GET

Page URL

Calendar

loweredUrl.includes("calendar")

GET

Page URL

Calendar

loweredUrl.includes("addeditcalendar")

GET

Page URL

Case Management

loweredUrl.includes("/cmm2")

GET

Page URL

Category

loweredUrl.includes("pages/section/sub")

GET

Page URL

Content Area / Team Homepage / Homepage

loweredUrl.includes("section/default.aspx")

GET

Page URL

Developer Framework

loweredUrl.includes("/developerframework")

GET

Page URL

Developer Framework

loweredUrl.includes("developer")

GET

Page URL

Error Page

loweredUrl.includes("error")

GET

Page URL

Expenses

loweredUrl.includes("expenses")

GET

Page URL

Football

loweredUrl.includes("footballv4")

GET

Page URL

Forums

loweredUrl.includes("forum")

GET

Page URL

Gallery

loweredUrl.includes("gallery")

GET

Page URL

Getting Started

loweredUrl.includes("/gettingstarted")

GET

Page URL

Homepage

loweredUrl.includes("default.aspx?homepage=")

GET

Page URL

Homepage

loweredUrl.includes("/home/")

GET

Page URL

Manage Homepages Admin

loweredUrl.includes("/managehomepages")

GET

Page URL

Manage IP Addresses

loweredUrl.includes("/manageipaddresses")

GET

Page URL

Mandatory Reads

loweredUrl.includes("mandatoryread")

GET

Page URL

Media Manager

loweredUrl.includes("content/media")

GET

Page URL

Network Directory

loweredUrl.includes("networkdirectory")

GET

Page URL

Notifications

loweredUrl.includes("notifications")

GET

Page URL

Organogram

loweredUrl.includes("organogram")

GET

Page URL

Organogram

loweredUrl.includes("organagram")

GET

Page URL

Other

Default

GET

Page URL

Page

loweredUrl.includes("document.aspx")

GET

Page URL

Page

loweredUrl.includes("interactv7/composer/")

GET

Page URL

Page Editor

loweredUrl.includes("composer/upload")

GET

Page URL

Page Editor

loweredUrl.includes("composer.aspx")

GET

Page URL

People Directory

loweredUrl.includes("modules/directory/")

GET

Page URL

People Directory

urlObj.pathname == '/person'

GET

Page URL

Profile

/\person/([0-9]+)/.test(loweredUrl)

GET

Page URL

Polls

loweredUrl.includes("/poll")

GET

Page URL

Rewards

loweredUrl.includes('settings/people/reward')

GET

Page URL

Room & Resource

loweredUrl.includes("roombooking")

GET

Page URL

Search

loweredUrl.includes("search")

GET

Page URL

SharePoint Admin

loweredUrl.includes("/sharepointconnection")

GET

Page URL

Short URL Admin

loweredUrl.includes("/shorturl")

GET

Page URL

System Text Admin

loweredUrl.includes("/systemtext")

GET

Page URL

Tasks

loweredUrl.includes("tasks")

GET

Page URL

Team Blog

loweredUrl.includes("blog/teamblog")

GET

Page URL

Team Blog

loweredUrl.includes("blog/addeditteam")

GET

Page URL

Teams

loweredUrl.includes("directory/interactteams.aspx")

GET

Page URL

Teams

loweredUrl.includes("directory/teams")

GET

Page URL

Training Manager

loweredUrl.includes("/trainingmanager")

GET

Page URL

UMI

loweredUrl.includes("/umi")

GET

Page URL

Workflow & Forms

loweredUrl.includes("workflow")

GET

Page URL

Query Performance Tuning

Useful links from AWS to help optimize the query performance via better use of JOINS, ORDER, column usage, loading most relevant data only (eg. last 3 months, instead of All Time) etc.

https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/

https://docs.aws.amazon.com/athena/latest/ug/performance-tuning.html#performance-tuning-query-optimization-techniques

Useful excerpts.

ORDER BY

JOINS

Column Selection

Functionality Support

Interact Advanced Analytics is based on AWS Athena Engine 2, which comes with major improvements over version 1. You can find the reference below.

https://docs.aws.amazon.com/athena/latest/ug/engine-versions-reference.html#engine-versions-reference-0002