{
  "schema_version": 1,
  "description": "Event contract for the 'Getting started with Claude Code' guide page. The relay re-enforces this server-side: any property not listed here, or sent on an event it does not belong to, is dropped before anything is forwarded.",
  "allowed_events": [
    "guide_opened",
    "step_completed",
    "outbound_click"
  ],
  "allowed_properties": {
    "schema_version": {
      "type": "integer",
      "const": 1
    },
    "surface": {
      "type": "enum",
      "events": ["guide_opened"],
      "values": [
        "desktop",
        "mobile"
      ]
    },
    "step": {
      "type": "enum",
      "events": ["step_completed"],
      "values": [
        "settings",
        "github",
        "jira",
        "repo",
        "extend"
      ]
    },
    "steps_completed": {
      "type": "integer",
      "events": ["step_completed"],
      "min": 1,
      "max": 5,
      "note": "5 means the reader has finished the guide"
    },
    "duration_bucket": {
      "type": "enum",
      "events": ["step_completed"],
      "values": [
        "lt_1m",
        "1m_to_5m",
        "5m_to_15m",
        "15m_to_1h",
        "gte_1h"
      ]
    },
    "target": {
      "type": "enum",
      "events": ["outbound_click"],
      "values": [
        "claude-code-access",
        "claude-code-overview",
        "ai-tiger-team",
        "payments-kernel-ai-agents",
        "skills-directory",
        "claude-dev-kit",
        "claude-docs",
        "tam"
      ]
    }
  },
  "identity": {
    "distinct_id": "random UUID (visitor_id) generated in memory on each page load and never stored on the device; it groups the events of one visit and is gone on reload"
  },
  "never_collected": [
    "names, emails, usernames, employee or network IDs",
    "any identifier stored on the device",
    "IP address (never read, forwarded or stored by the relay; the hosting provider processes it to serve requests)",
    "geolocation (PostHog geoip explicitly disabled)",
    "referrer URLs, query strings, page URLs beyond this one page",
    "prompts, responses, code, repo names, ticket keys",
    "anything typed into the page"
  ]
}
