← Preview release

events/analytics-events.md

Download

Analytics events

This file is generated. Run make events to regenerate it, and commit the result.
CI fails when it is out of date. Edit the event declarations in each service, not this file.

Every product analytics event Arcade emits, and what each of its properties carries. This is the bill of materials for a self-hosted deployment: it states, property by property, what leaves a customer's cluster.

On-premises dispositions

DispositionMeaning
allowThe value is sent verbatim.
hashThe value is replaced with a keyed digest.
denyThe value is not sent.

A hashed value is a deployment-keyed HMAC, so it groups a customer's own events together without being reversible to the original and without matching the same value from another deployment.

Arcade Cloud emits every property verbatim; dispositions apply only where the event crosses out of a customer's network.

Coverage: 55 declared events, 418 properties (300 allow, 78 hash, 40 deny).

Always-attached properties

These are not part of any one event. Middleware attaches each bundle to every event emitted while serving the surface it describes, so they reach the wire alongside whatever the event itself declares.

APIRequestContext

Is attached to every event emitted while serving an authenticated HTTP API request.

Attached by engine — declared in apps/engine/internal/usage/events/ambient.go.

PropertyTypeAlways presentOn-premises
arcade_clientstringyesallow

GatewayContext

Is attached to every event emitted while serving an MCP gateway request, so gateway-scoped reporting works without each call site having to know which gateway it is inside.

Attached by engine — declared in apps/engine/internal/usage/events/ambient.go.

PropertyTypeAlways presentOn-premises
gateway_auth_typestringyesallow
gateway_idstringyeshash
gateway_namestringyesdeny
gateway_slugstringyeshash
gateway_user_source_idstringnohash

MCPProtocolContext

Is attached to every event emitted while serving a stateless MCP request, carrying the protocol version the client declared in its headers.

Attached by engine — declared in apps/engine/internal/usage/events/ambient.go.

PropertyTypeAlways presentOn-premises
protocol_versionstringyesallow

Events

Account created

A person signed up. $set is a PostHog convention, not an ordinary property: its contents are written to the person record rather than the event.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
$setobjectyesdeny
$set.companystringnodeny
$set.created_timestampstringnodeny
$set.emailstringyesdeny
$set.namestringnodeny
$set.preferred_namestringnodeny

API called

Reports every authenticated request to the Engine's HTTP API. It is the platform's highest-volume event by an order of magnitude. The client properties come from the SDK's own headers and describe the integration, not the person using it, so they are disclosed. The caller's IP address identifies a customer's own network and is not.

Emitted by engine — declared in apps/engine/internal/usage/events/api.go.

PropertyTypeAlways presentOn-premises
arcade_clientstringyesallow
client_architecturestringyesallow
client_ipstringyesdeny
client_languagestringyesallow
client_osstringyesallow
client_runtimestringyesallow
client_runtime_versionstringyesallow
client_sdk_versionstringyesallow
duration_msnumberyesallow
end_timestampstringyesallow
engine_endpointstringyesallow
engine_hoststringyesdeny
http_methodstringyesallow
retry_countstringyesallow
start_timestampstringyesallow
status_codenumberyesallow

API key created

An API key was minted. api_key_type is set on the project-key path and arcade_client on the account path, so each is absent from the other's events.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
api_key_ksuidstringyeshash
api_key_labelstringnodeny
api_key_typestringnoallow
arcade_clientstringnoallow

capabilitygapreported

Reports an agent telling us, in prose, what it could not do. Every free-text field is the agent's or the end user's own words about their work, so none of it leaves a self-hosted cluster; the tool and client identifiers around it are what make the report countable.

Emitted by engine — declared in apps/engine/internal/usage/events/tool_recommendation.go.

PropertyTypeAlways presentOn-premises
$process_person_profilebooleanyesallow
attempted_tool_namestringyesallow
client_namestringyesallow
client_versionstringyesallow
customer_idstringnohash
mcp_sessionobjectnodeny
mcp_session.client_namestringnodeny
mcp_session.client_titlestringnodeny
mcp_session.client_versionstringnodeny
mcp_session.mcp_protocol_versionstringnodeny
mcp_session.session_idstringnodeny
model_namestringyesallow
model_versionstringyesallow
principal_typestringnoallow
project_idstringnoallow
sourcestringyesallow
tenant_idstringnoallow
tool_namestringyesallow
toolkit_namestringyesallow
toolkit_versionstringyesallow
user_goalstringyesdeny
user_quotestringyesdeny
what_blocked_youstringyesdeny

Checkout started

A customer opened a checkout session. Paired with Subscription updated, this is what makes the upgrade funnel measurable.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
amountnumbernoallow
change_directionstringyesallow
currencystringnoallow
new_plan_cadencestringnoallow
new_plan_idstringnoallow
new_plan_namestringnoallow
old_plan_cadencestringnoallow
old_plan_idstringnoallow
old_plan_namestringnoallow

Custom user verifier configured

Reports a deployment pointing user verification at its own endpoint. operation distinguishes first configuration from a change or a removal.

Emitted by engine — declared in apps/engine/internal/usage/events/admin.go.

PropertyTypeAlways presentOn-premises
operationstringyesallow

Error confirming user

Reports a failure to confirm a user mid-flow. error is relayed from the Coordinator verbatim and can embed request detail, so it stays inside the cluster.

Emitted by engine — declared in apps/engine/internal/usage/events/auth.go.

PropertyTypeAlways presentOn-premises
errorstringyesdeny
flow_idstringyeshash
user_idstringyeshash

Flow test failed

Reports a provider flow test that did not complete.

Emitted by engine — declared in apps/engine/internal/usage/events/auth.go.

PropertyTypeAlways presentOn-premises
failure_reasonstringyesallow
flow_idstringyeshash
user_idstringyeshash

Flow test started

Reports an administrator beginning a provider flow test.

Emitted by engine — declared in apps/engine/internal/usage/events/auth.go.

PropertyTypeAlways presentOn-premises
flow_idstringyeshash
user_idstringyeshash

Flow test succeeded

Reports a provider flow test that completed.

Emitted by engine — declared in apps/engine/internal/usage/events/auth.go.

PropertyTypeAlways presentOn-premises
flow_idstringyeshash
user_idstringyeshash

Gateway created

Reports a new MCP gateway being configured.

Emitted by engine — declared in apps/engine/internal/usage/events/gateway.go.

PropertyTypeAlways presentOn-premises
gateway_auth_typestringyesallow
gateway_idstringyeshash
gateway_namestringyesdeny
gateway_slugstringyeshash
user_source_idstringyeshash

Gateway deleted

Reports a gateway being removed.

Emitted by engine — declared in apps/engine/internal/usage/events/gateway.go.

PropertyTypeAlways presentOn-premises
gateway_auth_typestringyesallow
gateway_idstringyeshash
gateway_namestringyesdeny
gateway_slugstringyeshash
user_source_idstringyeshash

Gateway updated

Reports a change to an existing gateway. The previous_* properties appear only when that field actually changed, so the per-gateway timeline can distinguish a first assignment from a reassignment or an unbind without carrying a duplicate property on every update.

Emitted by engine — declared in apps/engine/internal/usage/events/gateway.go.

PropertyTypeAlways presentOn-premises
gateway_auth_typestringyesallow
gateway_idstringyeshash
gateway_namestringyesdeny
gateway_slugstringyeshash
previous_gateway_auth_typestringnoallow
previous_user_source_idstringnohash
user_source_idstringyeshash

Hook execution failed

Reports a hook that could not run. error is the raw error from customer-supplied extension code, so it stays inside the cluster.

Emitted by engine — declared in apps/engine/internal/usage/events/hooks.go.

PropertyTypeAlways presentOn-premises
errorstringyesdeny
hook_bindingstringyesallow
hook_duration_msnumberyesallow
hook_familystringyesallow
hook_phasestringyesallow
hook_prioritynumberyesallow
hook_reasonstringyesallow
hook_resultstringyesallow
hook_typestringyesallow
hook_versionnumberyesallow

Hook execution succeeded

Reports a hook that ran, whether it allowed or denied. A denial is a successful execution — hook_result is what separates them.

Emitted by engine — declared in apps/engine/internal/usage/events/hooks.go.

PropertyTypeAlways presentOn-premises
hook_bindingstringyesallow
hook_duration_msnumberyesallow
hook_familystringyesallow
hook_phasestringyesallow
hook_prioritynumberyesallow
hook_reasonstringyesallow
hook_resultstringyesallow
hook_typestringyesallow
hook_versionnumberyesallow

MCP apps listed

