Amplitude Setup — Brainforge Internal (2026)
Owner: Uttam Kumaran Data lead: Greg Stoutenburg Date: 2026-03-03 Status: Planning
Goal
Stand up Amplitude on the Brainforge platform and Webflow website so that Greg has a real, data-populated Amplitude instance to show prospects in sales demos. This is also a dogfood of our own Amplitude ramp-up methodology.
Primary demo outcome: pre-built Amplitude dashboards showing actual Brainforge product usage (feature adoption, user journeys, retention) that Greg can show in calls.
We also plan to use Amplitude Session Replays, Experiments, and Guides and Surveys where relevant for demos and product learning.
Surfaces
| Surface | Tech | Instrumentation path |
|---|---|---|
| Platform (The Forge) | Next.js 15 — apps/platform/ | @amplitude/analytics-browser npm package |
| Website (brainforge.ai) | Webflow | Amplitude Browser SDK via Webflow custom code (CDN snippet) |
We intentionally keep PostHog alongside Amplitude (dual-tracking by design, not an artifact of the Default project setup). No removal of existing tracking.
Phase 0 — Instance Setup (UI Only)
Who: Uttam Effort: ~half a day
Steps that require the Amplitude console UI (no agent can do these):
- Copy the Browser SDK API key from Amplitude console → Settings > Projects > API Key
- Create a second
brainforge-devAmplitude project for non-production testing - Configure data governance: block PII fields; raw email must not appear in event properties (user property only)
- Add
NEXT_PUBLIC_AMPLITUDE_API_KEYto Railway production environment
Phase 1 — Define Event Taxonomy
Who: Cloud agent creates draft; Greg reviews Effort: ~1–2 days
Cloud agent creates knowledge/clients/brainforge/resources/amplitude-event-taxonomy.md. The user properties below are inlined from Greg’s Default Event Tracking Plan (same source as the Google Sheet); adapt for Brainforge (Supabase auth, no workspace/org hierarchy) when implementing.
User Properties (from Default Event Tracking Plan)
Group properties (org-level; map to Brainforge only where we have org/tenant concepts):
| Property | Definition | Data type | Sample values |
|---|---|---|---|
plan | Plan tier an organization belongs to | String | free, pro, enterprise |
company_size | Employee count range of user organization | String | 1-10, 11-50, 51-200, 201-1000, 1000+ |
org_region | Geographical region of organization | String | — |
workspace_id | Workspace IDs associated with the org | String | — |
User properties (implement where we have a source in Supabase or app):
| Property | Definition | Data type | Sample values |
|---|---|---|---|
internal_user | User is internal (e.g. Brainforge team) or not a normal user | String | true, false |
organization_name | Company name | String | — |
organization_id | Company id | String | — |
workspace_id | Workspace(s) user is associated with | String | — (user can be in multiple) |
user_id | User unique identifier | String | Supabase auth UID (primary identity) |
acquisition_channel | Channel that brought user to the platform | String | organic, invited, paid, referral |
username | Username | String | — |
utm_source | UTM source captured at signup | String | google, linkedin, partner_blog |
utm_medium | UTM medium captured at signup | String | cpc, organic, referral, email |
utm_campaign | UTM campaign captured at signup | String | spring_launch, webinar_q1 |
referring_domain | Domain the user came from at first visit | String | google.com, linkedin.com |
signup_method | Method used to create account | String | email, google_sso, saml |
first_name | User first name | String | — |
last_name | User last name | String | — |
email | User email address (user property only — never in event properties) | String | — |
country | User country | String | US, UK, DE |
city | User city | String | — |
user_created_at | Timestamp for when user was created | Date | — |
is_email_verified | Whether the user has verified their email | Boolean | true, false |
industry_name | Progressive profiling | String | SaaS, FinTech, Healthcare |
user_job_role | User job role or title | String | RevOps Manager, Sales Lead, Admin |
subscription_status | Status of user’s subscription | String | trial, active, churned, expired |
For Brainforge platform today: prioritize user_id, email, name (or first_name/last_name), role from Supabase auth; add UTM/acquisition/signup_method when we capture at signup; add others as we have sources.
Page View Events (carried forward from PostHog)
| Event Name | Trigger | Key Properties |
|---|---|---|
Page Viewed | Every route change | path, referrer |
Client Hub Viewed | /client/[id] | client_id |
Meeting Viewed | /meeting/[id] | meeting_id |
Demo Viewed | /public/meeting/[id] | meeting_id |
AI Tool Viewed | /ai-tools/* | tool_name, path |
Deals Page Viewed | /deals | — |
Deck Viewed | /decks/* | deck_id, deck_name |
Feature Events (new)
| Event Name | Trigger | Key Properties | Demo question answered |
|---|---|---|---|
User Signed In | Auth sign-in | provider | Session volume, retention baseline |
User Signed Out | Auth sign-out | — | Session length signal |
AI Agent Ran | /agent/[id] interaction | agent_id, agent_type, success | AI adoption rate |
Case Study Viewed | /internal/marketing-assets | asset_id, asset_name | Marketing asset ROI |
Search Performed | /internal/zoom-search | query_length, source | Power user behavior |
Linear Ticket Agent Used | /ai-tools/standalone-linear-tickets-agent | — | Specific AI tool adoption |
Naming Conventions
- Event names: Title Case with spaces (e.g.
Page Viewed, notpage_viewed) - Properties:
snake_case - No PII in event properties; user-level data in user properties only
Phase 2 — Instrument Platform + Website
Who: Cloud agent (platform); Uttam pastes snippet (Webflow) Effort: ~2 days
New files (mirror existing PostHog pattern)
apps/platform/src/lib/analytics/amplitudeClient.ts
apps/platform/src/components/analytics/AmplitudeProvider.tsx
apps/platform/src/components/analytics/AmplitudeRouteTracker.tsx
Modified files
| File | Change |
|---|---|
apps/platform/src/app/layout.tsx | Add <AmplitudeProvider> and <AmplitudeRouteTracker> alongside PostHog |
apps/platform/src/contexts/AuthContext.tsx | Add amplitude.setUserId() + amplitude.identify() on sign-in; amplitude.reset() on sign-out |
apps/platform/.env.example | Add NEXT_PUBLIC_AMPLITUDE_API_KEY=your_amplitude_api_key_here |
Package
# run in apps/platform/
npm install @amplitude/analytics-browserWebflow (UI required to paste)
Cloud agent produces a <script> block using the Amplitude Browser SDK CDN.
Paste into: Webflow > Site Settings > Custom Code > Head Code.
Phase 3 — Validate
Who: Cloud agent creates checklist; Uttam/Greg runs QA in Amplitude UI Effort: ~1 day
Cloud agent creates knowledge/clients/brainforge/resources/amplitude-validation-checklist.md.
UI QA steps:
- Open Amplitude > Data > Live Events — confirm events arrive within 30s of triggering
- Trigger sign-in — verify
User Signed Infires + user properties populate - Navigate 3–4 routes — verify
Page Viewedfires with correctpath - Confirm no raw email in event properties
- Confirm Webflow page views appear in the same project
Phase 4 — Operationalize for Demos
Who: Greg (Amplitude UI for dashboards); Cloud agent (docs updates) Effort: ~1–2 days for dashboards; ~half day for docs
Demo Dashboards (Greg builds in Amplitude)
| Dashboard | What it shows |
|---|---|
| Acquisition Funnel | Page Viewed → User Signed In → first AI Tool Viewed |
| Feature Adoption | AI Agent Ran, Meeting Viewed, Deck Viewed over time |
| Retention Curve | Weekly cohort retention from User Signed In |
| Top Pages | Page Viewed broken down by path |
| Power Users | Cohort: users with 5+ AI Agent Ran or Meeting Viewed events |
Cloud Agent Tasks
- Update
standards/02-writing/Memos/examples/amplitude-ramp-up-memo.mdwith dogfooding addendum - Create
standards/03-knowledge/engineering/setup/amplitude-setup.md
UI-Only Steps (Summary)
| Step | Where | Who |
|---|---|---|
| Get API key | Amplitude console | Uttam |
| Create dev project | Amplitude console | Uttam |
| Configure PII governance | Amplitude console | Uttam |
| Add env var to Railway | Railway dashboard | Uttam |
| Paste Webflow snippet | Webflow editor | Uttam |
| QA events in Live Events | Amplitude console | Uttam / Greg |
| Build demo dashboards | Amplitude chart builder | Greg |
Linear Tickets
Phase 0
Amplitude: instance setup + API keys (UI)— Uttam
Phase 1
Amplitude: draft Brainforge event taxonomy— cloud agentAmplitude: Greg signs off on taxonomy + demo requirements— Greg
Phase 2
Amplitude: install SDK + create amplitudeClient.ts abstraction— cloud agentAmplitude: wire user identification into AuthContext— cloud agentAmplitude: instrument platform routes + key feature events— cloud agentAmplitude: generate Webflow snippet— cloud agent → Uttam pastes
Phase 3
Amplitude: create validation checklist— cloud agentAmplitude: QA events in Amplitude UI— Uttam / Greg
Phase 4
Amplitude: build demo dashboards— GregAmplitude: update ramp-up memo with dogfooding notes— cloud agentAmplitude: add setup guide to playbook— cloud agent