diff --git a/apps/web/app/(app)/FormbricksClient.tsx b/apps/web/app/(app)/FormbricksClient.tsx index 6c79e5457c..bb369934fe 100644 --- a/apps/web/app/(app)/FormbricksClient.tsx +++ b/apps/web/app/(app)/FormbricksClient.tsx @@ -5,9 +5,14 @@ import { formbricksEnabled } from "@/lib/formbricks"; import formbricks from "@formbricks/js"; import { useEffect } from "react"; +type UsageAttributesUpdaterProps = { + numSurveys: number; + totalSubmissions: number; +}; + export default function FormbricksClient({ session }) { useEffect(() => { - if (formbricksEnabled && session.user && formbricks) { + if (formbricksEnabled && session?.user && formbricks) { formbricks.init({ environmentId: env.NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID || "", apiHost: env.NEXT_PUBLIC_FORMBRICKS_API_HOST || "", @@ -22,3 +27,23 @@ export default function FormbricksClient({ session }) { }, [session]); return null; } + +export const updateUsageAttributes = (numSurveys, totalSubmissions) => { + if (!formbricksEnabled || !formbricks) return; + + if (numSurveys >= 3) { + formbricks.setAttribute("HasThreeSurveys", "true"); + } + + if (totalSubmissions >= 20) { + formbricks.setAttribute("HasTwentySubmissions", "true"); + } +}; + +export function UsageAttributesUpdater({ numSurveys, totalSubmissions }: UsageAttributesUpdaterProps) { + useEffect(() => { + updateUsageAttributes(numSurveys, totalSubmissions); + }, [numSurveys, totalSubmissions]); + + return null; +} diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/SurveyList.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/SurveyList.tsx index 0f535b5031..21d6054140 100644 --- a/apps/web/app/(app)/environments/[environmentId]/surveys/SurveyList.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/surveys/SurveyList.tsx @@ -1,3 +1,4 @@ +import { UsageAttributesUpdater } from "@/app/(app)/FormbricksClient"; import SurveyDropDownMenu from "@/app/(app)/environments/[environmentId]/surveys/SurveyDropDownMenu"; import SurveyStarter from "@/app/(app)/environments/[environmentId]/surveys/SurveyStarter"; import SurveyStatusIndicator from "@/components/shared/SurveyStatusIndicator"; @@ -16,6 +17,7 @@ export default async function SurveysList({ environmentId }: { environmentId: st const surveys: TSurveyWithAnalytics[] = await getSurveysWithAnalytics(environmentId); const environments: TEnvironment[] = await getEnvironments(product.id); const otherEnvironment = environments.find((e) => e.type !== environment.type); + const totalSubmissions = surveys.reduce((acc, survey) => acc + (survey.analytics?.numResponses || 0), 0); if (surveys.length === 0) { return ; @@ -94,6 +96,7 @@ export default async function SurveysList({ environmentId }: { environmentId: st ))} + ); }