Skip to Content

Event Tracking

All tracking methods except initialize(), getAttribution(), and requestTrackingPermission() are synchronous (fire-and-forget).

Custom Events

AttributeHQ.track('signup_completed') AttributeHQ.track('product_viewed', { product_id: 'sku_123', category: 'electronics', price: 15000, })

Revenue Events

// Defaults to NGN currency AttributeHQ.trackRevenue(5000) // With currency AttributeHQ.trackRevenue(25.99, 'USD') // With properties AttributeHQ.trackRevenue(5000, 'NGN', { product: 'premium_plan', payment_method: 'card', })

User Identification

AttributeHQ.identify('user_12345', { email: 'user@example.com', plan: 'premium', })

Get Attribution

const attribution = await AttributeHQ.getAttribution() if (attribution) { console.log('Match:', attribution.matchType) console.log('Confidence:', attribution.confidence) console.log('Source:', attribution.mediaSource) console.log('Organic:', attribution.isOrganic) }

Returns null if install tracking hasn’t completed.

Flush Events

AttributeHQ.flush()

Request Tracking Permission (iOS)

Request App Tracking Transparency permission on iOS:

import { Platform } from 'react-native' if (Platform.OS === 'ios') { const status = await AttributeHQ.requestTrackingPermission() console.log('ATT status:', status) // "authorized" | "denied" | "restricted" | "notDetermined" }

On Android, requestTrackingPermission() always resolves with "authorized" since there’s no ATT equivalent. You can safely call it on both platforms without a Platform.OS check.

Check Initialization

if (AttributeHQ.isInitialized()) { AttributeHQ.track('ready') }

Platform Differences

FeatureiOSAndroid
ATT/IDFAYes (requires permission)N/A
GAIDN/AYes (automatic)
Install ReferrerN/AYes (automatic)
SKAdNetworkYes (automatic)N/A
requestTrackingPermission()Shows ATT promptAlways returns “authorized”
Device ID persistenceKeychain (survives reinstall)SharedPreferences (lost on reinstall)

The server receives Platform.OS (“ios” or “android”) and applies the appropriate attribution logic.