Tianji custom event tracking (auth, billing, chat) #36

Closed
opened 2026-07-27 04:18:59 -07:00 by westfarn · 0 comments
Owner

Summary

Follow-on from beta / Tianji baseline (#35): add Tianji custom event tracking for Hesychia (prod + beta), modeled on dta_webapp analytics helpers.

Baseline page views via tracker.js stay in #35. This ticket covers named product events (trackEvent / identifyUser) and call sites.


Context

Today Tracker.tsx only injects tracker.js (page views). No shared analytics.ts-style API, no identify-on-login, no funnel events for sign-up / Checkout / chat usage.

dta_webapp has:

  • utils/analytics.ts — queue + flush track / identify
  • Consent gate for custom events (page views always on)
  • Call sites for auth, checkout, onboarding, etc.

Requirements

Analytics helpers

  • Add a small Tianji client wrapper (trackEvent, identifyUser, queue-until-ready)
  • Only run on analytics environments (prod + beta builds — not local dev unless explicitly enabled)
  • Flush queued events when Tracker script loads

Events to instrument (MVP)

Minimum useful set (names can match DTA style):

  • Auth: sign-in success/fail, sign-up started/completed (#31)
  • Billing: Checkout started / returned success or cancel (#31 / #33)
  • Chat: conversation created, message sent (non-PII metadata only — no prompt text)
  • Account: ToS acknowledged, billing portal opened

Avoid sending message contents, documents, or other sensitive payloads.

Identify

  • On authenticated session, identify with stable user id (+ optional non-sensitive traits: plan tier if available)
  • Clear / stop identify appropriately on logout

Consent

  • If cookie / analytics consent banner lands first (follow-on cookie ticket), gate custom events on grant; keep automatic page views per agreed policy
  • If consent ticket not done yet: ship events behind a clear TODO / feature flag, or temporarily always-on with note that consent ticket will gate them

Tests

  • Unit tests for queue/flush and env gating
  • Mock window.tianji like dta_webapp

Acceptance criteria

  • Shared analytics helpers for Tianji custom events + identify
  • MVP events fire on prod/beta for auth, billing, and core chat actions (no PII in payloads)
  • Identify on login; no leak of prompts/docs
  • Works with separate beta vs prod Tianji website IDs from #35
  • Tests for helper behavior
  • Document event names for product/analytics use

Depends on / related

  • #35 beta builds + Tianji website IDs
  • Cookie consent follow-on (gates custom events)
  • #31 sign-up / Checkout, #33 billing portal (call sites)

References

## Summary Follow-on from beta / Tianji baseline ([#35](https://git.aimloperations.com/ai_ml_operations/chat_web_app/issues/35)): add **Tianji custom event tracking** for Hesychia (prod + beta), modeled on `dta_webapp` analytics helpers. Baseline page views via `tracker.js` stay in #35. This ticket covers **named product events** (`trackEvent` / `identifyUser`) and call sites. --- ## Context Today `Tracker.tsx` only injects `tracker.js` (page views). No shared `analytics.ts`-style API, no identify-on-login, no funnel events for sign-up / Checkout / chat usage. `dta_webapp` has: - `utils/analytics.ts` — queue + flush `track` / `identify` - Consent gate for **custom** events (page views always on) - Call sites for auth, checkout, onboarding, etc. --- ## Requirements ### Analytics helpers - Add a small Tianji client wrapper (`trackEvent`, `identifyUser`, queue-until-ready) - Only run on analytics environments (prod + beta builds — not local dev unless explicitly enabled) - Flush queued events when Tracker script loads ### Events to instrument (MVP) Minimum useful set (names can match DTA style): - Auth: sign-in success/fail, sign-up started/completed (#31) - Billing: Checkout started / returned success or cancel (#31 / #33) - Chat: conversation created, message sent (non-PII metadata only — no prompt text) - Account: ToS acknowledged, billing portal opened Avoid sending message contents, documents, or other sensitive payloads. ### Identify - On authenticated session, `identify` with stable user id (+ optional non-sensitive traits: plan tier if available) - Clear / stop identify appropriately on logout ### Consent - If cookie / analytics consent banner lands first (follow-on cookie ticket), **gate custom events** on grant; keep automatic page views per agreed policy - If consent ticket not done yet: ship events behind a clear TODO / feature flag, or temporarily always-on with note that consent ticket will gate them ### Tests - Unit tests for queue/flush and env gating - Mock `window.tianji` like `dta_webapp` --- ## Acceptance criteria - [ ] Shared analytics helpers for Tianji custom events + identify - [ ] MVP events fire on prod/beta for auth, billing, and core chat actions (no PII in payloads) - [ ] Identify on login; no leak of prompts/docs - [ ] Works with separate beta vs prod Tianji website IDs from #35 - [ ] Tests for helper behavior - [ ] Document event names for product/analytics use ## Depends on / related - #35 beta builds + Tianji website IDs - Cookie consent follow-on (gates custom events) - #31 sign-up / Checkout, #33 billing portal (call sites) ## References - `dta_webapp` `src/utils/analytics.ts`, `Tracker.tsx`, analytics tests - Ditch_The_Agent/dta_webapp#46 (consent split model)
westfarn self-assigned this 2026-07-27 04:18:59 -07:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ai_ml_operations/chat_web_app#36