Skip to content

Anonymized Telemetry

Alan edited this page May 27, 2022 · 1 revision

Since Frappe Books is a Desktop app, there is no way for us to know whether anyone is using it.

The only indicator we have is the installer download count from Github's APIs. This is not very useful as someone could just download and delete the installer and the counter would increment.

Because of this, and to increase motivation in developing Frappe Books, we have decided to add anonymized telemetry.

What is Anonymized Telemetry?

Let's break it down:

  • Telemetry is the collection and transmission of data. In this case, data regarding how Frappe Books is used is sent to our server.
  • Anonymized means that no personal details are added to this data, i.e. by looking at it there is no way for us to know who you are or where exactly you are.

When is telemetry logged?

It is logged on the following events:

  1. App is started or stopped.
  2. Data is created, deleted, imported or exported.

For more details, you can check the code.

What data is collected?

Data is essentially what action was performed and when it was performed. Here is the actual structure of the logged data.

interface Telemetry {
  deviceId: string;                  // Unique id for each device
  instanceId: string;                // Unique id for each instance i.e. database file
  timestamp: string;                 // When was the log made
  country: string;                   // Country set during Setup
  language: string;                  // Selected language.
  platform: string;                  // "Mac" or "Linux" or "Windows"
  openCount: number;                 // How many times the app has been opened
  version: string;                   // The app's version. Eg: "v0.3.2.-beta.0"
  verb: string;                      // What the event was. Eg: "created", "navigated"
  noun: string;                      // On what the event was performed. Eg: "Payment"
  more?: Record<string, unknown>;    // Contextual information. Eg: navigation routes
}

The deviceId and instanceId are completely anonymized, we don't collect your name or company name or some other personal information.

Since more is ambiguous, you can:

  • Take our word that it doesn't contain personal information.
  • Check the code for assurance. The term to search for is telemetry.log, the third parameter is more.

Here's a reference to the full telemetry/types.ts file. And here's the telemetry source code.

Example Telemetry Data

Example of a single, actual telemetry log.

{
  "country": "in",
  "language": "English",
  "deviceId": "39lkjj-zij9djjn",
  "instanceId": "hsiogz-l3k6ma0x",
  "version": "0.5.0-beta.0",
  "openCount": 35,
  "timestamp": "1653648899858",
  "verb": "started",
  "noun": "telemetry"
}

If you have any additional questions, you can either ask on our Telegram Group or raise an issue.