Streakfox
Guides

Retention Programs

Define which product action should become a streak, milestone, or retention signal.

A program defines the retention loop behind a widget, API event, webhook, automation, or supported MCP tool call.

Use programs when you want to answer one simple question:

What meaningful action should this user repeat?

What A Program Contains

FieldPurpose
NameHuman-readable program name for the dashboard.
Event keyThe event Streakfox should count, such as visit, lesson_complete, or deploy.
CadenceDaily, weekly, or monthly rhythm for the loop.
TargetHow many qualifying events count for the cadence.
TimezoneThe calendar boundary for streak and progress updates.
StatusTest or live. Test programs are safe for setup events.
MilestonesTargets that can unlock messages, URLs, or rewards.

The launch version stores programs on top of the existing widget model. Every current widget has a program surface, and program editing currently focuses on the event key, cadence, target, timezone, status, webhook secret, and outbound action webhook configuration.

Event Sources

One program can receive events from multiple places:

  • Widget/browser events
  • Server-side REST events
  • Webhooks from automation tools
  • Internal automation jobs
  • MCP tools used by agents when your workspace has an MCP bearer token

All sources update the same streak/progress state as long as they use the same siteKey, userHash, and event key.

First Program Setup

  1. Create or open a project in the dashboard.
  2. Open Programs.
  3. Copy the widget URL, REST endpoint, or webhook URL.
  4. Create a webhook secret if you plan to use third-party automations.
  5. Send a test event with your program event key.
  6. Check the live feed and program analytics.

MCP is available for existing projects/programs when Streakfox has provided a bearer token for the workspace or deployment. Customer-scoped MCP setup and agent-created projects/programs are not part of the self-serve launch path yet.

Avoiding Fragmented Streaks

Use a stable userHash for the same person across every event source. If a user starts anonymously and later signs in, use aliasing so their browser streak and signed-in account stay connected.

On this page