> ## Documentation Index
> Fetch the complete documentation index at: https://docs-stg.outerlayer.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Usage analytics

> The usage events OuterLayer sends to PostHog, the properties each one carries, and what is never sent.

OuterLayer measures how people use the dashboard. It does this with PostHog, a product analytics service. This page lists every usage event sent today.

The CLI sends no telemetry. For the session data that `outerlayer sync` uploads, see [What leaves your machine](https://docs-stg.outerlayer.ai/what-leaves-your-machine.md).

## Where events go

Events go to PostHog in the United States. PostHog is a subprocessor. The Privacy Policy on outerlayer.ai lists it.

Events come from two places:

* **The dashboard in your browser.** It starts PostHog only after you sign in.
* **OuterLayer servers.** They send three events when an organization reaches a setup milestone.

## How PostHog identifies you

PostHog knows a person by user id. It never receives your email or name. Dashboard sessions are never recorded. Session recording is off in code, so a PostHog project setting cannot turn it on.

PostHog also groups events by organization. The group has the organization id and the organization name.

## Events from the dashboard

| Event | When it is sent | Properties |
| - | - | - |
| `$pageview` | You open a page. Platform admin pages are not recorded. | `page_path`, `tenant_id` |
| `$pageleave` | You leave a page. PostHog sends it. | PostHog's standard page properties |
| `onboarding_banner_viewed` | The banner that asks you to connect a repository is shown. | None |
| `onboarding_checklist_step_clicked` | You select a step of the getting-started checklist. | `step` |
| `onboarding_checklist_dismissed` | You dismiss the checklist. | `done`, `total` |
| `onboarding_checklist_collapsed` | You collapse the checklist. | `done`, `total` |
| `onboarding_checklist_expanded` | You expand the checklist. | `done`, `total` |
| `onboarding_repo_provider_selected` | You start the GitHub connect flow. | `surface`, `provider` |
| `onboarding_repo_connect_opened` | You open the connect-repository step. | `surface` |
| `onboarding_repo_link_opened` | You open the link-repository dialog. | `surface` |
| `onboarding_panel_copied` | You copy a command or prompt from the setup panel. | `what` |
| `onboarding_panel_key_minted` | You create an API key in the setup panel. | `surface` |
| `onboarding_panel_repo_linked` | You link a repository in the setup panel. | `surface` |

The properties have these values:

* `page_path` is the path with each dynamic segment replaced by its name, such as `/orgs/[orgName]/factories`. The organization and factory names are not sent.
* `tenant_id` is the organization id.
* `step` is one of `app`, `repo`, `trace` or `teammate`.
* `done` and `total` are the number of finished steps and the number of steps.
* `surface` is `setup-panel` or `banner`.
* `provider` is `github`.
* `what` is `setup` or `agent-prompt`. The copied text is not sent.

PostHog adds its own standard properties to each event, such as the browser, the operating system and the screen size. The dashboard removes every property that holds a page address, a path or a referrer, such as `$current_url`, `$pathname` and `$referrer`. Those values contain organization and factory names. The only page location an event carries is `page_path` on `$pageview`.

## Events from OuterLayer servers

| Event | When it is sent | Properties |
| - | - | - |
| `org_provisioned` | An organization is created. | `organization_name`, `tenant_id` |
| `org_repo_connected` | A GitHub repository is connected. | `provider`, `app_id`, `tenant_id` |
| `org_api_key_created` | An API key is created. | `app_id`, `tenant_id` |

`app_id` is the factory id. The first two events belong to the person who acted, by user id. `org_api_key_created` belongs to the organization, not to a person.

## What is never sent

* Your email address or name.
* Session content, such as prompts, transcripts, tool output, code and file paths.
* API keys and other secrets.
* Text you type, and the text of anything you copy.
* Organization or factory names in page views.

## Browser storage

PostHog keeps its state in memory for the page you are on. It writes no cookie and no local storage, so the dashboard shows no consent banner for analytics.

The dashboard stores these items in your browser:

* Sign-in cookies, which you need to stay signed in.
* Your color theme, in local storage.
* Two local storage keys per factory for the getting-started checklist: `agentmark:onboarding-checklist-dismissed:<factory id>` and `agentmark:onboarding-checklist-collapsed:<factory id>`.
* A short-lived session storage entry that stops the dashboard from reloading in a loop after a new version ships.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.