Journey Events

Event envelope, funnel definitions, taxonomy, and PostHog properties

Event envelope

All new journey events use version 1 and a strict envelope:

{
  eventId: string;          // UUID and PostHog deduplication key
  eventType: string;
  eventVersion: 1;
  source: string;           // auth, z-agent, zlink, ...
  surface?: string;
  environment?: string;
  occurredAt: string;       // ISO timestamp
  eventData?: object;       // sanitized metadata only
  userSessionId?: string;
  posthogDistinctId?: string;
  posthogSessionId?: string;
  entityId?: string;
}

Unknown top-level properties are rejected and the serialized payload is limited to 16 KiB.

Executive funnel

Stats labelEvent type
Z-Link openedZLINK_VIEW or z_agent_zlink_page_view
Signup startedauth_signup_started, with auth_signup_submitted and z_agent_onboarding_signin_clicked as reliable rollup signals
Signup completedauth_signup_completed
Onboarding completedz_agent_onboarding_building_completed
Agent createdz_agent_agent_created
Link copiedz_agent_dashboard_link_copy_succeeded
New contactz_agent_conversation_external_created
Offer receivedz_agent_offer_received

Counts are distinct journeys, not raw event totals. Conversion is measured against the first funnel step.

Website (zooly.ai)

A visit to zooly.ai and what the person does next in the app is one journey. The session id lives in a cookie shared by every zooly.ai subdomain, so a visitor who reads the agent page and then opens onboarding on app.zooly.ai keeps the same session. Locally the website (port 3005) and the app (port 3004) share it the same way.

  • website_page_view — every page, with the page and its locale
  • website_page_leave — when the page is left, with how long the visit lasted, so a real visit reads as a session with a length rather than a single instant
  • website_cta_clicked — any link or button on the website, with which control it was and where it leads (internal, app, auth, external, mailto, or button). A click into the app is what joins the website visit to the onboarding that follows.
  • website_login_clicked / website_login_completed — the navbar Login
  • website_contact_submitted / website_contact_failed — the contact page form and the contact dialog

UTM tags on the landing URL are attached to the website events. The app's first events show zooly.ai as the referrer.

Website events carry the id of the visit's PostHog recording, the same way app events do. That is what lets Sessions open the replay of a marketing visit, so a website visit with a recording is no longer hidden by the recorded-session filter.

Authentication

  • auth_signup_started
  • auth_signup_submitted
  • auth_signup_completed
  • auth_signup_failed
  • auth_confirm_completed
  • auth_confirm_failed
  • auth_login_started
  • auth_login_completed
  • auth_login_failed
  • auth_social_login_completed
  • auth_social_login_failed
  • auth_logout

Use auth_method, result, and safe error_code metadata for breakdowns. Do not send email addresses, confirmation codes, or auth tokens in event metadata. Verified email is now deliberately allowed through the separate person-identity path; codes and tokens remain prohibited there too.

Onboarding

  • Entry: z_agent_onboarding_view, z_agent_onboarding_started, z_agent_onboarding_resumed
  • Steps: z_agent_onboarding_step_view, z_agent_onboarding_step_skipped
  • Choices: z_agent_onboarding_service_selected, z_agent_onboarding_focus_selected
  • Research: z_agent_onboarding_research_started, ..._completed, ..._partial, ..._failed
  • Profile: z_agent_onboarding_links_submitted, ..._profile_confirmed, ..._photo_uploaded
  • Every onboarding event carries flow: default (/onboarding), talent, brand or agency (/onboarding/talent, /onboarding/brand, /onboarding/agency).
  • Talent interview (flow: "talent"): z_agent_onboarding_name_submitted, ..._confirm_choice, ..._pref_submitted, ..._talent_completed (now logged right before the talent dashboard opens)
  • Auth bridge: z_agent_onboarding_signin_clicked, ..._signin_completed
  • Build: z_agent_onboarding_agent_create_started, ..._agent_created, ..._agent_create_failed
  • Exit: z_agent_onboarding_building_completed, ..._dashboard_opened, ..._copy_link_clicked, ..._abandoned

Use onboarding_step for step breakdowns. The signup funnel events come from Auth; onboarding sign-in events describe the App-side transition around the Auth modal.

Z-Link events include page view, conversation selection/creation, sign-in click, profile click, and received messages. Conversation events distinguish internal and external conversations. Dashboard events cover page views, agent selection, conversation/Offer/Agreement actions, simulation, admin tabs, filters, and link-copy success/failure.

Agents, Offers, and Agreements

  • Agents: z_agent_agent_created, z_agent_agent_create_failed, z_agent_agent_updated
  • Offers: z_agent_offer_created, ..._received, ..._sent, ..._approved, ..._rejected, ..._completed
  • Agreements: z_agent_agreement_generated, z_agent_agreement_failed

Email telemetry

z_agent_email_queued, ..._sent, ..._delivered, ..._bounced, ..._failed, and ..._skipped are operational events. They remain in journey_event but are intentionally suppressed from PostHog to prevent high-volume email noise.

Enriched PostHog properties

The server adds these normalized properties where available:

  • journey_stage, source, surface, normalized path, environment
  • auth_method, onboarding_step, result, duration_ms, error_code
  • acquisition UTMs and referrer domain
  • user_session_id, $session_id, $insert_id, journey_event_id
  • account_id, account_slug, actor_account_id
  • target_account_id, target_account_slug
  • agency_ids, agency_slugs, $groups
  • domain IDs such as agent, room, and Offer ID

See Privacy and Security for fields that must never be included.