Install, instrument, and analyse locally
GooeyFlow keeps detailed product analytics in your environment. Install the native dashboard, add Logger to your application, then import protected .goo snapshots.
Download the correct dashboard bundle
Sign in to GooeyFlow, open Downloads, and choose the archive for the machine that will host the dashboard. Dashboard downloads require an active licence assigned to your website account. Extract the complete archive to a stable application directory; keep the launcher and deployment files together.
The dashboard stores its encrypted databases, installation identity, licence lease, and customer-owned keys locally. Treat its data directory as production data and include it in your backup plan.
Initialize the native dashboard
Configure the persistent data directory and static-assets directory supplied with the bundle. Initialize the installation once, create the first local administrator, and then start the service.
export GOOEY_FLOW_DATA_DIR=/srv/gooeyflow/data
export GOOEY_FLOW_STATIC_DIR=/opt/gooeyflow/static
./gooeyflow-dashboard installation init
./gooeyflow-dashboard users create-user admin@example.com --administrator
./gooeyflow-dashboard serve
Open the configured dashboard address in a browser and sign in using the local administrator account. For a customer deployment, put a customer-controlled HTTPS reverse proxy, VPN, or identity-aware proxy in front of the service.
Container deployment
If your download contains the self-hosted Compose deployment, configure its image and licence environment, initialize its persistent volume, create an administrator, and start it:
docker compose -f docker-compose.self-hosted.yml pull
docker compose -f docker-compose.self-hosted.yml run --rm dashboard installation init
docker compose -f docker-compose.self-hosted.yml run --rm dashboard \
users create-user admin@example.com --administrator
docker compose -f docker-compose.self-hosted.yml up -d
Import and explore product usage
Open Import and manually select one or more encrypted .goo files. After import, use Overview for cross-product trends, Devices for product- or device-group analysis, and Views for window-specific interaction patterns. Device groups, device types, and view filters update the relevant metrics, graphs, and lists.
Repeated snapshots are safe to import: existing event identifiers are ignored. Keep the original exports until your backup and retention policy says they may be removed.
Download the Logger package for your toolchain
Sign in and download the Logger SDK archive matching your operating system, architecture, compiler ABI, and Qt version. Extract it outside your source tree or install it into an internal SDK prefix. The package contains headers, libraries, CMake package files, examples, and detailed interface documentation.
Core integration needs OpenSSL Crypto and SQLite. Upload support needs libcurl. Qt Widgets or Qt Quick applications also need a matching Qt 5.15 or Qt 6 development installation.
Link Logger into your application
Point CMAKE_PREFIX_PATH at the extracted SDK and request only the components your application uses. For a Qt Widgets application that exports and uploads snapshots:
find_package(GooeyFlow CONFIG REQUIRED COMPONENTS HttpUploader QtAdapter)
target_link_libraries(my_app PRIVATE
GooeyFlow::GooeyFlow
GooeyFlow::HttpUploader
GooeyFlow::QtAdapter)
Use QtQuickAdapter instead of QtAdapter for QML. A non-Qt application can link only GooeyFlow::GooeyFlow; add HttpUploader only when the application sends protected exports directly.
Record interactions and create a protected export
Create one logger with a writable private database path, assign a stable device type, and keep it alive longer than any adapters. Qt adapters automatically observe supported controls; stable, unique object names make the resulting analytics useful.
#include <gooey_flow/interaction_logger.hpp>
#include <gooey_flow/qt_event_adapter.hpp>
gooey_flow::InteractionLogger logger{"interactions.db"};
logger.setDeviceType("desktop_control_panel");
gooey_flow::QtEventAdapter adapter{logger};
adapter.observe(mainWindow);
logger.exportDatabase("device-interactions.goo");
The application writes to its private working database and exports a consistent encrypted .goo snapshot. Do not distribute or manually import that working database. Logger never uploads automatically; your application explicitly exports a file and either transfers it for manual dashboard import or sends it with the optional uploader.
button_clickedslider_changedtext_editedgesture_detectedtoggle_changedActivate and validate
Your administrator assigns a dashboard licence to this website account. Enter the supplied activation credentials in the local dashboard. Successful online validation renews its signed offline lease; the Account page shows the latest validation and validity window.
Analytics stay local
The website distributes software and validates licences. Interaction records, imported .goo contents, devices, sessions, views, and analytics values remain in the native dashboard database. The customer installation owns the import private key; Logger receives only its public key.