Mobile Support

Cooladata now supports viewing the app on mobile devices. On your mobile device you can:

  • View a report
  • View a dashboard
  • Browser the Reports and Dashboards lists

Cooladata’s mobile supports comes to help you access you data quicker and at any time, and is specifically designed to work with report links from a Publications and Alerts.

Note that most features are not accessible from a mobile device, as it is intended for viewing only.
As with the desktop version, Cooladata works best on a Chrome browser.

Contact us at for questions or requests regarding mobile support.

Examples – ReportDashboard, and Dashboards list:


Print Friendly, PDF & Email


CoolaData’s Key Performance Indicator (KPI) reports enable you to display discrete values, counting various events in your data. For example, how many users, sessions, events per country and so on. This data can be shown broken down per day, week, month and so on.

For a complete introduction to the KPI report please see the following video:


Creating a new KPI report

  1. Click the New Report button at the top to open the reports gallery.
  2. From Custom Reports, choose KPI.
    The following displays:
  1. In the Enter Report Name field, type any name for the report.
  2. In the Choose KPI field, select one of the preset options or custom – different fields are displayed accordingly. See more about the two types below.
  3. To change the name of this KPI click edit:
  4. To add conditions to this KPI, click the filter icon on the right – filter. The following displays – enter any conditions (up to 5 per KPI):
  5. You can add an additional KPIs by clicking the + Add KPI button.
  6. In the Breakdown by field (optional), select the Time or the Property option to break down the display of the KPIs.

    • Time: Select hour, day, week, month or year to break down the report. The following is an example of a report with a time breakdown and without
    •  Property: Select a property by which to break down the report. The properties are divided into scopes, Event, Session or User.
  1. Define the report’s date range and filters.
  2. Click Run
  3. Configure the visualization
  4. Click Save.


Preset KPI

In the Choose KPI field, select one of the following options:

  • Users – The number of users that performed an event.
  • DAU – Daily Active Users – The average number of users who were active (sent an event) per day during the selected time period.
  • MAU – Monthly Active Users – The average number of users who were active (sent an event) per month in the last year.
  • Recency – The average amount of time elapsed between user sessions, meaning the average amount of time that it takes for a user to perform another event after a session has been completed.
  • Sessions – The number of user sessions.
  • Sessions Per User – The average number of sessions per user.
  • Sessions Per Day – The average number of sessions per day (for all users).
  • Sessions Duration (sec) – The average duration of each session, in seconds.
  • Events Per User – The average number of events per user.
  • Events Per Day – The average number of events per day.
  • Events per Session – The average number of events per session.


Custom KPI

When defining your KPI report, selecting Custom lets you define a function on a property to appear in the report. Select a function and property, and add any conditions you need. Note that the available functions depend on the property data type. If you selected an invalid function, it will be replaced.


KPI advanced menu

You can now use “Having” and “Sort by” as part of your KPI reports.

Note – Currently Having supported only with custom KPI.

Sort by

The “Sort by” used to sort the fetched data in either ascending or descending according to one or more columns.

You can sort by any column you query and you can add as many “Sort by” rows as available options.


The “Having” adds the ability to add a condition to aggregated functions, therefore allows filtering the results of the report by the value of a KPI.

It is not a mandatory field in the KPI report and you can add as many “Having” conditions as you need.

To use the Advanced options:

In order to add Having or Sort by to your KPI report, you need to fill in at least one custom KPI step and at least one breakdown.

Once you do that, the “Advanced option” will appear below the breakdown: 

Then you’ll simply need to choose the aggregative function you want the report results to filter by and add the wanted condition.  

Print Friendly, PDF & Email

R and Python Reports

Cooladata enables you to run R and Python script reports. This opens up a wide range of analysis and visualizations for your reports and dashboards. Run any script, plot any visualization and use it just like any other report, in Dashboards, Publications, and Embedded Reports.

Note: this feature is in beta – your feedback will be much appreciated!

