Using the React Native SDK
This guide will help you implement Linkrunner functionality in your React Native application.Initialization
To initialize the Linkrunner SDK, add this code to yourApp.tsx component:
You can find your project token here.
SDK Signing Parameters (Optional)
For enhanced security, the LinkRunner SDK requires the following signing parameters during initialization:secretKey: A unique secret key used for request signing and authenticationkeyId: A unique identifier for the key pair used in the signing process
getAttributionData method.
User Registration
Call thesignup method once after the user has completed your app’s onboarding process:
It is strongly recommended to use the integrated platform’s identify function to set a persistent user_id once it becomes available (typically after signup or login).
- Mixpanel - ID Management & User Identification
- PostHog - How User Identification Works
- Amplitude - Identify Users Documentation
- mixpanel_distinct_id for Mixpanel
- posthog_distinct_id for PostHog
- amplitude_device_id for Amplitude
Getting Attribution Data
To get attribution data and deeplink information for the current installation, use thegetAttributionData function:
getAttributionData function returns:
Setting User Data
CallsetUserData each time the app opens and the user is logged in:
Setting CleverTap ID
Use thesetAdditionalData method to set CleverTap ID:
Parameters for linkrunner.setAdditionalData
clevertapId: string (optional) - CleverTap user identifier
Tracking Custom Events
Track custom events in your app:Revenue Sharing with Ad Networks
To enable revenue sharing with ad networks like Google Ads and Meta, include anamount parameter as a number in your custom event data. This allows the ad networks to optimize campaigns based on the revenue value of conversions:
For revenue sharing with ad networks to work properly, ensure the
amount parameter is passed as a number, not as a
string.Revenue Tracking
Capture Payment
Use this method to capture payment information:Parameters for linkrunner.capturePayment
amount: number (required) - The payment amountuserId: string (required) - Identifier for the user making the paymentpaymentId: string (optional) - Unique identifier for the paymenttype: string (optional) - Type of payment. Available options:FIRST_PAYMENT- First payment made by the userSECOND_PAYMENT- Second payment made by the userWALLET_TOPUP- Adding funds to a walletFUNDS_WITHDRAWAL- Withdrawing fundsSUBSCRIPTION_CREATED- New subscription createdSUBSCRIPTION_RENEWED- Subscription renewalONE_TIME- One-time paymentRECURRING- Recurring paymentDEFAULT- Default type (used if not specified)
status: string (optional) - Status of the payment. Available options:PAYMENT_INITIATED- Payment has been initiatedPAYMENT_COMPLETED- Payment completed successfully (default if not specified)PAYMENT_FAILED- Payment attempt failedPAYMENT_CANCELLED- Payment was cancelled
Removing Payments
Remove payment records (for refunds or cancellations):Parameters for Linkrunner.removePayment
userId: String (required) - Identifier for the user whose payment is being removedpaymentId: String (optional) - Unique identifier for the payment to be removed
paymentId or userId must be provided when calling removePayment. If only userId is provided, all payments for that user will be removed.
Enhanced Privacy Controls
The SDK offers options to enhance user privacy:Function Placement Guide
| Function | Where to Place | When to Call |
|---|---|---|
linkrunner.init | App.tsx within useEffect | Once when app starts |
linkrunner.getAttributionData | Attribution data handling flow | Whenever the attribution data is needed |
linkrunner.setAdditionalData | Integration code | When third-party integration IDs are available |
linkrunner.signup | Onboarding flow | Once after user completes onboarding |
linkrunner.setUserData | Authentication logic | Every time app opens with logged-in user |
linkrunner.trackEvent | Throughout app | When specific user actions occur |
linkrunner.capturePayment | Payment processing | When user makes a payment |
linkrunner.removePayment | Refund flow | When payment needs to be removed |