Impulse AI Docs
Intern dokumentasjon
Hopp til innhold

Analytics — TelemetryDeck

Komplett spesifikasjon av analytics-oppsettet i TelemetryDeck for im-ios.

┌──────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ iOS App │────▶│ TelemetryDeck │────▶│ 6 Dashboards │
│ Analytics.swift │ (anonymisert) │ │ 32 Insights │
└──────────────┘ └──────────────────┘ └─────────────────┘
  • SDK: TelemetryDeck Swift SDK 2.11.0
  • App ID: CE8DB336-B6B9-4B6A-A725-915EE4B2E24F
  • GDPR: Ingen consent nødvendig — dobbel-hashing anonymisering på device
  • Test Mode: #if DEBUGconfig.testMode = true
  • Kilde: iosApp/Services/Analytics.swift

Signal-katalog

heading.anchorLabel

23 signaltyper fordelt på 7 kategorier.

SignalParametereTriggerFrekvens
app.launchedApp init (kaldstart)1/dag
app.foregroundScenePhase → .active1-3/dag

Conversion Funnel

heading.anchorLabel
SignalParametereTriggerFrekvens
onboarding.completedpersonalized: BoolOnboarding ferdig1x totalt
onboarding.skippedBruker hopper over1x totalt
impulse.capturedclassification: contraction/expansion, source: direct/checkin/parentImpulse opprettet0-5/dag
session.startedclassification: contraction/expansionSession opprettet0-3/dag
session.stepCompletedclassification, step: 1-4Steg fullført (forrige steg)0-12/dag
session.completedclassification, durationSeconds: IntSession fullført0-3/dag
session.abandonedclassification, lastStep: IntSession forlatt0-3/dag
checkin.completedoutcome: positive/contraction/expansionSjekk-inn vurdert0-3/dag
checkin.convertedclassification: contraction/expansionSjekk-inn → impulse0-2/dag
SignalParametereTriggerFrekvens
paywall.showntrigger: quotaPaywall vises0-2/dag
paywall.dismissedtrigger: quotaPaywall lukkes0-2/dag
purchase.completedtier: impulse/pro, fromTrial: BoolKjøp godkjent1x totalt
purchase.failedtier, errorType: verification_failed/etcKjøp feiletSjelden
trial.startedOnboarding fullført1x totalt
trial.expiredTrial utløpt uten kjøp1x totalt
SignalParametereTriggerFrekvens
insights.viewedproduct: insight/areas/layers/transformations/flowInsight-card synlig1-5/dag
insight.feedbackproduct: narrative/areas/layers/transformations, signal: up/downThumbs up/down på innsiktskort0-4/dag
journey.searchedSøk i Journey0-2/dag
feedback.submittedhasRating: BoolFeedback sendtSjelden
SignalParametereTriggerFrekvens
error.ai_workloadworkloadType: guidance/summary/classification, step: Int?AI-kall feiletSjelden
error.classification_rejectedAI avviste impulseSjelden
SignalParametereTriggerFrekvens
navigationPathChangedTab name: Home/Insights/Journey/ProfileTab-bytte3-10/dag

Signal-budsjett

heading.anchorLabel
MetrikkVerdi
Estimert per aktiv bruker/dag~5-8 signaler
Estimert per aktiv bruker/mnd~150-240 signaler
Free tier (100K/mnd)~450 MAU
Paid tier (1M/mnd)~4 500 MAU

Dashboard 1: Retention & Growth

heading.anchorLabel

4 insights — forstå brukerbase og retensjon.

1.1 DAU (Daily Active Users)

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typeapp.foreground
CountingCount Users
GranularityDay
Chart TypeLine Chart
Show ExpandedJa

1.2 WAU (Weekly Active Users)

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typeapp.foreground
CountingCount Users
GranularityWeek
Chart TypeLine Chart

1.3 MAU (Monthly Active Users)

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typeapp.foreground
CountingCount Users
GranularityMonth
Chart TypeLine Chart

1.4 New Users (First Launch)

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typeapp.launched
CountingCount Users
GranularityDay
Chart TypeBar Chart