Creating a new R/Python Report

  1. Click the New Report button at the top to open the reports gallery.
  2. From Scripts choose the desired report type: R or Python.
    The following will be shown:
  3. In the top section, indicated by Data (CQL), enter any query.
    You can query any data source in your project, including all tables and linked data sources. This will serve as the input for your script. The results are saved to “CQLQuery”, and can be used in your script.
    You can include “filters (context)” or “date_range (context)” in the query to use the report and dashboard controls, as in any CQL report.
    Note that “select * from cooladata” isn’t supported in R or Python reports.
  4. In the bottom section, indicated by Script (R/Python), enter your script. We recommend running your script in a dedicated R or Python IDE (preferably on Unix) and debugging it there before using it in Cooladata.
    Some libraries are pre-installed in your project and can be used. You can also add other libraries to run in this specific script from the “Additional libraries” field below the script.
    The script is expected to create a plot, which is displayed as an image. You can use any plot function in the script.

    • For R, the last plot in your script is saved to jpg. You can also use the GGsave function in R. Mark the “Use ggsave visualization” toggle in the report settings to use GGsave.
  5. Click Run to execute the query and script.
    Once the script is finished, an image should be shown.
    If no image is shown, check the log files for errors in the script (link shown next to the Run button).
Print Friendly, PDF & Email


A Funnel report shows a specific sequence of events performed by a user (also called a funnel). It enables you to understand how many users progressed through different stages. A Funnel report enables you to understand how users behave over time and to find sequences of events that lead to a goal (for example, when a user either makes a purchase or drops out).

Funnel reports also enable you to slice events by various population segments and event properties and to compare them. For example, in order to perform A/B testing in which you compare the steps (events) performed by users from different countries before they purchase.

A Funnel report can describe up to five sequential events.

To create a new Funnel report:

  1. In the CoolaData Administrator console, click Reports reports.

– OR –
In the Dashboard window, click the Add Reports 6-15 button.
A list of reports is then displayed.


  1. Click the + button to add a new report. A dropdown menu of report types is displayed. Select Funnel.


  1. In the Completed funnel by field, select the time range by which the funnel of events is to be completed.

User Lifetime and Single Session

    • Single Session – The entire funnel must start and complete within a single user session.
    • User Lifetime – The entire funnel must start and complete within the date range of the report, meaning that it may extend over multiple user sessions.

Both these options show all the events in the funnel regardless of whether the funnel completed within the time range of the report. This means that some of the data in the report reflects events belonging to funnels that were not completed, so that some events of the funnel might not have taken place at all or some events might not have taken place within the date range of the report.
These two options do not enable you to filter by the value of event properties.
Note – Only events that have the Include in Path option checked are included in the report.
Note – The User Lifetime and Single Session options retrieve data from the CoolaData’s aggregated Sessions Table.

1 Day, 2 Days – 60 Days

The 1 Day, 2 Days – 60 Days options specify the amount of time in which the entire sequence of events (funnel) must occur. Each funnel is given the same amount of time to complete, meaning that the day(s) starts being counted from the first event.


Only the sequence of events that starts and completes within this time range is included in the report. For example, if 1 Day is selected and the funnel consists of three events, it means that all three events must occur within any 24-hour period within the report’s time range. This means that if one of the events happened before the first event or more than 24 hours after the first event, then that entire funnel of events is not included in the report. All these events are also not included in the report, if any of them are outside the time range of the report.

Tip – In order to ensure that only complete funnels are included in the report, use one of the Days options and not the User Lifetime and Single Session options.

Note – The 1 Day, 2 Days – 60 Days options retrieve data from the CoolaData Events Table, which provides information based on the value of event properties. These options may respond slightly slower to a request than using the User Lifetime and Single Session options, which only relate to the existence of events – and not to its properties.

  1. Now, define the first event of the funnel. In the Did field, in the Select Events field select one of the names of the events already sent to CoolaData. The most frequently occurring events appear at the top of the dropdown menu.


In the As field, specify the label (display name) to appear for this event in the report.


[Optional] – If one of the Day options is selected in the Complete funnel by field, then you can define the value of a property of an event to be included by selecting the arrow on the right >.


A Where condition is then displayed, as shown below –


From the Select the property dropdown field, select one of the properties of the events that were sent to CoolaData.


From the Select an operator dropdown field, select an operator to be applied to this property and then select/enter a value.


Note – The Where option does not appear for the User Lifetime and Single Session options.

  1. In the Followed by field, in the Select Events field, select an event name that occurs after the event selected in the Did field occurred.


  1. To define additional events in the funnel sequence, add an additional Followed by field by clicking the + on the right.

