Reflect
Mobile Measurement Partner

Mobile attribution that shows its work.

Every install, every match, every postback — replayable end to end. Run shadow mode against your current MMP, get a daily diff, and migrate only when the numbers match. Other MMPs ask you to trust the number.

Read the docs ›
6native SDKs
30 minto live
1⁄10ᵗʰlegacy MMP cost
Attribution receipt · install 0a2b…7890
ClickTikTok Ads
ext_click_id = tt_8821 · 14:02:11Z
Matchdeterministic
Play Install Referrer · ctit 42s
Attributedlast_touch · 1.0000
partner = tiktok_ads
Postback200 · 42 ms
fired → TikTok Events API
Revenue$4.99
purchase · usd · day 0
Reproducible — re-run this install any time, identical result.
Postbacks to every major ad network · pre-wired
The product

Reflect shows its work.

Every measurement Reflect makes is reproducible — months later, by you, without our help. Three things we built that legacy MMPs charge ten times more to half-do.

01 · Replay

Replay any attribution decision.

Every install, every postback, every match — stored alongside the input snapshot and the rules that fired. A year from now, replay the exact decision that produced this credit. Auditors love it. So do CFOs.

Click 14:02:11
Impression 14:02:13
Install 14:03:48
Postback fired 14:03:50
02 · Shadow mode

Run two MMPs in parallel.

Point Reflect at the same install traffic as your current MMP. Get a daily diff — partner-by-partner, install-by-install. Migrate only when the numbers match. No surprises in your next monthly report.

AppsFlyer
12,481
installs · last 7d
Reflect
12,503
+0.18%
03 · Open postbacks

See the exact request the partner gets.

URL, macros, dedupe key, retry state — every outbound postback is logged with the full HTTP request. When a partner says “we never got that install”, you have receipts.

POST partner.example.com/cb
  ?clk={click_id}
  &iid={install_uuid}
  &cost={cost_usd}
  &dedupe=hash:9f24…
Status: 200 · 184ms · retry 0/5
Multi-platform

Six SDKs. One signal.

The same event passes through the same matching engine, regardless of platform. Your iOS install and your Unity install are apples-to-apples comparable.

iOS · Swift
import Reflect

ReflectSDK.initialize(
  appKey: "ak_live_...",
  hmacSecret: secret
)
Android · Kotlin
import io.reflect.sdk.Reflect

Reflect.initialize(this) {
  appKey = "ak_live_..."
  hmac   = secret
}
React Native · TS
import Reflect from '@reflect/sdk';

await Reflect.initialize({
  appKey: 'ak_live_...',
  hmac: secret,
});
Flutter · Dart
import 'package:reflect_sdk/reflect.dart';

await Reflect.initialize(
  appKey: 'ak_live_...',
  hmac: secret,
);
Unity · C#
using Reflect;

ReflectSDK.Initialize(
  "ak_live_...",
  hmacSecret
);
Web · JS
<script
  src="https://cdn.reflect.cloud/web.js"
  data-key="ak_live_..."
></script>
Reflect Live

Watch Reflect work in real time.

Every install, every match, every postback — replayable end-to-end. The stream below is from a synthetic tenant; your dashboard shows your own traffic at the same fidelity.

Reflect · live
12,438
installs/hr
99.7%
match rate
184ms
p95 latency
connecting…
Built for

Whatever you ship.

Reflect is opinionated about pricing and architecture — but agnostic about your category. The same SDK + same partner mesh, customised by what you measure.

Mobile games

Track installs, ARPDAU, level completion, IAP, ad-revenue. CV-schema editor for SKAdNetwork. ROAS by campaign-creative-pair.

LTV cohortsSKAN CV schemaAd revenue

E-commerce apps

Purchase + add-to-cart attribution, first-order vs returning, multi-touch revenue split, currency-normalised dashboards.

Multi-touch attributionFX-normalised revenueFirst-order cohorts

Fintech & wallets

Strict PII handling — IP can be stripped from postbacks. Server-to-server keys with per-event scope. Compliance-ready audit log.

S2S keys + scopePII strip on postbackPer-event audit

Subscription apps

Trial → conversion attribution. MRR cohort by acquisition campaign. Renewal vs initial-purchase event separation. Refund-aware revenue.

Trial → paid attributionMRR by channelRefund-aware
The cost story

Built for ad budgets that hurt.

~95% cheaper than legacy MMPs.

Same partner mesh. Same attribution quality. A bill that doesn't consume half your ad spend.

$250
Reflect
$3,500
Adjust
$4,500
AppsFlyer

