Streaks

Pre-built streaks feature for consumer apps

Ship daily, weekly, or monthly streaks powered by in-app user actions with automatic timezone and DST management. Use pre-built freeze and pause mechanics help keep streak intact.

Powering gamification experiences for 1M+ users

CampfireRevisionDojoLexiooOnePrepLealCyberPatientBohemian ResearchMaths GenieRitmo

Read our customer stories

Streaks engine

A pre-built streaks feature

Build in-app streaks using a flexible, pre-built streak engine ready for scale.

Flexible streak engine
Build daily, weekly, or monthly streaks powered by any combination of user interactions and conditions.
User-customizable streak logic
Let users customize streak logic within defined guardrails without custom streak tracking code.
Timezone-aware tracking
Track streaks with timezone-aware expiration so users never silently lose streaks due to time zone or daylight savings edge cases.

Streak freezes

Automatically save streaks when users miss a period

Auto-grant and auto-consume streak freezes so a missed period does not break the streak.

Configurable earning rates
Use auto-earn logic to automatically grant streak freezes to users over time, up to a maximum number.
Automatic consumption
Automatically consume streak freezes when users are about to lose their streak.
Configurable freeze inventory
Set how many freezes users can hold so missed periods skip instead of resetting the count.

Streak pauses

Let users pause streaks when they need a break

Set global off days, or have users set vacation days to pauses streaks themselves.

Global off days
Set global off days around the natural usage patterns of your app
User-defined vacation days
Let users set vacation days to pause streaks themselves.

Streak reminder notifications

Nudge users before streaks break

Send automated email and push reminders when users are about to lose their streak.

Automated streak protection
Automatically detect when users are about to lose their streak and send a timely reminder before it breaks.
Email and push channels
Reach users with streak reminders over email, push notifications, or both — whichever channels they prefer.
Respect user preferences
Let users opt out through a built-in preference center so you stay data and privacy compliant.
Inbox

from: [email protected]

9:41 AM

to: [email protected]

Your 30-day streak is at risk!

30-day streak at risk

Come back today to keep it alive

7d
Done
30d
At risk
90d
?

Streak analytics

See distribution, drop-off, and active volume

Track streak length distribution, active streak volume, and how many users sit on short versus long streaks so you can tune cadence and freeze settings.

Track streak distribution
See where users drop off across streak lengths so you can tune cadence, windows, and freeze settings.
Monitor active streak volume
Measure active streak counts over time to spot growth, seasonality, and sudden changes in the system.
Compare short and long streaks
See how many daily active users maintain short versus long streaks so you can adjust length targets.

Gamification software for modern product teams

The only gamification platform built for the modern era. Control via API or MCP and wire into your development workflow across multiple environments.

Official Gamification SDKs

NodeJS
Go
Java
.NET
PHP
Python
Ruby
First-class APIs for fast-moving teams
Idempotent, retry-safe, time-zone aware. Designed to feel obvious the first time you read the docs.
streaks.ts
// Load current streak state for a user with recent history const streak = await trophy.users.streak(user.id, { historyPeriods: 14, }) const activeLength = streak.length ?? 0 // Keep a compact history for the activity feed const recentHistory = streak.history?.slice(-7) ?? [] // Get number of freezes remaining const freezesRemaining = streak.freezes ?? 0
Control everything via MCP
Connect Trophy to MCP clients like Cursor and Claude Code and configure features without touching the dashboard.

Trophy MCP

Sonnet 4.6 · 8 tools loaded

> Add streak tracking for daily workouts. Give users 1 freeze a week to recover from missed days.

Listed Trophy MCP tools · read streaks and freezes docs

(ctrl+o to expand)

I'll wire up Trophy event tracking and configure the streaks feature to track one daily workout, with support for one freeze a week.

  1. Track completed workouts as Trophy metric events
  2. Configure Trophy streaks to track one daily workout, with freeze support

metrics.create({ name: 'Workouts Completed', key: 'workouts-completed' })

streaks.configure({ thresholds: [{ key: 'workouts-completed', length: 1 }], freezes: { max: 2, start: 1, autoEarn: 'weekly', autoEarnAmount: 1 } })

Streak tracking is configured in Trophy staging environment. Shall I copy to production?

Connect your stack via webhooks
Trigger workflows in third-party tools and internal systems in real time based on changes in Trophy.
streak.started
Trophy
streak.extended
streak.lost
Customer.io
Knock
OneSignal
Mixpanel
Amplitude
Develop, test, and deploy across environments
Separate dev, staging, and production environments with their own keys, data, and configuration. Promote changes with confidence.
Production
Staging
Pre-prod
Jason Dev
Charlie Dev
Keith Dev

Scale with confidence

Trusted by startups and enterprises alike. Scale seamlessly from your first to your millionth user.

Scale from first user to millionth
Latency, throughput, and uptime that hold up as your user base grows.

150M

API requests · 30D

just now

238ms

p95 latency · 24H

just now

100.0%

Uptime · 90D

Secure by design
Encryption in transit and at rest, scoped API keys, and privacy-first defaults out of the box.
  • Data encryption

    TLS 1.2+ in transit and AES-256 at rest

  • Privacy-first

    Trophy operates without PII by default

  • Secure API keys

    Rotation and revocation on demand

Reliable at scale
Fault tolerance, rate limits, and idempotent APIs keep gamification logic dependable under load.
  • Fault tolerant

    Automatic failover through redundancy

  • Rate limited

    Per-endpoint limits maintain fair use

  • Idempotent

    Retry requests without side-effects

FAQ

Frequently asked questions

Have a different question and can’t find the answer you’re looking for? Send us an email.

What streak cadences can I offer in my app?
Trophy supports daily, weekly, and monthly streaks powered by any combination of user interactions and conditions. When you send activity through Trophy, consecutive periods are tracked automatically with timezone-aware expiration so users do not silently lose streaks due to time zone or daylight saving edge cases.
What are streak freezes and how do they work?
Streak freezes keep a streak intact when users miss a period. Trophy can auto-grant freezes up to a configured maximum and automatically consume them when a user is about to lose their streak.
Can Trophy remind users before a streak breaks?
Yes. Trophy detects when users are about to lose their streak and sends automated email and push reminders before the streak breaks. Users can opt out through Trophy's built-in preference center so you respect channel preferences.
Can users customize their own streak rules?
Yes. Trophy lets users personalize streak logic within guardrails you define in the dashboard, so you can offer flexibility without rebuilding your streak system for each variation.
How do I understand streak performance over time?
Trophy provides streak analytics to track streak length distribution, active streak volume, and how many daily active users maintain short versus long streaks. You can see where users drop off across streak lengths and tune cadence and freeze settings.