diff --git a/ad-networks/meta-ads.mdx b/ad-networks/meta-ads.mdx index b7cc575..52655e1 100644 --- a/ad-networks/meta-ads.mdx +++ b/ad-networks/meta-ads.mdx @@ -292,7 +292,7 @@ Campaigns will only appear in the Linkrunner dashboard after the first install c **Before troubleshooting, verify:** - **App is live with Linkrunner SDK** — Ensure your app is deployed with the Linkrunner SDK integrated and has 100% rollout to users -- **Meta decryption key is configured** — Verify the [Install Referrer Decryption Key](#step-2-get-your-referrer-decryption-key) is correctly added in your Linkrunner dashboard settings +- **Meta decryption key is configured** — Verify the [Install Referrer Decryption Key](#step-2%3A-get-your-referrer-decryption-key) is correctly added in your Linkrunner dashboard settings - **Campaigns are running** — Confirm your Meta ad campaigns are active and serving impressions - **First install received** — Campaigns appear only after the first user installs your app via that campaign diff --git a/ad-networks/meta-web-to-app.mdx b/ad-networks/meta-web-to-app.mdx index f4e1344..f956d4a 100644 --- a/ad-networks/meta-web-to-app.mdx +++ b/ad-networks/meta-web-to-app.mdx @@ -114,7 +114,7 @@ Complete the access token setup in Facebook Events Manager: ![Meta Access Token - Step 2](/images/meta/access-token-2.webp) 1. Navigate to [Facebook Events Manager](https://business.facebook.com/events_manager2/list) -2. Follow the [CAPI token generation steps](/ad-networks/meta-ads#2-generate-access-token) as shown in the Meta Ads setup guide +2. Follow the [CAPI token generation steps](/ad-networks/meta-ads#step-5%3A-configure-capi) as shown in the Meta Ads setup guide 3. Paste the token into your Linkrunner [Meta Integration settings](https://dashboard.linkrunner.io/settings?s=meta-integration) diff --git a/ad-networks/tiktok.mdx b/ad-networks/tiktok.mdx index 712093e..ee2b130 100644 --- a/ad-networks/tiktok.mdx +++ b/ad-networks/tiktok.mdx @@ -212,7 +212,7 @@ Unlike Meta campaigns, TikTok campaigns **do not appear automatically** on the L **Checklist to fix this:** -1. **Verify your campaign links are set up correctly** — Each TikTok ad must have a unique Linkrunner campaign link as the destination URL ([see Step 5](#step-5-add-destination-urls)) +1. **Verify your campaign links are set up correctly** — Each TikTok ad must have a unique Linkrunner campaign link as the destination URL ([see Step 5](#step-5%3A-add-destination-urls)) 2. **Ensure your ads are active and receiving traffic** — Campaigns only appear after at least one click comes through the tracking link 3. **Check that the Linkrunner SDK is integrated in your app** — Your app must be live with the Linkrunner SDK for installs to be attributed 4. **Confirm your TikTok pixel is configured** — Without a properly configured pixel ([see Part 1](#1-configuring-pixel-in-tiktok-events-manager)), event postbacks to TikTok won't work @@ -223,7 +223,7 @@ Unlike Meta campaigns, TikTok campaigns **do not appear automatically** on the L If installs or other events are not appearing in TikTok Events Manager, check the following: -1. **Pixel credentials are correct** — Verify that the **Pixel ID** and **Access Token** you pasted into Linkrunner match the ones in TikTok Events Manager ([see Step 12](#step-12-copy-credentials)) +1. **Pixel credentials are correct** — Verify that the **Pixel ID** and **Access Token** you pasted into Linkrunner match the ones in TikTok Events Manager ([see Step 12](#step-12%3A-copy-credentials)) 2. **Access token hasn't expired** — TikTok access tokens can expire or be revoked. Regenerate the token in TikTok Events Manager and update it in Linkrunner if needed 3. **Wait for propagation** — It can take up to 45 minutes to 1 hour for initial events to appear in TikTok Events Manager 4. **Users are clicking the campaign link** — Events are only sent to TikTok for installs that came through a Linkrunner campaign link with a valid TikTok click ID (`ttclid`) @@ -263,7 +263,7 @@ This is because TikTok uses a web-to-app flow where the campaign link acts as th - See which specific ad is driving the most installs and conversions - Make better optimization decisions based on granular data -You can quickly duplicate campaigns in Linkrunner to create multiple links ([see Step 4](#step-4-create-linkrunner-campaign-links)). +You can quickly duplicate campaigns in Linkrunner to create multiple links ([see Step 4](#step-4%3A-create-linkrunner-campaign-links)). @@ -273,7 +273,7 @@ You can quickly duplicate campaigns in Linkrunner to create multiple links ([see To set this up: 1. Ensure your app sends revenue events with amount and currency through the Linkrunner SDK -2. Select **Purchase** as the optimization event when creating your TikTok campaign ([see Step 3](#step-3-configure-optimization-and-bidding)) +2. Select **Purchase** as the optimization event when creating your TikTok campaign ([see Step 3](#step-3%3A-configure-optimization-and-bidding)) Revenue data is sent in the currency your app provides (ISO 4217 format, e.g., USD, INR). diff --git a/api-reference/event-capture.mdx b/api-reference/event-capture.mdx index b07593e..e050c65 100644 --- a/api-reference/event-capture.mdx +++ b/api-reference/event-capture.mdx @@ -7,7 +7,7 @@ icon: "shuffle" This documentation is for tracking custom events from your backend only! For tracking events from your app please go through the [Flutter](https://docs.linkrunner.io/sdk/flutter/usage#tracking-custom-events) or [React Native](https://docs.linkrunner.io/sdk/react-native/usage#tracking-custom-events) documentation. - Events are only stored and displayed for attributed users. The user must have been registered via the `.signup` function in one of the [SDKs](/sdk/flutter#user-registration) for their events to appear on Linkrunner. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [capture-payment](/api-reference/revenue-tracking) API instead of capture-event. + Events are only stored and displayed for attributed users. The user must have been registered via the `.signup` function in one of the [SDKs](/sdk/flutter#user-identification-required) for their events to appear on Linkrunner. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [capture-payment](/api-reference/revenue-tracking) API instead of capture-event. ## Base URL @@ -171,7 +171,7 @@ While you can include any custom attributes in the `event_data` object, Meta req Here is an example of the exact `event_data` structure you need to send for Meta Commerce Manager: -For comprehensive details on each field requirement, refer to our [Meta Commerce Manager](/ecommerce-manager/meta-commerce-manager#understanding-event_data) documentation. +For comprehensive details on each field requirement, refer to our [Meta Commerce Manager](/ecommerce-manager/meta-commerce-manager#understanding-event-data) documentation. ```json { diff --git a/api-reference/revenue-tracking.mdx b/api-reference/revenue-tracking.mdx index 531b549..ca737c8 100644 --- a/api-reference/revenue-tracking.mdx +++ b/api-reference/revenue-tracking.mdx @@ -5,7 +5,7 @@ icon: "money-bill" --- - Revenue data is only stored and displayed for attributed users. The user must have been registered via the `.signup` function in one of the [SDKs](/sdk/flutter#user-registration) for their payment data to appear on Linkrunner. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. + Revenue data is only stored and displayed for attributed users. The user must have been registered via the `.signup` function in one of the [SDKs](/sdk/flutter#user-identification-required) for their payment data to appear on Linkrunner. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. ## Base URL @@ -106,7 +106,7 @@ _Note: Any Payment event you send should be mapped with **Purchase** for Commerc While you can include any custom attributes in the `event_data` object, Meta requires specific fields for ecommerce events to correctly attribute catalog sales. Your `event_data` object should include the following fields: -For comprehensive details on each field requirement, refer to our [Meta Commerce Manager](/ecommerce-manager/meta-commerce-manager#understanding-event_data) documentation. +For comprehensive details on each field requirement, refer to our [Meta Commerce Manager](/ecommerce-manager/meta-commerce-manager#understanding-event-data) documentation. ```json { diff --git a/features/deep-linking-setup.mdx b/features/deep-linking-setup.mdx index 4821c25..0df7970 100644 --- a/features/deep-linking-setup.mdx +++ b/features/deep-linking-setup.mdx @@ -8,7 +8,7 @@ Deep links allow users to navigate directly to specific content within your app There are two primary approaches to deep linking: -1. **[HTTP/HTTPS Deep Links](#httphttps-deep-linking)**: URLs with `http://` or `https://` protocols that can open your app when clicked. Requires domain verification. +1. **[HTTP/HTTPS Deep Links](#http%2Fhttps-deep-linking)**: URLs with `http://` or `https://` protocols that can open your app when clicked. Requires domain verification. 2. **[Custom URI Schemes](#custom-uri-schemes)**: URLs with a custom protocol like `myapp://` that are registered to your app. No verification needed. --- diff --git a/features/deferred-deep-linking.mdx b/features/deferred-deep-linking.mdx index 66376aa..6edfbdc 100644 --- a/features/deferred-deep-linking.mdx +++ b/features/deferred-deep-linking.mdx @@ -49,27 +49,27 @@ Call `getAttributionData()` when you need attribution data, check for the `deepl -**See:** [Getting Attribution Data - Android SDK Usage](/sdk/android/usage#getting-attribution-data) +**See:** [Getting Attribution Data - Android SDK Usage](/sdk/android#getting-attribution-data) -**See:** [Getting Attribution Data - iOS SDK Usage](/sdk/ios/usage#getting-attribution-data) +**See:** [Getting Attribution Data - iOS SDK Usage](/sdk/ios#getting-attribution-data) -**See:** [Getting Attribution Data - React Native SDK Usage](/sdk/react-native/usage#getting-attribution-data) +**See:** [Getting Attribution Data - React Native SDK Usage](/sdk/react-native#getting-attribution-data) -**See:** [Getting Attribution Data - Flutter SDK Usage](/sdk/flutter/usage#getting-attribution-data) +**See:** [Getting Attribution Data - Flutter SDK Usage](/sdk/flutter#getting-attribution-data) -**See:** [Getting Attribution Data - React Native SDK Usage](/sdk/react-native/usage#getting-attribution-data) +**See:** [Getting Attribution Data - React Native SDK Usage](/sdk/react-native#getting-attribution-data) diff --git a/features/mcp.mdx b/features/mcp.mdx index 9c42f36..77ee04c 100644 --- a/features/mcp.mdx +++ b/features/mcp.mdx @@ -149,7 +149,7 @@ page before creating a new one. ## What this is not - Not a write API. Use the [Linkrunner data - API](/api-reference/introduction) for programmatic writes. + API](/api-reference/data-apis) for programmatic writes. - Not a generic SQL/Postgres bridge. It calls the same endpoints the dashboard uses, with the same access controls. - Not a substitute for webhooks. Use [webhooks](/features/webhooks) for diff --git a/features/referral-codes.mdx b/features/referral-codes.mdx index cfcec4a..435b026 100644 --- a/features/referral-codes.mdx +++ b/features/referral-codes.mdx @@ -61,25 +61,25 @@ Call `getAttributionData()` early in your app lifecycle, then parse the `deeplin Use `android.net.Uri` to parse the URL and `getQueryParameter()` to extract values. -[See Android Usage Guide →](/sdk/android/usage#getting-attribution-data) +[See Android Usage Guide →](/sdk/android#getting-attribution-data) Use `URLComponents` to parse the URL and access the `queryItems` array. -[See iOS Usage Guide →](/sdk/ios/usage#getting-attribution-data) +[See iOS Usage Guide →](/sdk/ios#getting-attribution-data) Use JavaScript's `URL` and `URLSearchParams` to parse and extract parameters. -[See React Native Usage Guide →](/sdk/react-native/usage#getting-attribution-data) +[See React Native Usage Guide →](/sdk/react-native#getting-attribution-data) Use `Uri.parse()` and access the `queryParameters` map. -[See Flutter Usage Guide →](/sdk/flutter/usage#getting-attribution-data) +[See Flutter Usage Guide →](/sdk/flutter#getting-attribution-data) diff --git a/features/remarketing-campaigns.mdx b/features/remarketing-campaigns.mdx index 4c982f5..2c79555 100644 --- a/features/remarketing-campaigns.mdx +++ b/features/remarketing-campaigns.mdx @@ -9,7 +9,7 @@ Once you have [created your audience segments](/features/remarketing-audience-se ### Prerequisites -- You have created a [Custom Audience](/features/remarketing-audience-segments#meta) in Meta Ads Manager. +- You have created a [Custom Audience](/features/remarketing-audience-segments) in Meta Ads Manager. ### Steps @@ -35,7 +35,7 @@ Once you have [created your audience segments](/features/remarketing-audience-se ### Prerequisites -- You have created an [audience segment](/features/remarketing-audience-segments#google) in Google Ads Audience Manager. +- You have created an [audience segment](/features/remarketing-audience-segments) in Google Ads Audience Manager. ### Steps @@ -61,4 +61,4 @@ The **App engagement** subtype is only available for apps with 50,000+ installs. 7. Add creatives and assets. -8. Review campaign settings and launch. \ No newline at end of file +8. Review campaign settings and launch. diff --git a/features/skadnetwork-conversion-values.mdx b/features/skadnetwork-conversion-values.mdx index 8e74c52..59cf140 100644 --- a/features/skadnetwork-conversion-values.mdx +++ b/features/skadnetwork-conversion-values.mdx @@ -316,4 +316,4 @@ Now that you understand conversion values, you can: 3. **Set up dashboard**: Configure your conversion value schema in the Linkrunner dashboard 4. **Monitor and optimize**: Track campaign performance and refine your schema over time -For implementation details, see the [SKAdNetwork Integration Guide](/sdk/skadnetwork/integration). +For implementation details, see the [SKAdNetwork Integration Guide](/features/skadnetwork-integration). diff --git a/features/skan-dashboard/overview.mdx b/features/skan-dashboard/overview.mdx index d265d61..85bf759 100644 --- a/features/skan-dashboard/overview.mdx +++ b/features/skan-dashboard/overview.mdx @@ -91,7 +91,7 @@ You can select multiple channels to compare performance across networks. Yes, you can see the SKAN dashboard without completing SKAN configuration on Linkrunner. - Linkrunner analyzes the postbacks received from Apple for the SKAN dashboard. If you've [configured your app to send postbacks to Linkrunner](/features/skadnetwork-integration#configuring-postback-copies-to-linkrunner), data will be shown on the SKAN dashboard. + Linkrunner analyzes the postbacks received from Apple for the SKAN dashboard. If you've [configured your app to send postbacks to Linkrunner](/features/skadnetwork-integration#configure-postback-copies-to-linkrunner), data will be shown on the SKAN dashboard. However, without SKAN configuration on Linkrunner, the analysis of conversion values cannot be done. You'll see raw conversion value numbers, but won't have the event mapping that explains what those numbers mean. @@ -101,7 +101,7 @@ You can select multiple channels to compare performance across networks. The SKAN dashboard shows data via the postbacks received from Apple. Setting up conversion values alone is not enough. - Make sure you've completed the [postback configuration to send data to Linkrunner](/features/skadnetwork-integration#configuring-postback-copies-to-linkrunner). Without this setup, Apple won't send postbacks to Linkrunner, and the dashboard will remain empty. + Make sure you've completed the [postback configuration to send data to Linkrunner](/features/skadnetwork-integration#configure-postback-copies-to-linkrunner). Without this setup, Apple won't send postbacks to Linkrunner, and the dashboard will remain empty. Once postback copies are configured correctly, data will start appearing in the dashboard as Apple sends postbacks (typically 1-3 days after installs occur). diff --git a/sdk/android.mdx b/sdk/android.mdx index f576c5c..22813cb 100644 --- a/sdk/android.mdx +++ b/sdk/android.mdx @@ -370,7 +370,7 @@ private fun setIntegrationData() { ## Revenue Tracking - Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. + Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. ### Capturing Payments @@ -473,7 +473,7 @@ private fun removePayment() { ## Tracking Custom Events - Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. + Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. Track custom events in your app: @@ -543,7 +543,7 @@ private fun trackPurchaseEvent() { If you are tracking Ecommerce events to sync with Meta Catalog Sales, you must format your `eventData` to include Meta's required fields. **You also need to map your custom event to the standard commerce event in the Linkrunner Dashboard.** -For detailed explanations of the required fields like `content_ids`, `contents`, and `value`, refer to our [Meta Commerce Manager documentation](/ecommerce-manager/meta-commerce-manager#understanding-event_data). +For detailed explanations of the required fields like `content_ids`, `contents`, and `value`, refer to our [Meta Commerce Manager documentation](/ecommerce-manager/meta-commerce-manager#understanding-event-data). ### Add To Cart Example @@ -680,7 +680,7 @@ When AAID collection is disabled, the SDK will not collect or send the Google Ad ### Removing AD_ID Permission -If you want to completely remove the `AD_ID` permission from your app's manifest (for example, for apps targeting children), you can override the SDK's permission declaration in your `AndroidManifest.xml`. For detailed instructions on revoking the AD_ID permission, including Google's policy requirements for apps targeting children and Android 13+ (API 33+), see the [Revoking the AD_ID Permission](#step-4-revoking-the-ad_id-permission-optional) section above. +If you want to completely remove the `AD_ID` permission from your app's manifest (for example, for apps targeting children), you can override the SDK's permission declaration in your `AndroidManifest.xml`. For detailed instructions on revoking the AD_ID permission, including Google's policy requirements for apps targeting children and Android 13+ (API 33+), see the [Revoking the AD_ID Permission](#step-5%3A-revoking-the-ad-id-permission-optional) section above. ## Uninstall Tracking @@ -933,7 +933,7 @@ class MainActivity : AppCompatActivity() { > Validate your setup end-to-end - + Configure deep links for your app diff --git a/sdk/capacitor.mdx b/sdk/capacitor.mdx index cc7ea12..8ae4a29 100644 --- a/sdk/capacitor.mdx +++ b/sdk/capacitor.mdx @@ -56,7 +56,7 @@ For complete SKAdNetwork integration details, see the [SKAdNetwork Integration G For Android apps, the SDK provides backup rules to exclude Shared Preferences data from backup. This prevents the retention of the Linkrunner install ID during reinstallation, ensuring accurate detection of new installs and re-installs. -For detailed backup configuration instructions, please refer to the [Android SDK Backup Configuration](/sdk/android#backup-configuration). +For detailed backup configuration instructions, please refer to the [Android SDK Backup Configuration](/sdk/android#step-3%3A-backup-configuration). ### Step 6: Android Kotlin Configuration @@ -263,7 +263,7 @@ This method allows you to connect user identities across different analytics and ## Revenue Tracking - Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. + Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. ### Capture Payment @@ -330,7 +330,7 @@ Note: At least one of `paymentId` or `userId` must be provided when calling `rem ## Tracking Custom Events - Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. + Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. Track custom events in your app: diff --git a/sdk/cordova.mdx b/sdk/cordova.mdx index d05db26..a92a245 100644 --- a/sdk/cordova.mdx +++ b/sdk/cordova.mdx @@ -71,7 +71,7 @@ The `cordova plugin add` command automatically configures the following native s For complete SKAdNetwork integration details, see the [SKAdNetwork Integration Guide](/features/skadnetwork-integration). -For detailed Android backup configuration instructions, refer to the [Android SDK Backup Configuration](/sdk/android#backup-configuration). +For detailed Android backup configuration instructions, refer to the [Android SDK Backup Configuration](/sdk/android#step-3%3A-backup-configuration). ## Initialization (Required) To initialize the Linkrunner SDK, add this code inside the `deviceready` event. No import or require is needed — `linkrunner` is globally available after plugin installation. @@ -256,7 +256,7 @@ This method allows you to connect user identities across different analytics and ## Revenue Tracking - Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. + Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. ### Capture Payment @@ -336,7 +336,7 @@ Note: At least one of `paymentId` or `userId` must be provided when calling `rem If you are tracking Ecommerce events to sync with Meta Catalog Sales, you must format your `eventData` to include Meta's required fields. **You also need to map your custom event to the standard commerce event in the Linkrunner Dashboard.** -For detailed explanations of the required fields like `content_ids`, `contents`, and `value`, refer to our [Meta Commerce Manager documentation](/ecommerce-manager/meta-commerce-manager#understanding-event_data). +For detailed explanations of the required fields like `content_ids`, `contents`, and `value`, refer to our [Meta Commerce Manager documentation](/ecommerce-manager/meta-commerce-manager#understanding-event-data). ### Add To Cart Example @@ -432,7 +432,7 @@ linkrunner.capturePayment({ ## Tracking Custom Events - Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. + Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. Track custom events in your app: diff --git a/sdk/expo.mdx b/sdk/expo.mdx index da58edb..7e94e91 100644 --- a/sdk/expo.mdx +++ b/sdk/expo.mdx @@ -73,7 +73,7 @@ The `expo-linkrunner` package is a config plugin that automatically configures y For Android apps, the SDK provides backup rules to exclude Shared Preferences data from backup. This prevents the retention of the Linkrunner install ID during reinstallation, ensuring accurate detection of new installs and re-installs. -For detailed backup configuration instructions, please refer to the [Android SDK Backup Configuration](/sdk/android/installation#backup-configuration). +For detailed backup configuration instructions, please refer to the [Android SDK Backup Configuration](/sdk/android#step-3%3A-backup-configuration). ## SDK Usage @@ -139,7 +139,7 @@ Starting with version 3.0.0, the Expo SDK has been redesigned to use a new archi > Validate your setup end-to-end - + Configure deep links for your app diff --git a/sdk/flutter.mdx b/sdk/flutter.mdx index 32e1cfc..b7b56f9 100644 --- a/sdk/flutter.mdx +++ b/sdk/flutter.mdx @@ -103,7 +103,7 @@ For more information, see [Google Play Services documentation](https://developer For Android apps, the SDK provides backup rules to exclude Shared Preferences data from backup. This prevents the retention of the Linkrunner install ID during reinstallation, ensuring accurate detection of new installs and re-installs. -For detailed backup configuration instructions, please refer to the [Android SDK Backup Configuration](/sdk/android/installation#backup-configuration). +For detailed backup configuration instructions, please refer to the [Android SDK Backup Configuration](/sdk/android#step-3%3A-backup-configuration). #### Encrypted SharedPreferences @@ -396,7 +396,7 @@ This method allows you to connect user identities across different analytics and ## Revenue Tracking - Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. + Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. ### Capturing Payments @@ -493,7 +493,7 @@ Note: Either `paymentId` or `userId` must be provided when calling `removePaymen If you are tracking Ecommerce events to sync with Meta Catalog Sales, you must format your `eventData` to include Meta's required fields. **You also need to map your custom event to the standard commerce event in the Linkrunner Dashboard.** -For detailed explanations of the required fields like `content_ids`, `contents`, and `value`, refer to our [Meta Commerce Manager documentation](/ecommerce-manager/meta-commerce-manager#understanding-event_data). +For detailed explanations of the required fields like `content_ids`, `contents`, and `value`, refer to our [Meta Commerce Manager documentation](/ecommerce-manager/meta-commerce-manager#understanding-event-data). ### Add To Cart Example @@ -600,7 +600,7 @@ Future capturePurchase() async { ## Tracking Custom Events - Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. + Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. Track custom events in your app: @@ -955,7 +955,7 @@ class _HomeScreenState extends State { > Validate your setup end-to-end - + Configure deep links for your app diff --git a/sdk/ios.mdx b/sdk/ios.mdx index 8038ccc..802563f 100644 --- a/sdk/ios.mdx +++ b/sdk/ios.mdx @@ -76,7 +76,7 @@ To enable SKAdNetwork postback copies to be sent to Linkrunner, add the followin https://linkrunner-skan.com ``` -For complete SKAdNetwork integration details, see the [SKAdNetwork Integration Guide](/sdk/skadnetwork-integration). +For complete SKAdNetwork integration details, see the [SKAdNetwork Integration Guide](/features/skadnetwork-integration). #### Network Access @@ -314,7 +314,7 @@ func setAdditionalData() async { ## Revenue Tracking - Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. + Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. ### Capturing Payments @@ -401,7 +401,7 @@ func removePayment() async { ## Tracking Custom Events - Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. + Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. Track custom events in your app: @@ -457,7 +457,7 @@ func trackPurchaseEvent() async { If you are tracking Ecommerce events to sync with Meta Catalog Sales, you must format your `eventData` to include Meta's required fields. **You also need to map your custom event to the standard commerce event in the Linkrunner Dashboard.** -For detailed explanations of the required fields like `content_ids`, `contents`, and `value`, refer to our [Meta Commerce Manager documentation](/ecommerce-manager/meta-commerce-manager#understanding-event_data). +For detailed explanations of the required fields like `content_ids`, `contents`, and `value`, refer to our [Meta Commerce Manager documentation](/ecommerce-manager/meta-commerce-manager#understanding-event-data). ### Add To Cart Example @@ -782,7 +782,7 @@ struct ContentView: View { > Validate your setup end-to-end - + Configure deep links for your app diff --git a/sdk/react-native.mdx b/sdk/react-native.mdx index 2ef6b2c..1dcbc62 100644 --- a/sdk/react-native.mdx +++ b/sdk/react-native.mdx @@ -50,7 +50,7 @@ For complete SKAdNetwork integration details, see the [SKAdNetwork Integration G For Android apps, the SDK provides backup rules to exclude Shared Preferences data from backup. This prevents the retention of the Linkrunner install ID during reinstallation, ensuring accurate detection of new installs and re-installs. -For detailed backup configuration instructions, please refer to the [Android SDK Backup Configuration](/sdk/android#backup-configuration). +For detailed backup configuration instructions, please refer to the [Android SDK Backup Configuration](/sdk/android#step-3%3A-backup-configuration). ### Step 5: Encrypted SharedPreferences (Android) @@ -252,7 +252,7 @@ This method allows you to connect user identities across different analytics and ## Revenue Tracking - Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. + Revenue data is only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before capturing payments. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. ### Capture Payment @@ -336,7 +336,7 @@ Note: Either `paymentId` or `userId` must be provided when calling `removePaymen If you are tracking Ecommerce events to sync with Meta Catalog Sales, you must format your `eventData` to include Meta's required fields. **You also need to map your custom event to the standard commerce event in the Linkrunner Dashboard.** -For detailed explanations of the required fields like `content_ids`, `contents`, and `value`, refer to our [Meta Commerce Manager documentation](/ecommerce-manager/meta-commerce-manager#understanding-event_data). +For detailed explanations of the required fields like `content_ids`, `contents`, and `value`, refer to our [Meta Commerce Manager documentation](/ecommerce-manager/meta-commerce-manager#understanding-event-data). ### Add To Cart Example @@ -441,7 +441,7 @@ const capturePurchase = async () => { ## Tracking Custom Events - Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-registration) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. + Events are only stored and displayed for attributed users. Make sure you have implemented the [`.signup`](#user-identification-required) function before tracking events. To attribute a test user, follow the [Integration Testing](/testing/integration-testing) guide. You can verify your events are being captured on the [Events Settings](https://dashboard.linkrunner.io/dashboard/settings/events) page. For capturing revenue, it is recommended to use the [`.capturePayment`](#revenue-tracking) method instead of `.trackEvent`. Track custom events in your app: @@ -670,7 +670,7 @@ Connect APNs with Linkrunner > Validate your setup end-to-end - + Configure deep links for your app diff --git a/testing/integration-testing.mdx b/testing/integration-testing.mdx index d6fdec1..775aee6 100644 --- a/testing/integration-testing.mdx +++ b/testing/integration-testing.mdx @@ -171,7 +171,7 @@ After verifying basic attribution (click → install → signup), you can test r ### Prerequisites -- Complete the [basic test flow](#test-flow-click--install--signup) above first (click → install → signup). +- Complete the [basic test flow](#test-flow-click-%E2%86%92-install-%E2%86%92-signup) above first (click → install → signup). - [Deep linking](/features/deep-linking-setup) is configured in your app. - The `handleDeepLink` function from the Linkrunner SDK is implemented. Refer to your SDK guide ([React Native](/sdk/react-native#handle-deeplink), [Flutter](/sdk/flutter#handle-deeplink), [Android](/sdk/android#handle-deeplink), [iOS](/sdk/ios#handle-deeplink)) for details. - Android backup configuration is set up for reinstall detection on Android. Refer to your SDK guide ([React Native](/sdk/react-native#step-4%3A-android-backup-configuration), [Flutter](/sdk/flutter#backup-configuration), [Android](/sdk/android#step-3%3A-backup-configuration)) for details. @@ -180,7 +180,7 @@ After verifying basic attribution (click → install → signup), you can test r This test verifies that a returning user opening the app via a deep link is attributed to a reengagement campaign. -1. **Create a campaign and install the app:** Follow the [basic test flow](#test-flow-click--install--signup) above to create a campaign, click the link, and install the app. +1. **Create a campaign and install the app:** Follow the [basic test flow](#test-flow-click-%E2%86%92-install-%E2%86%92-signup) above to create a campaign, click the link, and install the app. 2. **Create a reengagement campaign:** Create a new campaign in the dashboard. This will be your reengagement campaign. - [Create Campaign](https://dashboard.linkrunner.io/dashboard?m=create-campaign) @@ -194,7 +194,7 @@ This test verifies that a returning user opening the app via a deep link is attr This test verifies that a user who uninstalls and reinstalls the app is attributed as a reattribution. -1. **Create a campaign and install the app:** Follow the [basic test flow](#test-flow-click--install--signup) above to create a campaign, click the link, and install the app. +1. **Create a campaign and install the app:** Follow the [basic test flow](#test-flow-click-%E2%86%92-install-%E2%86%92-signup) above to create a campaign, click the link, and install the app. 2. **Create a reengagement campaign:** Create a new campaign in the dashboard. - [Create Campaign](https://dashboard.linkrunner.io/dashboard?m=create-campaign)