This is an alternative of one of my previous posts about Setup Google Analytics to Modern SharePoint from any platform. Google Analytics means that your organization has to host data about softwares and users into a tierce solution. For some governance, privacy and security reasons, some organization can not use this kind of solutions.β€Œβ€Œ So, what are the alternatives? Is there another free solution?

    No Google Analytics

    I have done some research for a while ... I found other interesting analytics tools that I tried on my own blog and SharePoint test environments. Two solutions caught my attention based on the following criteria:

    1. Free: totally free is a must but at least basic features for free
    2. Open-Source: I like the open-source solutions so much! That gives the organization enough flexibilities to improve and customize the solution for their needs. And, incidentally, contribute to this project πŸ™‚
    3. Self-Hosted: of course, if you want to keep a hand on the data, the best solution is the self-hosting. Thanks to this kind of solutions, you can potentially have a compliant GDPR solution too πŸ˜‰
    4. Google Analytics alternative: is currently a reference in the world of web analytics service. Therefore, I took it as a reference to find solutions that provide sufficient similar features such as real time, several graph, create custom dashboards, maps, etc.
    5. Relatively easy to implement: if you are to present an awesome solution to your customer but he has to spend half of his time and budget to set up the solution itself... hmm, you know what I mean, isn't it? πŸ˜•

    Open Web Analytics

    Open Web Analytics logo

    I tested OWA at first because of several features available for free such as heatmap, mouse click, etc.

    After several weeks, I noted that the admin interface was really old, some features did not really work (for my part, I did not manage to make it work "heatmap" for example) and the real time was missing. In addition, I am following the GitHub repository of the solution and I did not see any new fixing issue, enhancement or whatever for a long time...

    For my tests, I used the https://github.com/vladk1m0/docker-owa docker image.

    So, I decided to pass to the next analytics tool...

    Matomo (Piwik)

    Matomo Analytics logo

    Matomo is the solution that I am currently using since some weeks; this solution looks a lot like Google Analytics:

    • Dashboard configuration
    • Tracker code implementation
    • Features (available for free)

    In addition to that, Matomo:

    Moreover, I did a suggestion for a new dashboard widget on the GitHub repository and a member of the team answered me the same day! Efficiency πŸ™‚

    Now, I will show you how I have configured my environment...

    Matomo for Modern SharePoint - for everybody

    You can have Matomo Analytics in two ways:

    • Cloud Hosting (the providing is not free. A grid of pricing is available here)
    • Self-Hosted with installation (free - some technical knowledges are required)
    See On-Premise/Cloud hosting comparison table for more information

    Set up Docker Matomo server

    Since I do not have several servers on hand, I am using Docker containers to have several services, including Matomo that provides a Docker Image that can be quickly configured and implemented into your environment.

    Below, my local Docker compose file that I use for my tests:

    version: '3.7'
    
    services:
      mysql:
        image: mysql:5.7.25
        environment:
          - MYSQL_ROOT_PASSWORD=password01
        restart: always
    
      phpmyadmin:
        image: phpmyadmin/phpmyadmin:latest
        depends_on:
          - mysql
        ports:
          - "9010:80"
          - "9011:443"
        environment:
          - PMA_HOST=mysql
        restart: always
    
      matomo:
        image: bitnami/matomo:latest
        depends_on:
          - mysql
        ports:
          - "9020:80"
          - "9021:443"
        environment:
          - MARIADB_HOST=mysql
          - MARIADB_ROOT_PASSWORD=password01
          - MYSQL_CLIENT_CREATE_DATABASE_NAME=matomo
          - MYSQL_CLIENT_CREATE_DATABASE_USER=matomo
          - MYSQL_CLIENT_CREATE_DATABASE_PASSWORD=password01
          - MATOMO_DATABASE_NAME=matomo
          - MATOMO_DATABASE_USER=matomo
          - MATOMO_DATABASE_PASSWORD=password01
          - MATOMO_USERNAME=matomo
          - MATOMO_HOST=matomo
          - MATOMO_PASSWORD=password01
          - [email protected]
        restart: always
    
    networks:
      default:
    

    Set up Matomo client (SharePoint Framework extension)

    Yes, a SPFx extension is provided by Matomo. However, developers can not edit, improve or adapt the solution... That is why I created my own solution and, moreover, a solution that can be quickly and easily provisionned.

    I wrote two scripts that will allow you to easily implement the solution πŸŽβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œβ€Œ

    Prerequisites

    1. Matomo Analytics Tracking Site ID
    2. Tenant App Catalog or Site Collection App Catalog:
    3. If you choose to use the PowerShell solution, you will need to install the PnP PowerShell module
    4. If you choose to use the any platform solution, you will need Bash and Office365-CLI
    Note: the user account that will perform the following actions has to have sufficient permissions on the target sites collection and on the App Catalog.

    PowerShell (Windows only)

    1. Download the PowerShell solution from the repository
    PowerShell script release
    1. Unzip the package
    2. From your PowerShell terminal, connect to your target site collection with Connect-PnPOnline cmdlet
    Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/target-site
    
    1. Launch the setup.ps1
    .\setup.ps1 -siteUrl https://contoso.sharepoint.com/sites/target-site -trackingUrl https://matomo.my-domain.com -trackingSiteId '2'
    

    If you cannot execute the PowerShell script, because of security reasons, before unziping the package, execute the Unblock-File cmdlet.

    Note: in this example, the package is deployed to the Site Collection App Catalog. You have other options illustrated into the README.md, that allow you to manage the deployment.

    Any platform (Linux, MacOS, Windows)

    1. Download the any platform solution from the repository
    Bash script release
    1. Unzip the package
    2. Allow setup.sh script execution
    chmod +x ./setup.sh
    
    1. From your Bash terminal, connect to your target site collection with spo login cmdlet
    spo login https://contoso.sharepoint.com/sites/target-site
    
    1. Launch the setup.sh
    ./setup.sh --siteUrl https://contoso.sharepoint.com/sites/target-site --trackingUrl https://matomo.my-domain.com --trackingSiteId '2'
    

    Note: in this example, the package is deployed to the Site Collection App Catalog. You have other options illustrated into the README.md, that allow you to manage the deployment

    Pretty simple, isn't it?

    Samples of results

    Enjoy πŸ’ͺ🏻

    Hoping this post will help you πŸ˜‰