B2B retention infrastructure

One script. Game loops that keep bringing users back.

Branded mini-games, streaks and promo campaigns you embed in an afternoon. Progression, caps and fraud checks run on our servers; the reward decision reaches your backend as a signed webhook.

5 min Embed with one JS snippet or iframe
7 modes Streak, quiz, scratch, match-3 & more
A/B Cohort exposure with analytics
<!-- Drop in where the anonymous free-play game should appear -->
<div id="playflow-widget"></div>
<script
  src="https://rp-api.l2c1.com/v1/widget.js"
  data-project-id="proj_live_xxx"
  data-target="#playflow-widget"
  async
></script>
RetentionPlay admin — retention dashboard
Webhook latency target 180 ms
Built to drop into the stack you already run
SaaS dashboards E‑commerce WordPress Shopify Webflow Tilda Custom apps
Product shape

A retention engine you can embed in a weekend.

Not a badge widget. A compact retention engine for SaaS, e-commerce and communities that need measurable return visits — with anti-fraud, Stripe billing and a React admin included.

One snippet, full control

Drop a JS loader or sandboxed iframe into any web app, pick the project token, and decide where campaigns appear. The widget stays a thin client — your backend stays the source of truth.

JS loaderiframeSPA-friendly

Quest & streak logic

Daily quests, XP, streaks, leaderboards and completion rules — server-authoritative, no game infra to own.

Signed reward callbacks

HMAC-signed webhooks for coupons, points, unlocks, CRM events or email triggers — with idempotency keys.

Brand skins

Change colors, copy and campaign visuals so the widget feels native in every client product.

Analytics surface

Plays, completions, reward unlocks and return behavior — by campaign and segment.

Anti-fraud built in

Rate limits, session fingerprints, a server-side FraudGate and signed events keep rewards from being farmed.

FraudGatecapscooldowns
Visible product, backend-first engine

The dashboard stays visual. The engine stays reliable.

What your team touches is a focused retention widget — campaigns, skins, webhooks and a compact dashboard. What keeps it honest is a Rust backend that stays authoritative about every play, cap and reward.

  • Embed, campaign builder, reward webhooks and dashboard metrics in one product.
  • Progression, caps and fraud rules run on our servers; identity and fulfillment stay on yours.
  • Ships with a React admin, JS / PHP / Python SDKs and a full API reference.
Interactive demo

Switch the same engine between game modes.

One shared progression layer sits behind every mode. Moving a campaign from a streak to a quiz is a change of configuration, not a second integration.

Daily Match Quest

A branded match-3 challenge that turns one session into the next return visit.

RewardSPRING25
TriggerBoard cleared
Webhook200 OK

Not vaporware

What's already shipped.

RetentionPlay is a working vertical slice, not a pitch deck. The retention engine, admin and integrations are already implemented and tested.

Backend

Authoritative Rust core

Modular monolith: unified /v1/events ingress, SpecEngine, ProgressionService with hot/cold state (Dragonfly + Postgres) and graceful degradation.

Games

7 game adapters

Streak, quiz, scratch, clicker, match-3, memory pairs and wheel — driven by a data-first GameplaySpec, served through one generic play shell.

Trust

FraudGate & rewards

Server-side fraud rules, caps and cooldowns, score reconciliation, atomic idempotency and HMAC-signed reward webhooks with replay protection.

Surfaces

Admin, SDKs & docs

React admin, JS / PHP / Python SDKs, WordPress & Shopify integrations, Swagger API reference and a full docs site — deployable via Docker Swarm.

Workflow

From snippet to measurable retention loop.

Four steps, and the only one that touches your codebase is the first. Everything after it happens in the dashboard.

1

Install

Add the JS snippet or iframe and connect the project token.

2

Configure

Choose a campaign, reward rule and brand skin in the dashboard.

3

Launch

Users play a small game or complete a quest in the product flow.

4

Optimize

Measure completions, reward unlocks and return behavior by segment.

Pricing

Simple enough for self-serve, flexible enough for B2B.

A flat monthly price based on projects and monthly active users. No per-play fees and no revenue share — the reward budget stays yours.

Starter

A first streak in one product.

$29/mo
  • 1 project · 1k MAU
  • Streak + templates
  • Basic dashboard
  • Email support
Pilot fit

Growth

Real reward campaigns with webhooks and A/B.

$99/mo
  • 5 projects · 10k MAU
  • Promo + reward webhooks
  • A/B exposure + analytics
  • Priority support

Scale

Several brands, higher volume, tighter fraud limits.

$299/mo
  • 50 projects · 100k MAU
  • Economy + anti-fraud
  • Stripe billing
  • Integration help
FAQ

Questions teams ask first.

Built developer-first: you stay in control of identity, rewards and data. Here is how the boundaries work.

Where does reward logic actually run?

On the backend. The widget never decides rewards. Eligibility, caps, cooldowns and fraud checks are evaluated server-side, then a signed webhook tells your system to grant the reward.

How do you stop reward farming?

Rate limits, session fingerprints, score reconciliation and a configurable FraudGate. Reward-bearing outcomes can be required to come from your backend via a server API key.

How fast is integration?

Anonymous free-play is one snippet. A production identity or reward loop asks your backend to call /v1/server/session-token with a session:issue API key, then adds the returned session token to the widget.

Can I match my brand?

Yes. Colors, copy and campaign visuals are configurable per project, and the widget renders in a sandboxed iframe so it stays isolated from your app.

What about my data and auth?

You keep identity and billing. RetentionPlay uses scoped project/session tokens; secrets never live in the browser, and admin/reward actions are audit-logged.

What happens if RetentionPlay is down?

The widget lives in a sandboxed iframe, so a failure stays inside it and never blocks your page. On the backend, progression degrades from the hot store to Postgres instead of dropping the session, and webhook delivery retries with idempotency keys.

Which games are available?

Seven adapters today — streak, quiz, scratch, clicker, match-3, memory pairs and wheel — all driven by the same progression layer, so new surfaces reuse it.

Can I prove it moved retention?

A/B exposure assigns each user a stable cohort and the dashboard reports D1 and D7 return per arm, so the comparison is against a held-out control rather than against last month.

Start your retention loop

Put a game loop in your product this week.

Tell us what you would gamify and on which stack. We come back with a concrete embed plan — not a deck.