Reference
Standard events
Pre-defined event names + typed helpers matching AppsFlyer / Firebase taxonomy. Use these for cross-app consistency in reports.
Why use standard events
Server-side, Reflect pre-seeds events_taxonomy rows for these names so attribution requirements, dedupe keys, and postback wiring are consistent across every tenant. Custom event names work fine too — they just default to "attribution required, dedupe by install_uuid+event_name, 24h window".
Lifecycle
| Constant | Wire name | Auto-fired? | When |
|---|
AppInstall | app_install | ✓ | First launch on a new device |
AppOpen | app_open | ✓ | Every initialize when AutoSessionTracking |
AppFirstOpen | app_first_open | ✓ | Once per install (Firebase parity) |
SessionStart | session_start | ✓ | App resume from background |
SessionEnd | session_end | ✓ | App pause to background |
Acquisition / activation
| Helper | Wire name | Properties |
|---|
SignUpWith(method) | sign_up | method |
LoginWith(method) | login | method |
TutorialBegin | tutorial_begin | — |
TutorialCompleted(step) | tutorial_complete | step |
Engagement
| Helper | Wire name | Properties |
|---|
LevelStarted(level) | level_start | level |
LevelAchieved(level) | level_up | level |
LevelCompleted(level, score?) | level_complete | level, score |
Achievement(id) | achievement_unlocked | achievement_id |
ViewItem(type, id) | view_item | content_type, item_id |
SearchPerformed(query) | search | query |
Shared(type, id) | share | content_type, item_id |
Rated(rating) | rate | rating |
Commerce
| Helper | Wire name | Properties |
|---|
AddedToCart(sku, price, ccy, qty) | add_to_cart | product_id, price_local, currency_code, quantity |
CheckoutBegan(value, ccy, count) | begin_checkout | price_local, currency_code, item_count |
TrackPurchase(...) | purchase | product_id, price_local, currency_code, transaction_id, receipt_data? |
TrackSubscription(..., isTrial) | subscribe | product_id, price_local, currency_code, transaction_id, is_trial, receipt_data? |
TrialStarted(productId) | start_trial | product_id |
TrialConvertedTo(...) | trial_converted | product_id, price_local, currency_code, transaction_id |
SubscriptionDidRenew(...) | subscription_renewed | same as subscribe |
SubscriptionDidCancel(productId, reason?) | subscription_cancelled | product_id, reason |
SubscriptionDidRefund(...) | subscription_refunded | product_id, price_local, currency_code, transaction_id |
Ad monetization
| Helper | Wire name | Properties |
|---|
AdShown(network, format, rev?, ccy?) | ad_impression | ad_network, ad_format, revenue, currency_code |
AdClicked(network, format) | ad_click | ad_network, ad_format |
SDK-internal (reserved)
| Wire name | Source |
|---|
_user_alias | Auto-fired by SetUserId on first anon → known transition |
_set_audience | Auto-fired by SetAudience(...) |
_crash | Auto-fired by unhandled exceptions when AutoCaptureCrashes |
deep_link_opened | Auto-fired on every DispatchDeepLink call |
Sample
using Reflect;
void OnSignUpClicked() {
ReflectStandardEvents.SignUpWith("google");
}
void OnLevelComplete(int level, float score) {
ReflectStandardEvents.LevelCompleted(level, score);
}
void OnAdShown(string network, string format, double cpmCents) {
ReflectStandardEvents.AdShown(network, format, revenue: cpmCents / 1000.0, currencyCode: "USD");
}