Skroutz Analytics

For a long time we wanted to solidly know the effectiveness of as an Ecommerce channel.

We already knew that is an effective channel, but we needed some KPIs to actually prove it, first to ourselves and also to the shops that choose to grow their sales through our platform.

In simple terms

We wanted to have an answer to this simple question:

Did the user buy the product after seeing it at ?

This question led us to develop Skroutz Analytics, as we needed data and statistics in order to answer such questions in a more scientific way.

On the web, there is no other choice than tracking everything in order to gather statistics.

Enter Skroutz Analytics

Skroutz Analytics is just another analytics tracking platform, but is tailored to the needs of evaluating a shop’s performance in Skroutz.

~ Yet another analytics platform?

Skroutz Analytics provides enhanced analytics for the Skroutz domain, not just sales statistics like other platforms do.

It provides performance analytics that can help shops to take intelligent business decisions.

e.g. Compare conversion rate of a shop with the average conversion rate of all the involved shops on a certain category.


The Big Picture of User Tracking

User tracking starts after the redirection to a shop’s web page by clicking a product on

After that, actions like page views and orders are being tracked while a user navigates through the shop’s web pages.


Dive into technical details

Projects and technologies we are using:

Analytics JS client

A minimal cross-domain user tracking js library, which is also an open source project.

Its responsibilities are:

  1. Creating and persisting tracking session (across different domains).
  2. Reporting client-side API calls to Analytics Server (beacons).

Analytics Server

A non-blocking I/O web server built on Goliath web framework, handling all Skroutz Analytics traffic.

Its responsibilities are:

  1. Provide an API for the Analytics JS client to send beacons to.
  2. Dispatch jobs to our queues.

We use beanstalk for our queues.

Analytics Worker

Analytics Worker’s purpose is to consume reported beacons from the queues and persist them to a MariaDB database.

It has been implemented as a Rails Engine, so that it can be mounted to a Rails application and provide all the models that Skroutz Analytics is using for its raw data representation.

Analytics Analyzer

The raw data, previously persisted by Analytics Worker, pass to the next level. The Analyzer aggregates the data on an hourly basis and extracts the desired metrics. Results are stored in the relevant MongoDB collections. For better performance we also store aggregated analyses in different time spans (daily, monthly).

Analyzer has also been implemented as a Rails Engine, so that it can be mounted to a Rails application and provide all the models that Skroutz Analytics is using for it’s analyses.

Analytics Admin

Analytics Admin is a Rails application, acting as our internal administration panel for Skroutz Analytics. It provides facilities for inspecting the collected data and extracting useful insights.

Analytics API

A Rails application that provides an API to communicate with other applications in Skroutz.

Its main purpose is to expose analytics data to shops participating in Skroutz.

System Architecture

The aforementioned system components, along with their dependencies and data flows, are depicted in the following simplified diagram.


Skroutz Analytics in Numbers

  • We have about 500 shops integrated with Skroutz Analytics, that is a 25% of the shops participating in Skroutz.

  • Currently we handle approximately 15 million actions per month from 1.5 million unique sessions.

  • Every month about 10GB are being added to our raw datastore.

  • Our MongoDB datastore has grown to 135GB after one year’s worth of analyses.

And we are still growing…

The shop integration process is carefully curated in order to ensure high quality of our analytics data. We strive our data to span to as many product categories as possible by integrating shops with the intention to achieve diversity.

To sum up

We are very proud for Skroutz Analytics both technically and business wise.

Our achievement is a highly scalable architecture with a great business value both for Skroutz and the shops participating in it.

To answer the very first question and satisfy your curiosity, is indeed a very effective Ecommerce channel and Skroutz Analytics is here to prove it!

Category Conversion Rate
Nappy Changing 10.7
Baby Care 8.6
Sun Care & Tanning 7.5
Toners, Drums 6.9
Game Cards 5.7
Opticals 5.5
Groomers & Trimmers 3.6
Mobile Phones 2.2
Tablets 2.1
Women’s Shoes 1.4

Data period: 2016-04-01 - 2016-08-31