Quickstart — your first install in 10 minutes
Drop the SDK in, paste three keys from your admin panel, ship a build, see your first app_install event land. That's the whole flow — worked through below on Unity, which is the same flow on every platform.
Pick your platform
This page uses Unity as the worked example. The steps are identical everywhere — install the SDK, paste your keys, initialize once at startup — because all of the mobile SDKs run on the same shared native core. If you are not on Unity, use the platform page instead and come back here for step 2 (keys) and step 5 (events):
- Android SDK — native Kotlin or Java.
- iOS SDK — native Swift or Objective-C.
- Flutter SDK — Dart.
- React Native SDK — TypeScript / JavaScript.
- Web SDK — browser sessions and web-to-app.
Before you begin
- A Reflect account — invite-only during beta. Email [email protected] if you don’t have one yet.
- Unity 2021.3 LTS or newer.
- An Android (API 21+) or iOS (13+) build target. iOS builds also need EDM4U (External Dependency Manager for Unity) installed — see Installation.
Step 1 — install the Unity SDK
In Unity, open Window → Package Manager, click +, choose Add package from git URL…, and paste:
https://github.com/bablu147/reflect-sdk.git#v2.4.4Unity downloads, compiles, and adds the package. See Installation for Asset Store and manual options.
Step 2 — grab your keys
Sign into the admin panel:
- Go to Settings → copy your
CompanyKey(looks likeco_live_…). - Go to Apps → register the app (one row per platform) if you haven’t already.
- At the moment you create it, the panel reveals the
AppKey(app_live_…) and theSigningSecrettogether. Copy the SigningSecret then — it is shown exactly once. Paste it straight into your secret manager or CI secret store. - The
AppKeyis not a secret: it stays visible in the Apps table, so you can copy it again any time.
CompanyKey is shared (it identifies your tenant). But AppKey + SigningSecret are per-app — register one app row for iOS and one for Android, and use each platform's pair in the matching build. Mixing them up returns 401 app_company_mismatch. See Keys & IDs for the full table.
Use a build-time secret injection mechanism (env var, scriptable object set in CI). Never commit it. And store it the moment it is shown: there is no second reveal. If it is lost or leaked, open Apps in the console and press Rotate secret on that app's row — the new secret is revealed once, right there, and the old one keeps signing valid requests for 48 hours so the builds already on devices keep working while you ship one carrying the new value. Only one rotation can be in flight per app: the next is available once that 48-hour window closes.
Step 3 — initialize in your first scene
In your first scene’s Awake():
using Reflect;
using UnityEngine;
public class ReflectBootstrap : MonoBehaviour
{
void Awake()
{
DontDestroyOnLoad(gameObject);
ReflectSDK.Initialize(new ReflectConfig {
BaseUrl = "https://api.reflect.cloud",
CompanyKey = "co_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
#if UNITY_IOS
AppKey = "app_live_<ios-key>",
SigningSecret = "<ios-signing-secret>",
#else // Android, Editor, etc.
AppKey = "app_live_<android-key>",
SigningSecret = "<android-signing-secret>",
#endif
EnableLogging = Debug.isDebugBuild,
});
// Tag the install with anything you want segmented in reports.
ReflectSDK.SetGlobalProperty("user_tier", "free");
}
}Step 4 — ship a build, watch it arrive
The SDK fires app_install automatically on the first launch of the app on a device. You don’t need to call anything.
Open the Testing console — in the admin panel, Apps → Testing console (/explorer/live). It streams every event your SDK sends as it lands, with the arrival lag, SDK version, and device info beside each row, so you can tell a working integration from a broken one in seconds. Use it rather than the Dashboard for this first check: report rollups run hourly, so a brand-new install can take up to an hour to show up there. Full walkthrough: Test your integration.
Step 5 — track your first custom event
Anywhere in your game:
// One-shot event
ReflectSDK.TrackEvent("level_started", new Dictionary<string, object> {
{ "level", 1 },
});
// Or use a typed standard helper — same wire format, less typing
ReflectStandardEvents.LevelStarted(1);
// Revenue
ReflectSDK.TrackPurchase(
productId: "sku_pro_pack",
price: 9.99,
currencyCode: "USD",
transactionId: "txn_abc123"
);Where to next
- Test your integration — the Testing console in full: arrival lag, device pinning, and the first-install runbook.
- Configuration — every
ReflectConfigfield. - Admin panel walkthrough — set up partners, tracking links, postbacks.
- Debug overlay — inspect what the SDK is sending without leaving Unity.