mirror of
https://github.com/formbricks/formbricks.git
synced 2025-12-30 02:10:12 -06:00
39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
/* We use this telemetry service to better understand how Formbricks is being used
|
|
and how we can improve it. All data including the IP address is collected anonymously
|
|
and we cannot trace anything back to you or your customers. If you still want to
|
|
disable telemetry, set the environment variable TELEMETRY_DISABLED=1 */
|
|
import { env } from "@/lib/env";
|
|
import { logger } from "@formbricks/logger";
|
|
import { IS_PRODUCTION } from "./constants";
|
|
|
|
const crypto = require("crypto");
|
|
|
|
// We are using the hashed CRON_SECRET as the distinct identifier for the instance for telemetry.
|
|
// The hash cannot be traced back to the original value or the instance itself.
|
|
// This is to ensure that the telemetry data is anonymous but still unique to the instance.
|
|
const getTelemetryId = (): string => {
|
|
return crypto.createHash("sha256").update(env.CRON_SECRET).digest("hex");
|
|
};
|
|
|
|
export const captureTelemetry = async (eventName: string, properties = {}) => {
|
|
if (env.TELEMETRY_DISABLED !== "1" && IS_PRODUCTION) {
|
|
try {
|
|
await fetch("https://telemetry.formbricks.com/capture/", {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({
|
|
api_key: "phc_SoIFUJ8b9ufDm0YOnoOxJf6PXyuHpO7N6RztxFdZTy", // NOSONAR // This is a public API key for telemetry and not a secret
|
|
event: eventName,
|
|
properties: {
|
|
distinct_id: getTelemetryId(),
|
|
...properties,
|
|
},
|
|
timestamp: new Date().toISOString(),
|
|
}),
|
|
});
|
|
} catch (error) {
|
|
logger.error(error, "error sending telemetry");
|
|
}
|
|
}
|
|
};
|