Reports an agent asking which applications are available.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
protocol_versionstringyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP auth challenge started

Reports a tool call that stopped to ask the caller for authorization. The tool did not run, so this is not a successful call.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
protocol_versionstringyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP capability gap report filed

Reports an agent telling us it could not find a tool for what it was trying to do.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
protocol_versionstringyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP manage auth offered

Reports authorization links being handed to an agent.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
link_countnumberyesallow
protocol_versionstringyesallow
provider_countnumberyesallow
providersarrayyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP manage auth status checked

Reports an agent reading authorization status without being offered anything to complete.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
link_countnumberyesallow
protocol_versionstringyesallow
provider_countnumberyesallow
providersarrayyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP registry suggestion created

Reports an end user filing a capability request through a gateway's Private Registry.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
protocol_versionstringyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP registry suggestion supported

Reports an end user supporting another user's capability request through a gateway's Private Registry.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
outcomestringyesallow
protocol_versionstringyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP registry suggestions listed

Reports an end user reading either the gateway's suggestion list or their own source-scoped submissions.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
protocol_versionstringyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP server discovered

Reports a client listing what a gateway offers, which is the step before it calls anything.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
protocol_versionstringyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP session started

Reports an agent completing the MCP handshake against a gateway. client_requested_protocol_version is what the client asked for, which can differ from the protocol_version that was negotiated.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_requested_protocol_versionstringyesallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
protocol_versionstringyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP tool call succeeded

Reports a tool invoked through an MCP gateway returning without a transport-level failure.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
protocol_versionstringyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP tool recommendation queried

Reports an agent asking which tools suit a task.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
protocol_versionstringyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

MCP use tool invoked

Reports an agent running a tool through the recommendation builtin rather than calling it by name.

Emitted by engine — declared in apps/engine/internal/usage/events/mcp.go.

PropertyTypeAlways presentOn-premises
client_namestringnoallow
client_supports_url_elicitationbooleannoallow
client_titlestringnoallow
client_versionstringnoallow
fully_qualified_tool_namestringnoallow
protocol_versionstringyesallow
session_idstringnohash
tool_namestringnoallow
toolkit_namestringnoallow
toolkit_versionstringnoallow
user_idstringyeshash

OAuth client registered

A client registered against Arcade's OAuth server. Dynamic Client Registration is unauthenticated, so this is a system event with no user context. The client's self-declared name and URI come from an unauthenticated request, so neither is disclosed.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
application_typestringnoallow
client_idstringyeshash
client_namestringnodeny
client_uristringnodeny
grant_typesarraynoallow
has_jwksbooleannoallow
registration_typestringyesallow
scopearraynoallow
software_idstringnoallow
software_versionstringnoallow

OAuth provider created

Reports an auth provider being configured. provider_id is the well-known provider's name, or "custom" for one Arcade does not ship.

Emitted by engine — declared in apps/engine/internal/usage/events/admin.go.

PropertyTypeAlways presentOn-premises
provider_idstringyesallow

OAuth token issued

Arcade Auth issued a token. Emitted only where a local account record exists, which is the static Arcade Auth flow. amr is the authentication methods reference from the identity provider: a bounded set of method names, not user data.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
amrarraynoallow
auth_timenumbernoallow
auth_typestringnoallow
client_idstringnohash
grant_typestringyesallow
has_refresh_tokenbooleanyesallow
scopestringnoallow
user_source_idstringnohash

Organization updated

An organization's profile changed. Everything but the identifier is what a customer chose to call themselves, so only the identifier is disclosed.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
organization_colorstringnoallow
organization_descriptionstringnodeny
organization_idstringyesallow
organization_image_urlstringnodeny
organization_namestringnodeny

Project created

A project was created. Emitted both on explicit creation and for the default project that comes with a new organization.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
project_colorstringnoallow
project_descriptionstringnodeny
project_idstringyesallow
project_image_urlstringnodeny
project_namestringnodeny

Project deleted

A project was removed.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
project_colorstringnoallow
project_descriptionstringnodeny
project_idstringyesallow
project_image_urlstringnodeny
project_namestringnodeny

Project updated

A project's profile changed.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
project_colorstringnoallow
project_descriptionstringnodeny
project_idstringyesallow
project_image_urlstringnodeny
project_namestringnodeny

Secret upserted

Reports a secret being written. It deliberately carries no properties: that a deployment manages secrets is the signal, and every attribute of one would describe the secret.