Per month, 50k install events. Reflect from public pricing; legacy MMPs from customer-reported invoices (they don't publish).

Trust & posture

Audit-ready by design.

Every mutation across the platform is audit-logged. Every event is backed up to R2 with a cryptographic hash. Every secret is HMAC-protected.

GDPR-aware
Per-tenant PII redaction · DPA available
HMAC postbacks
X-Reflect-Signature on every outbound
R2 audit backup
Every event replayable from cold storage
2FA TOTP
Optional, enforceable per-tenant
Edge-only data
Cloudflare D1 · no third-party cloud
DPA + ToS
Standard contractual clauses · ready to sign
Pricing

Free until you grow. Then under a penny per install.

Start on Free — hard-capped so you never get a surprise bill. Upgrade once you’re shipping. Every paid plan includes a generous install allowance; overages are billed at under a penny each.

Free
Free
Forever free · hard cap
200 installs / mo
  • 2 apps
  • Hard cap (no surprise bills)
Indie
$19/mo
For solo devs + early-stage studios. 100k events, 2k attributions, 1 app.
2k installs / mo
  • 1 app
  • 1 CAPI destination
  • S2S server keys
  • Unlimited team seats
  • Soft cap — overages billed at cost
Most popular
Starter
$49/mo
Most popular · for shipping studios
10k installs / mo
  • 6 apps
  • 1 CAPI destination
  • Unlimited team seats
  • Email support
  • Soft cap — overages billed at cost
Growth
$249/mo
For growing multi-app studios
50k installs / mo
  • 15 apps
  • Unlimited CAPI destinations
  • S2S server keys
  • Partner portal
  • 3 team seats
  • Email support
  • Soft cap — overages billed at cost
Scale
$899/mo
Serious paid UA · Slack support
250k installs / mo
  • Unlimited apps
  • Unlimited CAPI destinations
  • S2S server keys
  • Partner portal
  • 10 team seats
  • Slack support
  • Soft cap — overages billed at cost

No setup fees. Cancel any time. Usage in real time; email warnings at 80% and 100%.

We moved off AppsFlyer in two days. Same partner postbacks, same attribution quality, one-tenth the bill. The signup-to-first-install loop took 47 minutes.
Founder, hyper-casual studio
Series A · 2.4M MAU · IN/SEA
Getting started

Live in three steps.

No sales call, no onboarding project. Most studios are sending attributed installs the same afternoon they sign up.

  1. 1
    Create your account
    Magic-link sign-in — no password, no credit card. The Free tier covers 25k installs/mo so you can integrate and test for real.
  2. 2
    Drop in the SDK
    One dependency, one init call. Unity, native iOS/Android, React Native and Flutter snippets are ready the moment you sign in.
  3. 3
    Wire your ad networks
    Pick from 90+ pre-built partner postback templates. Flip them on, and attributed installs start flowing to your dashboard.
FAQ

Questions, answered.

The things founders ask us before they sign up. Still unsure? Talk to us.

How is Reflect so much cheaper than Adjust or AppsFlyer?
We run entirely on Cloudflare's edge — D1, R2 and Workers — with no third-party data warehouse in the path. That keeps our marginal cost per install near zero, and we pass it on: under a penny per install instead of 7–9¢.
Will I lose attribution quality by switching?
No. Reflect uses the same deterministic signals the big MMPs do — Play Install Referrer on Android, AdServices tokens on iOS 14.3+ — with probabilistic fingerprint as a graceful fallback. Every credit decision is reproducible from R2 audit blobs.
Which ad networks are pre-wired?
90+ partner postback templates ship out of the box — Meta, TikTok, Google Ads, Snap, AppLovin, Unity Ads, Mintegral, Liftoff and more — with full macro support, exponential-backoff retries and per-partner dedupe.
How long does integration actually take?
Under 10 minutes for the SDK. One dependency, one init call, copy-paste snippets for Unity / native / React Native / Flutter. Wiring partner postbacks is flipping templates on — no engineering ticket required.
Is there really no sales call or contract?
Correct. Self-serve signup, month-to-month, cancel anytime. The Free tier (25k installs/mo) needs no card. Paid plans start at $19/mo when you outgrow it.
How do you handle data privacy and compliance?
Per-tenant PII redaction, IP can be stripped from postbacks, HMAC-signed outbound webhooks, full audit log on every mutation, and a DPA with standard contractual clauses ready to sign. Data stays on Cloudflare's edge.
Start when you're ready

Sign up. Live in minutes.

Self-serve. No card, no sales call. Free tier covers SDK testing — paid plans start at $19/mo once you outgrow it. Tell us about your studio below and we'll send a magic-link to sign in.

  • check Free tier — no card required to start
  • check Magic-link sign-in (no passwords to remember)
  • check SDK + docs ready the moment you sign in
  • check Cancel anytime; no annual lock-in

Already have an account? Sign in →

Tell us about your app and we'll send a magic-link to sign in.

You'll only hear from us about your request. No marketing, no newsletter.