Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ad-networks/meta-ads.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion ad-networks/meta-web-to-app.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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)

<Tip>
Expand Down
8 changes: 4 additions & 4 deletions ad-networks/tiktok.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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`)
Expand Down Expand Up @@ -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)).

</Accordion>

Expand All @@ -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).

Expand Down
4 changes: 2 additions & 2 deletions api-reference/event-capture.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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.

<Note>
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.
</Note>

## Base URL
Expand Down Expand Up @@ -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
{
Expand Down
4 changes: 2 additions & 2 deletions api-reference/revenue-tracking.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ icon: "money-bill"
---

<Note>
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.
</Note>

## Base URL
Expand Down Expand Up @@ -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
{
Expand Down
2 changes: 1 addition & 1 deletion features/deep-linking-setup.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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.

---
Expand Down
10 changes: 5 additions & 5 deletions features/deferred-deep-linking.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -49,27 +49,27 @@ Call `getAttributionData()` when you need attribution data, check for the `deepl
<Tabs>
<Tab title="Android">

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

</Tab>
<Tab title="iOS">

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

</Tab>
<Tab title="React Native">

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

</Tab>
<Tab title="Flutter">

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

</Tab>
<Tab title="Expo">

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

</Tab>
</Tabs>
Expand Down
2 changes: 1 addition & 1 deletion features/mcp.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions features/referral-codes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -61,25 +61,25 @@ Call `getAttributionData()` early in your app lifecycle, then parse the `deeplin
<Tab title="Android">
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)

</Tab>
<Tab title="iOS">
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)

</Tab>
<Tab title="React Native">
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)

</Tab>
<Tab title="Flutter">
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)

</Tab>
</Tabs>
Expand Down
6 changes: 3 additions & 3 deletions features/remarketing-campaigns.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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

Expand All @@ -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.
8. Review campaign settings and launch.
2 changes: 1 addition & 1 deletion features/skadnetwork-conversion-values.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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).
4 changes: 2 additions & 2 deletions features/skan-dashboard/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ You can select multiple channels to compare performance across networks.
<Accordion title="Can I see SKAN dashboard even if SKAN configuration is not done on Linkrunner?">
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.

Expand All @@ -101,7 +101,7 @@ You can select multiple channels to compare performance across networks.
<Accordion title="I have set up conversion values but still there is no data on the SKAN dashboard">
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).
</Accordion>
Expand Down
10 changes: 5 additions & 5 deletions sdk/android.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ private fun setIntegrationData() {
## Revenue Tracking

<Note>
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.
</Note>

### Capturing Payments
Expand Down Expand Up @@ -473,7 +473,7 @@ private fun removePayment() {
## Tracking Custom Events

<Note>
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`.
</Note>

Track custom events in your app:
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -933,7 +933,7 @@ class MainActivity : AppCompatActivity() {
>
Validate your setup end-to-end
</Card>
<Card title="Set Up Deep Linking" icon="link" href="/features/deep-linking">
<Card title="Set Up Deep Linking" icon="link" href="/features/deep-linking-setup">
Configure deep links for your app
</Card>
</CardGroup>
Expand Down
Loading