Dashboard 2: Conversion Funnel

heading.anchorLabel

5 insights — konvertering fra onboarding til session completion.

2.1 Primary Conversion Funnel

heading.anchorLabel
FeltVerdi
Query TypeFunnel
Chart TypeFunnel
Show ExpandedJa

Steps:

#StepSignal
1App Launchedapp.launched
2Onboarding Completeonboarding.completed
3First Impulseimpulse.captured
4Session Startedsession.started
5Session Completedsession.completed
TQL
{
"queryType": "funnel",
"dataSource": "telemetry-signals",
"granularity": "all",
"steps": [
{"name": "App Launched", "filter": {"type": "selector", "dimension": "type", "value": "app.launched"}},
{"name": "Onboarding Complete", "filter": {"type": "selector", "dimension": "type", "value": "onboarding.completed"}},
{"name": "First Impulse", "filter": {"type": "selector", "dimension": "type", "value": "impulse.captured"}},
{"name": "Session Started", "filter": {"type": "selector", "dimension": "type", "value": "session.started"}},
{"name": "Session Completed", "filter": {"type": "selector", "dimension": "type", "value": "session.completed"}}
]
}

2.2 Check-in → Impulse Funnel

heading.anchorLabel
FeltVerdi
Query TypeFunnel
Chart TypeFunnel

Steps:

#StepSignal
1Check-in Donecheckin.completed
2Convertedcheckin.converted
3Session Startedsession.started
4Session Completedsession.completed
TQL
{
"queryType": "funnel",
"dataSource": "telemetry-signals",
"granularity": "all",
"steps": [
{"name": "Check-in Done", "filter": {"type": "selector", "dimension": "type", "value": "checkin.completed"}},
{"name": "Converted", "filter": {"type": "selector", "dimension": "type", "value": "checkin.converted"}},
{"name": "Session Started", "filter": {"type": "selector", "dimension": "type", "value": "session.started"}},
{"name": "Session Completed", "filter": {"type": "selector", "dimension": "type", "value": "session.completed"}}
]
}

2.3 Onboarding: Complete vs Skip

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Type(tom)
FilterOR: onboarding.completed, onboarding.skipped
CountingCount Signals
Top N Dimensiontype
Chart TypeDonut

2.4 Impulse Capture Sources

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Typeimpulse.captured
CountingCount Signals
Top N Dimensionsource
Chart TypeDonut

2.5 Check-in Outcomes

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Typecheckin.completed
CountingCount Signals
Top N Dimensionoutcome
Chart TypeDonut

Dashboard 3: Monetization

heading.anchorLabel

6 insights — trial-konvertering, revenue og churn.

3.1 Trial → Purchase Funnel

heading.anchorLabel
FeltVerdi
Query TypeFunnel
Chart TypeFunnel

Steps:

#StepSignal
1Trial Startedtrial.started
2Paywall Shownpaywall.shown
3Purchase Completedpurchase.completed
TQL
{
"queryType": "funnel",
"dataSource": "telemetry-signals",
"granularity": "all",
"steps": [
{"name": "Trial Started", "filter": {"type": "selector", "dimension": "type", "value": "trial.started"}},
{"name": "Paywall Shown", "filter": {"type": "selector", "dimension": "type", "value": "paywall.shown"}},
{"name": "Purchase Completed", "filter": {"type": "selector", "dimension": "type", "value": "purchase.completed"}}
]
}

3.2 Paywall: Shown → Converted

heading.anchorLabel
FeltVerdi
Query TypeFunnel
Chart TypeFunnel

Steps:

#StepSignal
1Paywall Shownpaywall.shown
2Purchase Completedpurchase.completed
TQL
{
"queryType": "funnel",
"dataSource": "telemetry-signals",
"granularity": "all",
"steps": [
{"name": "Paywall Shown", "filter": {"type": "selector", "dimension": "type", "value": "paywall.shown"}},
{"name": "Purchase Completed", "filter": {"type": "selector", "dimension": "type", "value": "purchase.completed"}}
]
}

3.3 Purchases Over Time

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typepurchase.completed
CountingCount Users
GranularityWeek
Chart TypeBar Chart

