> ## Documentation Index
> Fetch the complete documentation index at: https://docs.upstackdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# AppLovin Axon

> Send conversion events to AppLovin's Axon Conversions API for mobile and web advertising attribution — improving campaign optimization and match quality.

<Note>
  **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
</Note>

## What it does

AppLovin's Axon Conversions API will be the server-side counterpart to the Axon Pixel. Today, Upstack tracks AppLovin through the **Axon Pixel (browser tag)** only: Upstack captures storefront events — page views, product views, add-to-carts, checkouts, and purchases — and loads the Axon pixel on your storefront with a shared `aleid` click identifier.

<Note>
  AppLovin's Conversions API is not yet generally available. The Conversions API fields (access token, Enable Conversion API toggle) are hidden in destination setup — you only need your **Pixel ID (Event Key)** today. The **Enable Browser Pixel** checkbox on the destination loads the Axon pixel; keep it checked. See [How to configure the AppLovin destination](/destinations/catalog/applovin/how-to-configure-applovin-destination-in-upstack-data).
</Note>

The Conversions API path improves campaign optimization, audience modeling, and attribution accuracy — server-side events bypass ad blockers, ITP, and cookie limits and carry hashed customer data plus the `aleid` click identifier — which is why it is on the roadmap and already wired into this documentation.

## How it works

The Upstack Pixel captures events in the browser and forwards each event to Upstack's edge infrastructure, where it is hashed and enriched with identity and click-ID data. Billboard-side, Upstack loads the Axon Pixel and reports the events to AppLovin with the `aleid` click ID attached.

When AppLovin's Conversions API becomes generally available, Upstack will also send each event to the Axon Conversions API as a server-side event with a shared `dedupe_id`, so server and browser events deduplicate against the same Pixel ID and no conversion is double-counted. PII (`email`, `phone`) is auto-hashed by Axon via SHA-256, and Upstack pre-hashes for consistency.

<Note>
  **Critical (when the Conversions API is enabled):** The `dedupe_id` field is REQUIRED for all server-side events. Events without a `dedupe_id` are rejected by the API. Additionally, if any single event in a batch is invalid, the entire batch is dropped with HTTP 400.
</Note>

## Setup guides

<CardGroup cols={2}>
  <Card title="Onboarding guide" icon="route" href="/destinations/catalog/applovin/complete-how-to-guide-for-onboarding-applovin-in-upstack-data">
    End-to-end walkthrough for connecting AppLovin to Upstack Data.
  </Card>

  <Card title="Configure destination" icon="sliders" href="/destinations/catalog/applovin/how-to-configure-applovin-destination-in-upstack-data">
    Configure the AppLovin Axon destination inside Upstack Data.
  </Card>

  <Card title="Find Pixel ID" icon="magnifying-glass" href="/destinations/catalog/applovin/how-to-find-applovin-pixel-id">
    Locate your Axon Pixel ID (Event Key) in the AppLovin dashboard.
  </Card>

  <Card title="Generate API token" icon="key" href="/destinations/catalog/applovin/how-to-generate-applovin-conversion-api-token">
    Generate the Conversions API access token Upstack uses to send events.
  </Card>
</CardGroup>

## Event mapping

Upstack maps storefront events to AppLovin Axon standard events automatically:

| Upstack event      | AppLovin event     | Key parameters                                        | Notes                        |
| ------------------ | ------------------ | ----------------------------------------------------- | ---------------------------- |
| `PageView`         | `page_view`        | `url`, `referrer`                                     | Every page navigation        |
| `ViewContent`      | `view_item`        | `items`, `value`, `currency`                          | Product detail page          |
| `AddToCart`        | `add_to_cart`      | `items`, `value`, `currency`                          | `quantity` required per item |
| `RemoveFromCart`   | `remove_from_cart` | `items`, `value`, `currency`                          | `quantity` required per item |
| `InitiateCheckout` | `begin_checkout`   | `items`, `value`, `currency`                          | All fields required          |
| `AddPaymentInfo`   | `add_payment_info` | `payment_type`, `value`, `currency`                   | Recommended event            |
| `Purchase`         | `purchase`         | `transaction_id`, `value`, `tax`, `shipping`, `items` | All fields required          |
| `Search`           | `search`           | `search_term`                                         | `search_term` required       |
| `Lead`             | `generate_lead`    | `value`, `currency`                                   | Both fields required         |
| `SignUp`           | `sign_up`          | `method`                                              | `method` recommended         |
| `Subscribe`        | `subscribe`        | `value`, `currency`                                   | Recommended event            |

