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).

We also have examples on how to use it with InnoSetup so that Setup and Uninstall statistics of your shareware software are automatically recorded in your Google Analytics property.

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.
All function names in our C++ API, the DLL and the .dylib are prefixed with "lat"

// get the version string of the library. You can call this anytime.
const char*	latGetVersion(void);

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

// enable or disable the writing to the log file. You can call this anytime. 
// If you do not call the Enable function, the default state is Disabled.
// Parameter macBundleId is used only in Mac OS. Under Windows you can pass an empty string ""
// Parameters appName and macBundleId affect the filename and the folder of the logfile.
// They must contain only characters compatible with the OS. E.g. they cannot contain characters such as /\:
void latEnableLogfile(const char *appName, const char *macBundleId);
void latDisableLogfile(void);

// initialize the library.
// Parameters:
//		appLicense examples: free, trial, full, paid, etc
//		appEdition examples: Apple store, Special build, Standard, IOS, Mac, Win, etc
// Must be called before: AddPageview(), AddEvent(), Free()
bool latInit(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 latInit() if you need to reuse it.
void latFree(void);

// call this function after 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
// It will process your request asynchronoulsly
bool latSendPageview(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.
// It will process your request asynchronoulsly
bool latSendEvent(const char *eventAction, const char *eventLabel, const int eventValue );

// optionally call this function to log screenviews in Google Analytics (Create a Mobile app view under the same GA property).
// With the screenViews you have an alternative way of tracking your program.
// It will process your request asynchronoulsly
bool latSendScreenview(const char *screenName);

// if isFatal = false, the incident will be logged in Google analtytics as Exception
// if isFatal = true, the incident will be logged in Google analtytics as Crash
bool latSendException(const char *exceptionDescription, const bool isFatal);


  • 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
  • Cross-platform (Mac + Windows)
  • Small footprint, less than 400 Kb
  • Simple API; easy linking with your Mac/Windows desktop software
  • Free.
  • No sign-up needed to download the library and start testing it
  • You can rename the filename of the library (.dll or .dylib) to a filename that matches your application's name
  • Inno Setup compatible: monitor the installations and uninstalls of your software
  • Monitoring and reporting application crashes and application exceptions.

Reporting platform

  • Google Analytics is a reporting/analytics tool you already know
  • Free and reliable reporting platform

Statistical figures

  • 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.
  • See usage statistics of your distributed software.
  • Ready compiled command line programs let you test the recording of hits in your Google Analytics profile
  • Ready script to include the library in Inno Setup as 3rd party extension (you will have detailed statistics about the installations and the uninstalls of your program)


Add new comment


Icon designed by Eucalyp from Flaticon