Note – Multiple events can be defined in the Did field and in the Followed by field. You can define an AND relationship or and OR relationship between them.

  1. Type in the name of the report in the top-left corner of the page.
  2. [Optional] – To break down the display of events according to the value of a specific property, select a property in the Breakdown by field.


Note – If any of the events match more than one of the criteria, then the total number of events represented in the report may be greater with a breakdown than without.

  1. Define the report’s date range and define the report’s filter if you would like it to be different than the dashboard in which it appears.
  2. In the Description field, fill in any description of the report.
  3. Click Apply and then click the Compute button to display an example of the results of this query, as shown below –


A chart partition is shown for each event. Each part of the chart is broken down (and color-coded) according to the values of the properties in the report and displays a number representing the quantity of events in the report. For example, the view_doc event has 100 occurrences of N/A and 11 occurrences of 1, and the widget_sent_query event has 99 occurrences of N/A and 11 occurrences of 1.

The percentages displayed at the bottom of each chart indicate the proportion of each property value.

  1. By default, the report displays all values as one group, even when a breakdown has been defined. In order to display the breakdown, after you click the Compute button, select the Change Breakdown Selection 6-33 tool that appears under the Compute button. Then, select the values to be shown as a breakdown. Other values do not appear in the report.


Select all the values by which you want the report to be broken down.

  1. Set the visualization options and sliders that appear underneath according to your preference.


As you select various visualization options, the chart appears at the bottom of the window accordingly –

    • Present Funnel Date Range/Present Conversion Window – Shows or hides this information in the report.
    • Present Step Duration – Displays an indicator over which you can hover to see the amount of time it takes to complete the two events to the right and left of the indicator. Each color of the indicator represents a different property value.


  1. To publish this report –


    • Click the three dots in the top-right corner of the page to display a toolbar.
    • Select the Publish option.


    • Fill out the window to specify the recipients to receive this report, the frequency and the time of day.

The new report now appears in the Dashboard and is sent to the specified recipients daily.

  1. Click Save.


The funnel report provides the ability to view a set of ordered actions and the numbers of users that progress through these actions towards a specified goal. The funnel will help you see how your users progress through the actions, where they are most likely to drop off, which options served the conversion goal better, and so on.

To setup the report you need to define a sequence of events; by default, the editor opens with placeholders for two events. You may use up to five events per funnel. The last event in the sequence is treated as the global conversion goal. Click ‘+‘ to add events to the funnel sequence.

For each step, select an event. You can customize the display by editing the event name alias. You can also define conditions which will apply only to the specific step by expanding the step filters from the “>” icon (these conditions work in unison with the report/dashboard filters).

Then define the time required to complete the funnel. This requires the user to perform the first event within the date range of the report and the last event within the specified conversion window. For example, if the first event occurred in the last day of the funnel date range, the user will only have one day to complete the funnel. Note: if you define the conversion window in days, users who have not had enough days to complete the funnel till the end of the report date range will not be counted as part of the funnel.

Last, you can choose to breakdown the results by any property. If, for example, you’ve set up an A/B test and sent the test ID as a property, breaking the results down by the test ID will show you which option converted better. After you compute the report, choose the groups to display from the icon at the top right of the preview area.

Signup Funnel

Print Friendly, PDF & Email

Cohort Analysis

Cohort analysis breaks down data into groups which usually share common characteristics or actions within a defined time frame. Cohort analysis helps identify patterns in the life cycle of customers, adapt, and tailor the service to specific cohorts. A group of people who share a common characteristic or actions within a defined period form a cohort, represented by a row in the returned result set. The date range selected in the report will specify at which date the first cohort begins.


The syntax for the cohort function is as follows:

