API Reference
AttributeHQ Class
Static class with all methods accessible directly.
initialize(config: AttributeHQConfig): Promise<void>
Initialize the SDK. Must be awaited before calling other methods.
await AttributeHQ.initialize({
apiKey: 'ak_your_api_key',
appId: 'your-app-uuid',
})Throws if apiKey or appId is empty.
track(eventName: string, properties?: Record<string, unknown>): void
Track a custom event. Synchronous (fire-and-forget).
AttributeHQ.track('purchase', { amount: 1500 })trackRevenue(amount: number, currency?: string, properties?: Record<string, unknown>): void
Track a revenue event. Currency defaults to "NGN".
AttributeHQ.trackRevenue(5000, 'NGN', { product: 'premium' })identify(userId: string, properties?: Record<string, unknown>): void
Associate events with a known user.
AttributeHQ.identify('user_12345', { email: 'test@example.com' })flush(): void
Immediately send all queued events.
AttributeHQ.flush()getAttribution(): Promise<AttributionResult | null>
Get cached attribution result. Returns null if install tracking hasn’t completed.
const result = await AttributeHQ.getAttribution()requestTrackingPermission(): Promise<TrackingPermissionStatus>
Request ATT permission (iOS). On Android, always resolves "authorized".
const status = await AttributeHQ.requestTrackingPermission()isInitialized(): boolean
Check if the SDK has been initialized.
const ready = AttributeHQ.isInitialized()NavigationTracker Class
enable(navigationRef: NavigationContainerRef): void
Start tracking screen views from React Navigation.
NavigationTracker.enable(navigationRef)disable(): void
Stop tracking screen views.
NavigationTracker.disable()isEnabled(): boolean
Check if navigation tracking is active.
const tracking = NavigationTracker.isEnabled()Types
AttributeHQConfig
interface AttributeHQConfig {
apiKey: string
appId: string
enableDebugLogging?: boolean // Default: false
batchSize?: number // Default: 10
flushInterval?: number // Default: 5 (seconds)
maxQueueSize?: number // Default: 100
requestATTOnInit?: boolean // iOS only. Default: true
attDelaySeconds?: number // iOS only. Default: 0
}AttributionResult
interface AttributionResult {
matchType: 'device_id' | 'fingerprint' | 'install_referrer' | 'organic'
confidence: number // 0-100
mediaSource: string | null
campaignId: string | null
isOrganic: boolean
attributedTouchTime: number | null // Unix ms
}Note: install_referrer match type is Android-only.
TrackingPermissionStatus
type TrackingPermissionStatus =
| 'authorized'
| 'denied'
| 'restricted'
| 'notDetermined'Imports
import {
AttributeHQ,
NavigationTracker,
type AttributeHQConfig,
type AttributionResult,
type TrackingPermissionStatus,
} from '@attributehq/react-native-sdk'