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 |
Homepage edits | loweredUrl.includes("/zones") | 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/
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.
Updated 6 months ago