Skip to main content

Engagement Metrics 2026

Status: Implementation Complete - Pending Stakeholder Review Stakeholder: Lena Implementation: eli-kpi


Assumptions to Verify with Lena

Critical Assumptions

These assumptions directly affect the accuracy of all metrics. Please confirm or correct.

1. Tests Per Pack

AssumptionValueSource
Tests per pack4 testsShopify product descriptions

Evidence:

  • "12 Cortisol tests" product description: "3 packs of 4 Cortisol tests"
  • "Cortisol Pack - One-time Purchase" description: "4 tests"
  • "Cortisol Pack - Subscription" description: "4 tests"

Question for Lena: Is 4 tests per pack correct for all product variants?


2. Subscription Quantity Data

The Loop subscription data includes a quantity field that varies by subscription:

Plan TypeMost Common QuantityTotal TestsTests/Month (Amortized)
Monthly (1mo)1 pack44.0
Monthly (1mo)3 packs1212.0
6-month prepaid3 packs122.0
6-month prepaid6 packs244.0
12-month prepaid3 packs121.0
12-month prepaid9 packs363.0

Current Implementation: Uses actual quantity from each subscription, calculates:

tests_per_month = (quantity × 4) / interval_months

Question for Lena: Does this formula accurately represent how many tests a user should be using per month?


3. One-Hour Deduplication Window

When a user scans a test:

  1. The test takes ~20 minutes to develop
  2. Users may scan multiple times during this window
  3. All scans within the same hour are counted as ONE test attempt

Question for Lena: Is a 1-hour window appropriate, or should it be different (30 min, 2 hours)?


4. Eligibility Window for WAU/MAU

Currently using 3-month eligibility window (not 6 months):

  • A user is "eligible" if they made a purchase within the last 90 days
  • This affects the denominator for WAU and MAU calculations

Question for Lena: Confirm 3-month window is correct. Should we also track 6-month for comparison?


5. Subscription Types Included

Currently counting:

  • Loop subscriptions (all types: monthly, 6-month prepaid, 12-month prepaid)

NOT currently counting:

  • Shopify one-time purchases
  • Partner samples
  • Replacement orders

Question for Lena: Should one-time Shopify purchases be included in "tests delivered"?


6. Internal Account Exclusion

Excluding all accounts with @eli.health email addresses.

Question for Lena: Are there other internal/test accounts to exclude?


Metric Definitions

1. Monthly Test Completion Rate

Formula:

Completion Rate = Successful Tests / Tests Delivered × 100

Current Results (as of Jan 24, 2026):

MonthSuccessful TestsTests DeliveredCompletion Rate
January 20263,94817,81022.2%
December 20253,34015,27621.9%

Interpretation: About 22% of the tests we're "delivering" (amortized) result in successful completions.


2. Weekly Active Users (WAU)

Formula:

WAU = Users with ≥1 completed test this week / Eligible users (purchased in last 90 days)

3. MAU Standard

Formula:

MAU Standard = Users with ≥1 completed test this month / Eligible users

4. MAU Power Users

Formula:

MAU Power = Users with ≥4 completed tests this month / Eligible users

Why 4 tests? One pack = 4 tests = expected monthly usage for fully engaged users.


Data Sources

Key Joins

  1. Loop → Firebase: Match by email address
  2. Firebase → App User: Match by uid = accountId
  3. App User → Readings: Match by userId

SQL Implementation

Location: eli-kpi/src/sql/bigquery/loopwork/

MetricSQL File
Test Completion Ratemonthly-test-completion-rate-delivered.sql
WAUweekly-engagement-rate-2026.sql
MAU Standardmau-standard-2026.sql
MAU Power Usersmau-power-users-2026.sql

API Endpoints

EndpointDescription
GET /api/engagement-2026/test-completion-rateMonthly completion rate
GET /api/engagement-2026/wauWeekly active users
GET /api/engagement-2026/mau-standardMonthly active users
GET /api/engagement-2026/mau-power-usersPower users

Questions Pending Resolution

  1. Quantity verification: Does every subscription have the correct quantity in Loop? Are there data quality issues?

  2. Prepaid delivery timing: For prepaid plans, all tests ship at once but we amortize for calculation. Is this the right approach?

  3. Cancelled subscriptions: Should we count tests as "delivered" for the months before cancellation?

  4. Subscription renewals: For monthly subscriptions, do they get new tests each month (which we should count)?

  5. Historical backfill: Should we calculate these metrics historically, or only going forward?


Revision History

DateAuthorChange
2026-01-24ChipInitial implementation with quantity-based amortization