SELECT cohort_name, cohort_id, cohort_size, bucket_id, {function} AS {alias}
FROM cooladata
WHERE {query conditions}
CLUSTER COHORT BY {n days|weeks|months|quarters|years | property_name} 
STARTS WITH {TRUE | event_name = "<event_name>"} [AND {conditions}] 
FOLLOWED BY [NOT] {TRUE | event_name = "<event_name>"} [AND {conditions}] 
BUCKET BY {n days|{[CALENDAR] weeks|months|quarters|years} 
HAVING  [cohort_id < n AND] bucket_id < n
GROUP BY cohort_name, cohort_id, cohort_size, bucket_id


SELECT cohort_name, cohort_id, cohort_size, bucket_id, {function} AS {alias}

Mandatory fields in the SELECT clause:

  • cohort_name: a string describing the cohort:
    • For DAY & WEEK – the date (YYYY-MM-DD) of the first day in the cohort
    • For MONTH – the month (YYYY-MM) of the cohort
    • For Properties – the value of the property
  • cohort_id: the ordinal number of the cohort (starts with 0)
  • cohort_size: the number of users in the cohort
  • bucket_id: the ordinal number of the bucket (starts with 0)
  • Aggregate Function: can be the count of users in the bucket, the cohort size minus the count of users in the bucket (i.e. the rest of the users), or the sum/average/max/min/stddev of a measure (property).

All arguments but the aggregate function must appear in the GROUP BY clause.


CLUSTER COHORT BY {n days|weeks|months|quarters|years | property_name}

The grouping logic for each cohort. Can be defined by one of the following:

  • Time period defined by a number and a time resolution (days, weeks, months, quarters or years)
  • User scope properties


STARTS WITH  {TRUE | event_name = "<event_name>"} 

The first event performed:

  • event_name: performed a specific event
  • TRUE: performed any event

Any number of additional conditions for the event can be specified, i.e. where any of the event’s properties have specific values, using “AND <condition>”.


FOLLOWED BY [NOT] {TRUE | event_name = "<event_name>"}

The concurrent event performed:

  • event_name: performed a specific event
  • NOT event_name: did not perform a specific event
  • TRUE: performed any event

Note: to find the number of users who did nothing use the TRUE argument and, in the select clause, count the number of users left in the bucket – i.e.:

cohort_size - count(distinct customer_user_id, exact) AS count

Any number of additional conditions for the event can be specified, i.e. where any of the event’s properties have specific values, using “AND <condition>”.


BUCKET BY {n days|{[CALENDAR] weeks|months|quarters|years} 

The duration of each bucket and the rule by which to count users in each bucket:

  • FIRST: only counts the user once on the first occurrence of the event throughout his life cycle
  • ALL: the user is counted each time he performed the event
  • RECURRING: each cohort user is counted only if the user’s activity occurred consecutively in each bucket throughout the duration of the cohort.


HAVING  cohort_id < n AND bucket_id < n

Used to limit the number of buckets and cohorts in the query. When clustering cohorts by property, limiting cohort_id isn’t necessary (will return all the property values, sorted by cohort size).



Which users bought something after registering?
Users that registered within 7-day periods, and then paid for something, by months, showing only the first instance.
This will show us on which month each user made his first payment.

SELECT cohort_name, cohort_id, cohort_size, bucket_id, COUNT(DISTINCT customer_user_id, exact) AS count
FROM cooladata
WHERE date_range(last 90 days)
   STARTS WITH event_name = "register"
   FOLLOWED BY event_name = "pay"
HAVING cohort_id < 5 AND  bucket_id < 5
GROUP BY cohort_name, cohort_id, cohort_size, bucket_id


Reverse Cohort

It is also possible to analyze a sequence of two events in the reverse order, i.e. what happened prior to a certain event.
Replace “starts with… followed by…” with “ending with… preceded by…”, as follows:


STARTS WITH  {TRUE | event_name = "<event_name>"} 
FOLLOWED BY [NOT] {TRUE | event_name = "<event_name>"}


ENDING WITH  {TRUE | event_name = "<event_name>"} 
PRECEDED BY [NOT] {TRUE | event_name = "<event_name>"}

The rest of the query would still use the same syntax.


Export users

You can also generate a list of users and their properties using the cohort query.
To do so, replace the SELECT clause with the user properties you wish to export and remove the GROUP BY clause.


SELECT cohort_name, cohort_id, cohort_size, bucket_id, {function} AS {alias}


SELECT {user properties}



List of user ID’s and emails who bought something within the first week after registration.
Using the the same cohort query, select the user ID’s and emails instead of the cohorts and buckets. To limit the list to the first week, limit the results to buckets 0 and 1.
Note that only user scope properties can be exported (see more on property scopes here).

SELECT customer_user_id, user_email
FROM cooladata 
WHERE date_range(last 30 days)\
   STARTS WITH event_name = "register" 
   FOLLOWED BY event_name = "pay" 
HAVING (bucket_id<2)


Print Friendly, PDF & Email