pixelpitch

Analytics — Pixel Pitch

How anonymous product analytics work in Pixel Pitch using TelemetryDeck.

Implementation: PixelPitch/Game/AppAnalytics.swift — all signals go through typed helpers.


Setup

Setting Value
SDK TelemetryDeck Swift SDK (Swift Package)
Init PixelPitchApp.configureTelemetry()
App ID D5F693A3-E432-4416-BCA2-DDF8E17E8C59
Signal prefix PixelPitch.
DEBUG testMode = true, 2s transmit interval, debug logging
RELEASE Live signals (no test flag)

Signals

Full event names are prefixed with PixelPitch. in the dashboard.

App lifecycle

Signal Trigger Parameters
App.launched Cold start
Splash.completed Splash dismissed method: auto | tap
Signal Trigger Parameters
Navigation.menu Main menu shown
Navigation.exhibition Exhibition picker
Navigation.league League hub
Navigation.settings Settings screen
Menu.modeSelected Main menu button tapped mode: exhibition | league | settings

Match

Signal Trigger Parameters
Match.kickOff Match starts format, difficulty, length, formation, mode; league adds playerSide, homeTeam, awayTeam
Match.finished Full time format, difficulty, homeScore, awayScore, result, mode
Match.rematch Rematch (exhibition) format, difficulty, length, formation
Match.returnToMenu Exit match mode: exhibition | league
Match.viewLeagueTable TABLE from league result

mode is exhibition or league.
result is win, loss, or draw from the human player’s perspective (correct for away league fixtures).

League

Signal Trigger Parameters
League.settingsChanged Pre-season setup changed teamCount, schedule, format, difficulty, length
League.newSeason New season started season
League.fixturePlayed League result saved season, homeScore, awayScore, result, played, total
League.seasonComplete All player fixtures done season, champion, playerPosition

Settings

Signal Trigger Parameters
Settings.legalOpened Privacy or support sheet opened document: privacy | support
Settings.linkOpened External site link tapped destination: privacy | support
Settings.leagueReset League save cleared

Dashboard workflow

Xcode / development

  1. Open dashboard.telemetrydeck.com
  2. Select Pixel Pitch
  3. Enable Test Mode (toggle above left sidebar — look for Test Data banner)
  4. Run from Xcode; wait ~2–5 seconds; refresh Recent Signals

TestFlight / App Store

  1. Turn Test Mode OFF
  2. Filter by signal name or use Overview funnels
  3. Compare Menu.modeSelected vs Match.kickOff for conversion
  4. Track League.seasonComplete / League.fixturePlayed for league engagement

Suggested funnels

  1. Activation: App.launchedSplash.completedMatch.kickOff
  2. Mode split: Menu.modeSelected (exhibition vs league)
  3. Exhibition loop: Match.kickOffMatch.finishedMatch.rematch
  4. League engagement: Navigation.leagueLeague.settingsChangedMatch.kickOff (league) → League.fixturePlayedLeague.seasonComplete
  5. Post-match league: Match.finished (league) → Match.viewLeagueTable vs Match.returnToMenu
  6. Support path: Settings.legalOpenedSettings.linkOpened

Privacy

Analytics are anonymous and documented in PRIVACY.md. No IDFA, no account IDs, no free-text user content.


App Store Privacy Nutrition Labels

See APP-STORE.md for the mapping to Apple’s questionnaire.


Adding a new signal

  1. Add a typed helper to AppAnalytics.swift
  2. Call it from the view or store where the interaction happens
  3. Document here and in PRIVACY.md if user-visible
  4. Verify in dashboard with Test Mode on

Code references