Emitted by engine — declared in apps/engine/internal/usage/events/admin.go.

PropertyTypeAlways presentOn-premises

Server added

Reports a tool server being registered. credential_mode is the joined set of credential sources an MCP server carries, which caps the property at eight values rather than the unbounded space a per-source list would produce. It is absent for HTTP servers, which always authenticate with a shared secret.

Emitted by engine — declared in apps/engine/internal/usage/events/admin.go.

PropertyTypeAlways presentOn-premises
credential_modestringnoallow
server_typestringyesallow

Server deployed

Reports a worker deployment, sized by how many toolkits it carries.

Emitted by engine — declared in apps/engine/internal/usage/events/admin.go.

PropertyTypeAlways presentOn-premises
toolkit_countnumberyesallow

Subscription updated

A customer's subscription changed.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
amountnumbernoallow
change_directionstringyesallow
currencystringnoallow
new_plan_cadencestringnoallow
new_plan_idstringnoallow
new_plan_namestringnoallow
old_plan_cadencestringnoallow
old_plan_idstringnoallow
old_plan_namestringnoallow

Tool execution failed

Reports an execution that never produced a tool response — the call to the worker itself failed. arcade_error is the raw Go error, which routinely embeds upstream URLs and request bodies, so it stays inside the cluster.

Emitted by engine — declared in apps/engine/internal/usage/events/tool_execution.go.

PropertyTypeAlways presentOn-premises
arcade_errorstringyesdeny
execution_idstringyeshash
execution_typestringyesallow
execution_type_reasonstringnoallow
fully_qualified_tool_namestringyesallow
requested_tool_versionstringyesallow
run_idstringyeshash
tool_namestringyesallow
tool_versionstringyesallow
toolkit_namestringyesallow
user_idstringnohash
worker_idstringyeshash

Tool execution succeeded

Reports a tool the Engine ran to completion. The tool itself may still have returned an error, described by the execution_error_* properties; is_execution_success is what separates the two cases. execution_error and execution_error_dev_message relay text from the upstream provider verbatim, which in practice includes customer document IDs, URLs and request bodies, so neither leaves a self-hosted cluster. The bounded execution_error_kind is what makes a failure legible without them.

Emitted by engine — declared in apps/engine/internal/usage/events/tool_execution.go.

PropertyTypeAlways presentOn-premises
execution_duration_msnumberyesallow
execution_errorstringnodeny
execution_error_dev_messagestringnodeny
execution_error_kindstringnoallow
execution_error_retry_after_msnumbernoallow
execution_idstringyeshash
execution_typestringyesallow
execution_type_reasonstringnoallow
fully_qualified_tool_namestringyesallow
is_execution_error_retryablebooleannoallow
is_execution_successbooleanyesallow
requested_tool_versionstringyesallow
run_idstringyeshash
tool_namestringyesallow
tool_versionstringyesallow
toolkit_namestringyesallow
user_idstringnohash
worker_idstringyeshash

trappslist

Reports an agent listing the applications available to it, and how many of them it is already connected to.

Emitted by engine — declared in apps/engine/internal/usage/events/tool_recommendation.go.

PropertyTypeAlways presentOn-premises
$process_person_profilebooleanyesallow
connected_apps_countnumberyesallow
customer_idstringnohash
principal_typestringnoallow
project_idstringnoallow
sourcestringyesallow
tenant_idstringnoallow
total_apps_countnumberyesallow

trsearchtools

Reports a free-text search over the tool catalog.

Emitted by engine — declared in apps/engine/internal/usage/events/tool_recommendation.go.

PropertyTypeAlways presentOn-premises
$process_person_profilebooleanyesallow
customer_idstringnohash
principal_typestringnoallow
project_idstringnoallow
results_countnumberyesallow
sourcestringyesallow
tenant_idstringnoallow
top_knumberyesallow

trselecttools

Reports a task-driven tool selection. It opens the discovery-to-execution funnel: query_id is echoed back by the tr_use_tool event that follows, which is what links the two.

Emitted by engine — declared in apps/engine/internal/usage/events/tool_recommendation.go.

PropertyTypeAlways presentOn-premises
$process_person_profilebooleanyesallow
condex_latency_msnumberyesallow
customer_idstringnohash
failed_tasksnumberyesallow
hydration_latency_msnumberyesallow
principal_typestringnoallow
project_idstringnoallow
query_idstringyeshash
results_countnumberyesallow
sourcestringyesallow
task_countnumberyesallow
tenant_idstringnoallow
top_knumberyesallow

