Skip to Content

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()

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'