3.4 Purchases by Tier

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Typepurchase.completed
CountingCount Signals
Top N Dimensiontier
Chart TypeDonut

3.5 Trial Expirations (Churned)

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typetrial.expired
CountingCount Users
GranularityWeek
Chart TypeBar Chart

3.6 Purchase Failures by Type

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Typepurchase.failed
CountingCount Signals
Top N DimensionerrorType
Chart TypeBar Chart

Dashboard 4: Engagement

heading.anchorLabel

6 insights — session-helse, insights-bruk, og aktivitetsmiks.

4.1 Session Step-by-Step Funnel

heading.anchorLabel
FeltVerdi
Query TypeAdvanced Query (TQL)
Chart TypeFunnel
Show ExpandedJa

Steps:

#StepSignalParameter-filter
1Startedsession.started
2Step 1session.stepCompletedstep = 1
3Step 2session.stepCompletedstep = 2
4Step 3session.stepCompletedstep = 3
5Step 4session.stepCompletedstep = 4
6Completedsession.completed

Krever compound filters per steg — bruk TQL:

{
"queryType": "funnel",
"dataSource": "telemetry-signals",
"granularity": "all",
"steps": [
{"name": "Started", "filter": {"type": "selector", "dimension": "type", "value": "session.started"}},
{"name": "Step 1", "filter": {"type": "and", "fields": [
{"type": "selector", "dimension": "type", "value": "session.stepCompleted"},
{"type": "selector", "dimension": "step", "value": "1"}
]}},
{"name": "Step 2", "filter": {"type": "and", "fields": [
{"type": "selector", "dimension": "type", "value": "session.stepCompleted"},
{"type": "selector", "dimension": "step", "value": "2"}
]}},
{"name": "Step 3", "filter": {"type": "and", "fields": [
{"type": "selector", "dimension": "type", "value": "session.stepCompleted"},
{"type": "selector", "dimension": "step", "value": "3"}
]}},
{"name": "Step 4", "filter": {"type": "and", "fields": [
{"type": "selector", "dimension": "type", "value": "session.stepCompleted"},
{"type": "selector", "dimension": "step", "value": "4"}
]}},
{"name": "Completed", "filter": {"type": "selector", "dimension": "type", "value": "session.completed"}}
]
}

4.2 Completion: Contraction vs Expansion

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Typesession.completed
CountingCount Signals
Top N Dimensionclassification
Chart TypeDonut

4.3 Session Drop-off: Last Step Before Abandon

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Typesession.abandoned
CountingCount Signals
Top N DimensionlastStep
Chart TypeBar Chart

4.4 Insights: Which Products Get Viewed

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Typeinsights.viewed
CountingCount Signals
Top N Dimensionproduct
Chart TypeBar Chart

4.5 Insights Views Over Time

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typeinsights.viewed
CountingCount Users
GranularityWeek
Chart TypeLine Chart

4.6 Daily Activity Mix

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Type(tom)
FilterOR: impulse.captured, session.started, checkin.completed
CountingCount Signals
GranularityDay
Top N Dimensiontype
Chart TypeBar Chart

Dashboard 5: Errors & Friction

heading.anchorLabel

3 insights — oppdage tekniske problemer som blokkerer brukere.

5.1 AI Errors Over Time

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typeerror.ai_workload
CountingCount Signals
GranularityDay
Chart TypeBar Chart
Show ExpandedJa

5.2 AI Errors: Which Workloads Fail

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Typeerror.ai_workload
CountingCount Signals
Top N DimensionworkloadType
Chart TypeDonut

5.3 Classification Rejections

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typeerror.classification_rejected
CountingCount Signals
GranularityWeek
Chart TypeBar Chart

Dashboard 6: AI Product Quality

heading.anchorLabel

7 insights — brukertilfredshet med AI-genererte dataprodukter (thumbs up/down).

Basert på insight.feedback-signalet. Fires ved thumbs up/down på innsiktskort, IKKE ved reverseringer.

6.1 Insight Feedback Volume

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typeinsight.feedback
CountingCount Signals
GranularityWeek
Chart TypeBar Chart
Show ExpandedJa

