Documentation

Connect a desktop app

Use an app SDK to measure active installs, versions and custom app events. Adding a website script does not instrument a desktop app.

Already have users? Read Add Jelto to an app with existing users for install coverage, the first version baseline and cohort limits after adoption.

Connect the app

When adding a website, select This website also has an app to include Set up SDK in the guided setup. You can register the app and copy its SDK prompt there, or skip it and return through Settings later.

  1. Open your product's Settings → Installation → Apps.
  2. Choose Add app, then the framework your app is built with. Swift apps run on macOS; for Electron, Tauri or .NET, select every operating system you release. Each operating system becomes its own app, identified by its platform (macos, windows, linux), and one initialization without an app argument serves every build. Set a custom identifier only for a second app on the same operating system, and pass it at initialization.
  3. Choose Swift, Electron Forge, Electron Vite, Tauri, or .NET.
  4. Initialize once when your app decides telemetry may start, and pass installOrigin: new for an app that had no users before Jelto; otherwise see Add Jelto to an app with existing users to derive new, existing or unknown from each installation's saved state. Installations initialized without it are recorded as unknown, which Retention, Onboarding and license conversion exclude. Keep secret API keys (jk_…) out of desktop binaries.
  5. Send custom events for actions you want to measure. Jelto discovers valid event names and property keys on first receipt; no preregistration is needed. See custom goals.

Set up with AI

Open a registered app's SDK setup in Settings → Installation → Apps. Choose Swift, Electron, Tauri, or .NET, then select Copy prompt under Set up with AI. Swift is available for macOS apps. Paste the prompt into a coding assistant with your app project open.

The English prompt includes your public product ID (prd_8f3kq2m9x1), registered app identifier, tracking endpoint, initialization example and SDK guides. It asks the assistant to inspect your project, preserve telemetry choices, initialize once in the right startup flow, check builds and explain how to verify app activity. It contains no secret API key.

Packages come from public registries. The prompt names the published package for the selected SDK: the Jelto Swift package from GitHub, @jelto/electron on npm, @jelto/tauri on npm with tauri-plugin-jelto on crates.io, or Jelto on NuGet. Your assistant installs the current release with your project's package manager. It should report any installation error and the checks that could not run, without claiming a failed installation succeeded.

View prompt shows selectable text for review or manual copying. Install manually shows the selected SDK's initialization example; use the linked SDK guide for package setup. Switching methods keeps your SDK selection. Copying a prompt or passing a build does not verify incoming app activity.

Verify app activity

Use a separate Jelto product for development tests. The trial includes two product slots for this purpose; use the development product's product ID in development builds. Before choosing Starter, remove the test product and wait for deletion to finish, or choose Growth to keep both. For production, launch each packaged app with telemetry allowed and keep it open long enough to send queued activity. In Settings → Installation → Apps, choose Check app activity. Each registered app shows its own retained heartbeat receipt and observed version; a receipt from macOS does not verify Windows. A quiet receipt still verifies the SDK but does not claim current activity. No retained heartbeat means unverified, not proof that an app has never reported. Failed checks remain unknown and can be retried.

The SDK sends its first batch, the install claim and a heartbeat, about 2 seconds after initialization, and later events about 5 seconds after they are tracked; offline sends retry with backoff. Jelto stores events within about a second, so that app's check shows Receiving app activity a few seconds later. Do not repeatedly reset an install ID to test counts.

Version adoption requires known app versions. Retention needs time and a sufficiently mature sample. Read Understand app usage before interpreting an empty or unavailable metric.

Website and app together

You can compare website visits, download clicks and app installs in one product. A download-to-install period ratio does not identify which visitor installed your app. See distribution channels for what each delivery method can report.

The per-app checks also show retained install classifications, optional license evidence and the published version. Review unknown origins in the host integration. A missing paid match can mean either that paid customers have not reported or that the entitlement mapping needs correction; check the actual saved state before changing it. These checks never reconstruct earlier history.

Track your first important action

After registering your app, Track your first important action appears on the Apps page. Choose an event name and SDK, place the call after the action succeeds, publish the app, and perform that action with telemetry allowed. Check goal checks the app event catalog independently of website events. Use the dashboard’s Goals card to verify the latest completion. License and published-version steps are optional; choose Skip in the setup checklist when they don't apply, and the step shows Skipped.

Product deletion has a seven-day cancellation window. Allow at least seven days for the development product to be deleted before switching to a one-product plan.