Objective
- Instrument the client report page and related repair-list / quote flows with PostHog so product and engineering can see behavior, drop-off, and whether tutorials help.
- Support a core funnel: report page → repair list → prepare/submit quote.
- Enable event tracking, path analysis after report landing, and sampled session replays for qualitative review.
- Establish a baseline now, knowing events will need manual updates as the report UX evolves.
Background
- There is no PostHog (or similar product analytics) integration in the Attik frontend/backend repos today — this is net-new instrumentation on top of the PostHog platform work.
- The team wants analytics focused on the report experience, especially the path into repair list and quote actions.
- Examples of behaviors to capture:
- Opening or closing tutorials (
ReportExplainerModal)
- Repair-related clicks (sidebar, sections, categorization)
- Building a repair list without saving
- Where users abandon the flow
- Product questions to answer:
- Are tutorials helping?
- Where are users dropping off?
- Is the current flow too complicated?
- Expectation: instrumentation is somewhat manual and will require follow-up tickets as UI changes; still ship a useful v1 now.
Scope
Frontend — Report landing (client portal)
- Primary route:
attik-frontend/src/app/client/reports/[slug]/page.tsx — report view with ReportSectionsWithAIAssist, ReportSidebar, ClientReportWrapper, lock gating via LockedReportScreen / resolveReportPageData.
- Repair list entry from report UI:
ReportSections.tsx (repair-list feature/permission gates), RepairListSidebar.tsx (navigation to /reports/{slug}/repair-list/{id}).
Frontend — Repair list and quote flow
- Repair list pages:
attik-frontend/src/app/client/reports/[slug]/repair-list/[id]/ (page.tsx, layout.tsx, RepairListProvider.tsx, RepairListHeader.tsx).
- Categorization / request flow:
CategorizationPageClient.tsx, repair-list/[id]/request/page.tsx, request/[categoryId]/page.tsx, RequestFlowDrawer.tsx, MultiCategoryRequestClient.tsx (quote submit / “Did you submit the quote request?” steps).
- Save / share actions:
attik-frontend/src/app/client/reports/actions/saveRepairList.ts, ShareRepairListModal.tsx (request-quote-share, request-list-send API calls).
Frontend — Tutorials / explainer
ReportExplainerModal.tsx — mounted from RepairListProvider.tsx; gated by jobPortalFeatures and role permissions including repair-list.
Frontend — Analytics integration (to add)
- Decision needed: PostHog SDK placement (e.g. client portal root layout vs report-only subtree) and identity properties (company, inspection/report id, contact role,
access_token portal session).
- Decision needed: Event naming convention and whether to use PostHog autocapture vs explicit
capture() only on client components (many report surfaces are client components or dynamic imports with ssr: false).
- Funnel steps should align with real routes above, not internal-only state, so PostHog funnels match URLs users hit.
- Session replay sampling and any PII redaction rules (decision needed — report content, addresses, contact info may appear in DOM).
Backend
- No report-specific analytics endpoints found; repair-list APIs are used from the frontend (
repair-list/* via callServerAction). Backend changes are out of scope unless server-side events are required (decision needed).
PostHog configuration (outside repo)
- Funnel, paths, and replay sampling are configured in the PostHog project after events ship — document recommended dashboard setup in PR or internal doc (decision needed who owns PostHog project config).
Out of scope unless expanded
- Attik staff tools (
/tools/…) report admin surfaces.
- Mobile app.
- Full analytics coverage of AI assist modals unless explicitly prioritized in v1.
References
- PostHog docs
- Report page entry:
attik-frontend/src/app/client/reports/[slug]/page.tsx
- Repair list provider / tutorial:
attik-frontend/src/app/client/reports/components/RepairListProvider.tsx, ReportExplainerModal.tsx
- Quote request flow:
attik-frontend/src/app/client/reports/[slug]/repair-list/[id]/request/components/RequestFlowDrawer.tsx