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.
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.
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.
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.
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/5The same event passes through the same matching engine, regardless of platform. Your iOS install and your Unity install are apples-to-apples comparable.
import Reflect ReflectSDK.initialize( appKey: "ak_live_...", hmacSecret: secret )
import io.reflect.sdk.Reflect
Reflect.initialize(this) {
appKey = "ak_live_..."
hmac = secret
}import Reflect from '@reflect/sdk';
await Reflect.initialize({
appKey: 'ak_live_...',
hmac: secret,
});import 'package:reflect_sdk/reflect.dart'; await Reflect.initialize( appKey: 'ak_live_...', hmac: secret, );
using Reflect; ReflectSDK.Initialize( "ak_live_...", hmacSecret );
<script src="https://cdn.reflect.cloud/web.js" data-key="ak_live_..." ></script>
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 is opinionated about pricing and architecture — but agnostic about your category. The same SDK + same partner mesh, customised by what you measure.
Track installs, ARPDAU, level completion, IAP, ad-revenue. CV-schema editor for SKAdNetwork. ROAS by campaign-creative-pair.
Purchase + add-to-cart attribution, first-order vs returning, multi-touch revenue split, currency-normalised dashboards.
Strict PII handling — IP can be stripped from postbacks. Server-to-server keys with per-event scope. Compliance-ready audit log.
Trial → conversion attribution. MRR cohort by acquisition campaign. Renewal vs initial-purchase event separation. Refund-aware revenue.
~95% cheaper than legacy MMPs.
Same partner mesh. Same attribution quality. A bill that doesn't consume half your ad spend.
Per month, 50k install events. Reflect from public pricing; legacy MMPs from customer-reported invoices (they don't publish).
Every mutation across the platform is audit-logged. Every event is backed up to R2 with a cryptographic hash. Every secret is HMAC-protected.
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.
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.
No sales call, no onboarding project. Most studios are sending attributed installs the same afternoon they sign up.
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.
Already have an account? Sign in →