Provides an unobtrusive and scalable observation solution for Web interaction. Low-level events are captured in a scalable way, supporting a longitudinal analysis of fine-grained interaction data.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

UCIVIT - WebIntCap

This tool provides the means to capture Web interaction data unobtrusively, in a scalable way.

It has shown to be able to escalate to thousands of concurrent users, over periods longer than a year.

How do I get set up?

1 Install MongoDB

An installation of MongoDB is required for the tool.

Then the file dbAccessData.js needs to be completed. The content (below) has default options for a deployment of a server in the local computer. DBUSERNAME and DBPASSWORD can be completed if required. They can be left unmodified if MongoDB has not been configured to require credentials.

module.exports.mongoPath = 'localhost/ucivitdb';
module.exports.mongoTestPath = 'localhost/ucivittest';
module.exports.mongoAuthenticateDB = 'admin';// DO NOT CHANGE
module.exports.mongoUser = 'DBUSERNAME';
module.exports.mongoPass = 'DBPASSWORD';

Once the server is running, a quick way of testing if the events are being captured and stored correctly is running the following code in the terminal. NOTE: this code assumes MongoDB has been properly installed, the mongo function is available, and no authentication has been configured for the database.

The following code:

  1. Connects to a local MongoDB installation
  2. Switches to the default UCIVIT database
  3. Counts the number of events recorded so far
  4. Shows the formatted information for the last captured event
use ucivitdb{"timestamp":-1}).limit(1).pretty()

2 Deploy script into your Web site

First, open the deploymentScript.html file in any text editor. The following lines need to be modified:

ucivitOptions.websiteID = 'WEBSITEID';
ucivitOptions.serverIP = 'CAPTURESERVERADDRESS:2727';
ucivitOptions.isDOMrecorded = false;
ucivitOptions.protocol = PROTOCOL.HTTP;

WEBSITEID can be any string. I recommend using a number code, such as '10003'.

CAPTURESERVERADDRESS needs to be changed to the IP (or dns) of the computer where the server is deployed. 2727 is the default port, if changed, it needs to be changed in as well (see next step).

isDOMrecorded tells the tool if a copy of the Web page's DOM needs to be stored. This allows you to be able to recreate the actual interaction environment of the user.

PROTOCOL.HTTP determines if the tool will use HTTP or HTTPS protocol. HTTP is used by default.

After that, the full text from deploymentScript.html needs to be pasted into every Web page of the Web site to track, inside the <head> tag of the html document.

Example of possible deployment:

  <!-- ucivit script start -->
  <script type="text/javascript">
    <!-- FULL CONTENT FROM deploymentScript.html -->
  <!-- ucivit script end -->
  <!-- REST OF THE PAGE -->

3 Start server

The script starts the server with some default settings:

start cmd.exe /k mongod --rest --bind_ip
npm start

Test page

The following page allows you to check that the server is working correctly. Just download it from here and run it locally, or access it remotely from here, change the IP address (localhost by default), and press "Set parameters and start tracking" to test the capture script.


This tool was originally based in UsaProxy, developed by the group of Richard Atterer

For questions, or help using this tool, contact Aitor Apaolaza (


The design of this tool supported the following publications:

  • Understanding users in the wild in the Proceedings of the 10th International Cross-Disciplinary Conference on Web Accessibility.
  • Identifying emergent behaviours from longitudinal web use in the Proceedings of the adjunct publication of the 26th annual ACM symposium on User interface software and technology
  • Longitudinal analysis of low-level Web interaction through micro behaviours in the Proceedings of the 26th ACM Conference on Hypertext & Social Media


This work was supported by the Engineering and Physical Sciences Research Council [EP/I028099/1].