Every event includes user data parameters (`email`, `phone`, `client_id`) when available. AppLovin click IDs (`aleid`) captured by the Upstack Pixel are included for deterministic matching. User matching requires at least one identifier: `aleid`, `axwrt`, `client_id`, `email`, `phone`, or `user_id`.

## FAQ

<AccordionGroup>
  <Accordion title="How do I know events are reaching AppLovin?">
    Open the AppLovin Axon Dashboard, navigate to your pixel's Events section, and check for recent events. Server-side events appear within 5–10 minutes of storefront activity. Upstack also surfaces delivery status inside the destination settings.
  </Accordion>

  <Accordion title="Will I see duplicate conversions if I run both the Axon Pixel and the Conversions API?">
    No — as long as the Pixel ID in Upstack matches the Pixel ID firing in your storefront's Axon browser Pixel. Upstack sends a shared `dedupe_id` on every server-side event, and AppLovin's deduplication logic matches events by `dedupe_id` and keeps only one.
  </Accordion>

  <Accordion title="What if my event match rate is low?">
    AppLovin's match rate depends on how much identity data each event carries. Common causes of low match quality:

    * **Missing `aleid`** — AppLovin ads should link directly to your storefront so the click ID lands in the URL and is captured by the Upstack Pixel.
    * **Anonymous visitors** — events from visitors without email or phone have fewer keys to match against. Match rates improve as more identified customers convert.
    * **Missing checkout fields** — make sure your Shopify checkout collects email and phone; both are strong server-side match keys.
  </Accordion>

  <Accordion title="What permissions does the Conversions API token need?">
    The AppLovin Conversions API token is generated from your Axon Dashboard under Account → General → Keys. Upstack only needs permission to send events — no management or spending permissions are required.
  </Accordion>

  <Accordion title="Why are my events returning HTTP 400?">
    A 400 response means the batch was rejected. AppLovin drops the **entire batch** if any single event is invalid. Common causes:

    * **Missing `dedupe_id`** — this field is REQUIRED on every server-side event
    * **Missing user identifier** — at least one of `aleid`, `axwrt`, `client_id`, `email`, `phone`, or `user_id` must be provided
    * **Invalid field format** — check that `event_time` is in milliseconds, `currency` is ISO 4217, etc.
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Events not appearing in AppLovin Dashboard">
    If events aren't appearing after 10 minutes of confirmed store traffic, check the basics first.

    **Steps to fix:**

    1. Go to **Integrations → Destinations → AppLovin**
    2. Verify the **Pixel ID** and **Access Token** are correct (no extra spaces or truncated characters)
    3. Confirm the destination status is Active (green)
    4. If the token was revoked or expired, generate a new one in the Axon Dashboard and update the destination
  </Accordion>

  <Accordion title="Batch failures (HTTP 400)">
    AppLovin's batch API drops the entire batch if any single event is invalid.

    **Steps to fix:**

    1. Check CloudWatch logs for the specific validation error message
    2. Verify all events include a `dedupe_id` (REQUIRED)
    3. Verify all events include at least one user identifier
    4. Check for malformed field values (timestamps, currencies, item arrays)
    5. If one event type consistently fails, review its field mapping
  </Accordion>

  <Accordion title="Invalid API key (HTTP 401)">
    The Conversions API key was rejected.

    **Steps to fix:**

    1. Log into the AppLovin Dashboard
    2. Navigate to Account → General → Keys
    3. Generate a new Conversions API key
    4. Update the key in your Upstack destination settings
    5. Wait 5 minutes for the new key to propagate
  </Accordion>
</AccordionGroup>

<Note>
  For additional troubleshooting beyond AppLovin-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/destination-shows-disconnected).
</Note>

## Related

<CardGroup cols={2}>
  <Card title="Conversion API forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding">
    How Upstack Signal forwards events to ad platforms via server-to-server APIs.
  </Card>

  <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution">
    How Upstack matches anonymous visitors to known customers for higher match rates.
  </Card>

  <Card title="Meta CAPI destination" icon="meta" href="/destinations/catalog/meta-capi">
    Set up Meta's Conversions API as another server-side destination alongside AppLovin.
  </Card>

  <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected">
    End-to-end diagnostic guide when events aren't arriving at any destination.
  </Card>
</CardGroup>
