āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā ā š shadcn/directory/clerk/clerk-docs/guides/how-clerk-works/security/clerk-telemetry ā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā
Clerk collects telemetry data from its SDKs about general product and feature usage. Participation in telemetry collection is optional and users of the product can opt-out at any time.
While we actively engage with our users and community to gather feedback and inform our product roadmap, the information collected from these efforts only represents a small subset of our users.
Collecting telemetry data gives us a clearer picture into how our SDKs, components, and authentication helpers are used for a diverse set of problems. This data provides valuable insights to help us prioritize features that are useful and impactful for as many of our users as possible.
We track general usage information about our SDKs, components, and authentication helpers from development instances only. While we collect identifiers that allows us to associate events with specific Clerk instances, we do not collect any information from your users.
Examples of data we are interested in:
<SignIn />, <SignUp />, <UserProfile />) rendered?appearance prop on our components?next version is being used along with @clerk/nextjs)[!NOTE] We regularly audit this list to ensure it is an accurate representation of the data we are collecting. To audit telemetry data sent from our SDKs yourself, you can set a
CLERK_TELEMETRY_DEBUG=1environment variable in your application. In this mode, telemetry events are only logged to the console and not sent to Clerk.
An example event looks like this:
{
event: 'COMPONENT_MOUNTED',
cv: '4.62.1',
sdk: '@clerk/nextjs',
sdkv: '4.25.6',
pk: 'pk_test_YmFsYW5jZWQtY293YmlyZC0xNi5jbGVyay5hY2NvdW50cy5kDXyk',
payload: { component: 'SignIn', appearanceProp: false },
}
event ā A unique identifier for the event type.cv ā Clerk Version. The version of the core Clerk library in use.sdk ā SDK. The Clerk SDK that is being used.sdkv ā SDK Version. The version of the Clerk SDK.pk ā Publishable Key. The instance's Publishable Key.payload ā Each unique event can provide custom data as part of the payload. As seen above, for the COMPONENT_MOUNTED event we track the component name and additional data about prop usage.We will not collect sensitive data from your application or development environment that is not directly related to your implementation of Clerk's SDKs. Notably, we will not collect: environment variables unrelated to Clerk, any information about your users, file paths, contents of files, logs, git remote information, or raw JavaScript errors.
Clerk takes data privacy and protection seriously. Telemetry data is most useful in aggregate form to gain product insights, and the raw data is only available to a small subset of Clerk employees.
We will never share with or sell telemetry data to third parties. The data is used strictly to help improve the Clerk product.
[!WARNING] Note that the variable name might differ between frameworks. See the framework specific instructions below.
For meta-framework SDKs, you can opt-out of telemetry collection by setting the environment variable:
CLERK_TELEMETRY_DISABLED=1
telemetry propIf you are using @clerk/clerk-react directly, or using an SDK that doesn't have environment variable support, you can opt out by passing the telemetry prop to <ClerkProvider>:
<ClerkProvider telemetry={false} />
<CodeBlockTabs options={["Next.js", "React", "Remix", "JavaScript", "Chrome Extension", "Expo", "Astro", "React Router", "Tanstack React Start"]}
NEXT_PUBLIC_CLERK_TELEMETRY_DISABLED=1
<ClerkProvider telemetry={false} />
CLERK_TELEMETRY_DISABLED=1
const clerk = new Clerk(publishableKey)
c.load({ telemetry: false })
<ClerkProvider telemetry={false} />
<ClerkProvider telemetry={false} />
PUBLIC_CLERK_TELEMETRY_DISABLED=1
VITE_CLERK_TELEMETRY_DISABLED=1
VITE_CLERK_TELEMETRY_DISABLED=1
</CodeBlockTabs>ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā