libAppTelemetry - Usage Analytics for shareware software (Windows, MacOS X)

icon runtime analytics for software

Watch installation and usage statistics of your desktop application (e.g. Shareware) with this low cost (or zero cost) solution.

Our software analytics library is built with C++ so that is easily portable to different operating systems (cross-platform feature). It uses the native OS connectivity structures, e.g. winhttp, NSURLConnection, etc to achieve a small footprint, OS compatibility, and optimised performance. While is it developed in C++, it can be used by any program that can call a .dll library (Windows) or a .dylib library (MacOS X).

Who is it for:

"No relationship can survive without effective and honest communication, and the special relationship that exists between you [the software developer] and your users is no exception.
Yet development organizations too rarely exploit the most immediate communication tool at their disposal: their application."

Read about the benefits of application statistics on this article of Sebastian Holst.

Shareware developers, desktop application developers, independent software developers who distribute their programs via the internet and what to know how many users have installed their software, what is the percentage of the free vs the paying users, which application features are used the most. With this information, they can shape their product to better match the expectations and the preferred usage by their customer. This critical information can help the developers deliver more value to the customers by focusing on what is important for them.

Why libAppTelemetry:

(Quick answer: because of the well known, reliable, free reporting platform)

On IOS and Android, there are native ways to monitor your app's usage via the iTunesConnect account or the Google Developer account.

But for Windows and Mac OS X there are only a few (and costly for the independent developers) systems to get runtime statistics of your programs.

LibAppTelemetry is designed to be a low-cost solution for the independent developers who cannot afford the expensive alternative platforms. Our library uses Google Analytics as a reporting platform, thus minimising the cost while keeping a high reliability and availability. It works in a similar way as the Google tracking javascript code that we put on our websites to track them with Google Analytics.

how the telementry library works for software programs

active software installations over time
Sample report (in Google analytics) of active installations over time.
You can see the evolvement of your user base and the rate of acquiring new users.
See more examples of runtine analytics reports here.


Simple API:
(see the latest version on github)
You can easily link this library to your desktop application and send usage statistics to your Google Analytics account. We wrote the documentation in a form of checklist that can be used as an integration guide.
/// get the version string of the library. You can call this anytime.
const char*	appTelemetryGetVersion(void);

/// get the full path name of the log file. You can call this anytime.
const char*	appTelemetryGetLogFilename(void);

/// enable or disable the writing to the log file. You can call this anytime. 
/// Default state is Disabled.
void appTelemetryEnableLogfile(const char *appName, const char *macBundleId);
void appTelemetryDisableLogfile(void);

/// initialize the library. 
/// Must be called before: appTelemetryAddOsVersion(), AddPageview(), AddEvent(), Free()

bool appTelemetryInit(const char *appName, const char *appVersion, 
                      const char *appLicense, const char *appEdition, 
                      const char *propertyID, const bool  userGaveConsent);

/// free the library. 
/// The function will wait for a maximum of 3 seconds for all pending async calls to gracefully finish.
/// After freeing the library, you can call again appTelemetryInit() if you need to reuse it.
void appTelemetryFree(void);
/// call this function on program launch, on program exit and on every important form, window, screen 
/// that you want to track. E.g. Main Window, Configuration settings, Main Window, Exiting
bool appTelemetryAddPageview(const char *pagePath, const char *pageTitle=0);

/// optionally call this function to log events in Google Analytics.
/// With the events you have an alternative way of tracking your program.
/// Depending on the things you want to track, maybe the Events will allow you to create 
///		a better model for understanding the usage of your program.
bool appTelemetryAddEvent(const char *eventAction, const char *eventLabel, const int eventValue );


  • Versions up to 1.0 will be free.
  • Version after 1.0 might have a small fee. The fee will be so small that it would be easily affordable by independent software developers that make little or even no income from their software.


Software identity card
Software name: 
libAppTelemetry for Windows and Mac OSX
Send usage statistics from desktop applications (Windows or Mac OSX) to your free Google Analytics account.
StarMessage software
Developer tools
Software analytics (runtime statistics)
Operating system: 
Microsoft Windows
Apple macOS
No votes yet

By using the library you can see in Google Analytics all the following figures as being fed directly from your installations around the world:

  • number of active users now
  • daily/monthly number of active users
  • number of unique installations
  • new users vs returning users
  • new installations per day/month
  • average number of windows/forms that the users open
  • average usage time
  • the preferred language on the user's computer
  • screen resolution
  • countries
  • OS versions
  • OS 32/64 bit
  • Screen views of your program and users path, e.g.
    main screen -> address book -> create new contact
    main screen -> configuration -> main screen -> (exiting)
  • custom events sent from your program
  • Versions of your application

See some screenshots of reporting examples here.

Known technical limitations:
  • Currently, the library does not cache the statistics in case there is no internet connectivity. It first checks for internet connectivity before attempting to post the statistics to your Google Analytics account.
  • Cross-platform (Mac + Windows)
  • Small footprint
  • Affordable by design: It eliminates the cost of running a complex reporting platform by using Google Analytics.
  • You can rename the library (.dll or .dylib) to a filename that matches your application's name
  • Work in a reporting/analytics tool you already know: Google Analytics
  • Free and reliable reporting platform: Google Analytics
  • Simple API; easy linking with your Mac/Windows desktop software
  • No sign-up needed to download the library and start testing it
  • Ready compiled command line programs let you test the recording of hits in your Google Analytics profile


Add new comment


Icon designed by Eucalyp from Flaticon