trusetool

Reports a gateway tool execution alongside the recommendation that led to it. result_type distinguishes a tool that ran from one that stopped on an authorization challenge: a challenge returns successfully at the transport level but the tool never ran, so counting it as a success would inflate every execution rate with pending OAuth flows. toolkit and canonical_name are absent when the tool name does not parse, in which case tool_name holds the raw string rather than the event being dropped.

Emitted by engine — declared in apps/engine/internal/usage/events/tool_recommendation.go.

PropertyTypeAlways presentOn-premises
$process_person_profilebooleanyesallow
canonical_namestringnoallow
customer_idstringnohash
error_kindstringnoallow
execution_idstringnohash
invocation_pathstringyesallow
latency_msnumberyesallow
principal_typestringnoallow
project_idstringnoallow
query_idstringnohash
result_typestringyesallow
sourcestringyesallow
tenant_idstringnoallow
tool_namestringyesallow
toolkitstringnoallow

User auth checked

Reports a poll of a user's authorization status. It is by far the highest-volume auth event, since callers poll it while a flow is pending.

Emitted by engine — declared in apps/engine/internal/usage/events/auth.go.

PropertyTypeAlways presentOn-premises
provider_idstringyesallow
statusstringyesallow
user_idstringyeshash
waited_duration_snumbernoallow

User auth confirmed

Reports a user's identity being confirmed mid-flow, which is the step that binds an authorization to a specific end user.

Emitted by engine — declared in apps/engine/internal/usage/events/auth.go.

PropertyTypeAlways presentOn-premises
auth_idstringyeshash
flow_idstringyeshash
user_idstringyeshash

User auth failed

Reports an authorization flow that ended without a connection. failure_reason is a bounded set of causes, not a message from the provider.

Emitted by engine — declared in apps/engine/internal/usage/events/auth.go.

PropertyTypeAlways presentOn-premises
failure_reasonstringyesallow
flow_idstringnohash
provider_idstringyesallow
user_idstringyeshash

User auth revoked

Reports a connection being deleted, which is the only event that marks a user withdrawing access to an integration.

Emitted by engine — declared in apps/engine/internal/usage/events/auth.go.

PropertyTypeAlways presentOn-premises
provider_idstringyesallow
user_idstringyeshash

User auth started

Reports the beginning of an authorization flow for a user.

Emitted by engine — declared in apps/engine/internal/usage/events/auth.go.

PropertyTypeAlways presentOn-premises
flow_idstringyeshash
provider_idstringyesallow
scopesarrayyesallow
user_idstringyeshash

User auth succeeded

Reports an authorization flow that completed and produced a usable connection. flow_id is absent on the resume path, where a flow interrupted by a restart is picked back up and waited_duration_s reports how long that took instead.

Emitted by engine — declared in apps/engine/internal/usage/events/auth.go.

PropertyTypeAlways presentOn-premises
flow_idstringnohash
provider_idstringyesallow
user_idstringyeshash
waited_duration_snumbernoallow

User invited

Someone was invited to a project. The role is the only dimension: who was invited is on the event's identity, not its properties.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
rolestringnoallow

User Source created

A federated identity source was configured.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
issuer_domainstringnoallow
org_idstringnoallow
project_idstringnoallow
protocolstringnoallow
user_source_idstringyeshash

User Source deleted

A federated identity source was removed.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
issuer_domainstringnoallow
org_idstringnoallow
project_idstringnoallow
protocolstringnoallow
user_source_idstringyeshash

User Source updated

A federated identity source changed.

Emitted by coordinator — declared in apps/coordinator/arcade/app/usage/events/_events.py.

PropertyTypeAlways presentOn-premises
issuer_domainstringnoallow
org_idstringnoallow
project_idstringnoallow
protocolstringnoallow
user_source_idstringyeshash

Not covered here

  • PostHog SDK autocapture ($pageview, $autocapture, $web_vitals, $ai_*, $identify) is generated inside the SDK, so it has no declaration to read.
  • Marketing-site events are emitted from a separate repository and never run in a customer deployment.
  • Events from services not yet migrated to declarations. The count above is what is declared, not everything Arcade sends today.