diff --git a/.env.example b/.env.example
index fa1fc1b..c940c30 100644
--- a/.env.example
+++ b/.env.example
@@ -16,6 +16,11 @@ S3_REGION="eu-central"
NEXT_PUBLIC_TURNSTILE_SITE_KEY=""
TURNSTILE_SECRET_KEY=""
+# Яндекс.Метрика — ID счётчика school.second-brain.ru (цели signup_free/gate_view).
+# Build-time (NEXT_PUBLIC_*) — передавать через --build-arg при сборке. Сам счётчик
+# (ym init snippet) ставится в admin → Settings → headCode, отдельно от этого ID.
+NEXT_PUBLIC_METRIKA_COUNTER_ID=""
+
# Kinescope API
KINESCOPE_API_KEY=""
diff --git a/src/app/(auth)/register/register-form.tsx b/src/app/(auth)/register/register-form.tsx
index 45a2fce..d444aff 100644
--- a/src/app/(auth)/register/register-form.tsx
+++ b/src/app/(auth)/register/register-form.tsx
@@ -5,6 +5,7 @@ import Link from "next/link";
declare global {
interface Window {
+ ym?: (counterId: number, action: string, goal: string) => void;
turnstile?: {
render: (
container: HTMLElement,
@@ -161,6 +162,11 @@ export function RegisterForm({ showTermsCheckbox, privacyPolicyUrl, termsUrl, of
return;
}
+ // Яндекс.Метрика: цель «бесплатная регистрация»
+ const mc = Number(process.env.NEXT_PUBLIC_METRIKA_COUNTER_ID);
+ if (mc && typeof window !== "undefined" && typeof window.ym === "function") {
+ window.ym(mc, "reachGoal", "signup_free");
+ }
setSuccess(true);
setLoading(false);
}
diff --git a/src/components/student/gate-view-tracker.tsx b/src/components/student/gate-view-tracker.tsx
new file mode 100644
index 0000000..9d30b18
--- /dev/null
+++ b/src/components/student/gate-view-tracker.tsx
@@ -0,0 +1,20 @@
+"use client";
+
+import { useEffect } from "react";
+
+declare global {
+ interface Window {
+ ym?: (counterId: number, action: string, goal: string) => void;
+ }
+}
+
+// Фиксирует показ gate-лестницы в Яндекс.Метрике (цель gate_view).
+export function GateViewTracker() {
+ useEffect(() => {
+ const c = Number(process.env.NEXT_PUBLIC_METRIKA_COUNTER_ID);
+ if (c && typeof window !== "undefined" && typeof window.ym === "function") {
+ window.ym(c, "reachGoal", "gate_view");
+ }
+ }, []);
+ return null;
+}
diff --git a/src/components/student/tripwire-gate-banner.tsx b/src/components/student/tripwire-gate-banner.tsx
index 61298f5..2cbd627 100644
--- a/src/components/student/tripwire-gate-banner.tsx
+++ b/src/components/student/tripwire-gate-banner.tsx
@@ -2,6 +2,8 @@
// основной — трипвайр «Второй мозг для предпринимателя», вторичный — полный курс.
// Server component, ДС-2 (Aubade).
+import { GateViewTracker } from "./gate-view-tracker";
+
const TRIPWIRE_URL = "https://second-brain.ru/entrepreneur";
const FULL_COURSE_URL = "https://obsidian.second-brain.ru/";
@@ -11,6 +13,7 @@ export function TripwireGateBanner() {
className="card-aubade p-6 mt-10"
style={{ background: "var(--accent)", boxShadow: "4px 4px 0 0 var(--foreground)" }}
>
+