Adoption-monitor. Forventet: 10-20% av insights-visninger gir feedback.

6.2 Feedback: Thumbs Up vs Down

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Typeinsight.feedback
CountingCount Signals
Top N Dimensionsignal
Chart TypeDonut

Overordnet temperatur. Forventet 60-80% up. Down > 50% = kvalitetsproblem.

6.3 Feedback Volume by Product

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Typeinsight.feedback
CountingCount Signals
Top N Dimensionproduct
Chart TypeBar Chart

Hvilke kort som får mest feedback. Kryss-referer med 4.4 (views) for reach vs engagement.

6.4 Thumbs Down by Product

heading.anchorLabel
FeltVerdi
Query TypeValues Breakdown (Top N)
Signal Typeinsight.feedback
FilterAND: signal type insight.feedback + selector signal = down
CountingCount Signals
Top N Dimensionproduct
Chart TypeBar Chart
Show ExpandedJa

Viktigste insight. Høy thumbs-down på narrative = AI-prompt trenger tuning. Høy på areas/layers = presentasjon treffer ikke.

6.5 Thumbs Up Trend per Product

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typeinsight.feedback
FilterAND: signal type insight.feedback + selector signal = up
CountingCount Signals
GranularityWeek
Top N Dimensionproduct
Chart TypeLine Chart

Trendlinje per produkt. Måler om AI-prompt-endringer forbedrer tilfredshet over tid.

6.6 Users Giving Feedback (unique)

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typeinsight.feedback
CountingCount Users
GranularityWeek
Chart TypeLine Chart

Sammenlign med 4.5 (insights views, unique users). Mål: feedback users / viewed users > 15%.

6.7 Insights Views Over Time (Monitor)

heading.anchorLabel
FeltVerdi
Query TypeTime Series
Signal Typeinsights.viewed
CountingCount Users
GranularityWeek
Chart TypeLine Chart

Kill-switch. Duplikat av 4.5, plassert her for å overvåke om feedback-innføring reduserer engagement. Views-drop > 10% = vurder å fjerne mekanismen.


Kall-steder i koden

heading.anchorLabel

Hvor hvert signal fires fra i iOS-appen.

SignalFilKontekst
app.launchedAnalytics.swiftinitialize()App init
app.foregroundImpulseApp.swifthandleScenePhaseChange(.active)Forgrunn
onboarding.completedImpulseApp.swift → onboarding onCompleteOnboarding ferdig
onboarding.skippedOnboardingView.swift → skip-knappHopper over
trial.startedImpulseApp.swift → etter onboardingCompletedNy bruker
impulse.capturedUnifiedImpulseEditorView.swift → lagringImpulse opprettet
session.startedUnifiedSessionView.swiftonSessionCreatedSession opprettet
session.stepCompletedUnifiedSessionView.swiftonStepAdvancedSteg avansert
session.completedUnifiedSessionView.swiftonSessionCompletedSession ferdig
session.abandonedUnifiedSessionView.swiftcleanupIfNeededForlatt
checkin.completedCheckInEditorView.swift → AI assessment ferdigSjekk-inn OK
checkin.convertedCheckInEditorView.swift → convert-knappKonvertert
paywall.shownContentView.swift → paywall .onAppearPaywall vist
paywall.dismissedContentView.swift → dismiss callbackPaywall lukket
purchase.completedSubscriptionManager.swift → verified transactionKjøp OK
purchase.failedSubscriptionManager.swift → unverifiedKjøp feilet
trial.expiredSubscriptionManager.swift → entitlement lostTrial utløpt
insights.viewedInsightsView.swift → card .onAppearCard synlig
insight.feedbackInsightFeedback.swift → thumbs up/downBrukervurdering
journey.searchedJourneyView.swift → søkefelt endretSøk utført
feedback.submittedFeedbackSheet.swift → submit OKFeedback sendt
error.ai_workloadUnifiedSessionView.swift → SSE errorAI feilet
error.classification_rejectedContentView.swift → rejection eventAvvist
navigationPathChangedContentView.swift → tab endretTab-bytte