In order to create an analytics system that would work universally for mobile apps, desktop apps, and embeddes software running on hardware platforms, several technical and design challenges needed to be overcome. The system uses Google on the backend, with a REST API to send reporting messages. Using a REST package for JUCE I built a framework to handle different message types for application start/stop, app events, switch screen view, app crashes and errors, etc. This operates with the Google analytics API and reporting format, and includes metadata for things app version, hardware device, OS, etc. Once the initial prototype was up and running, I created a shared component that encapsulated its functionality and could be used in any Artiphon JUCE app. I also created a structure to pass app-specific information (e.g. the app name and version) from the client app to the shared framework.