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
))}
+
>
);
}