> ## 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 is the server-side counterpart to the Axon Pixel. Upstack Signal forwards storefront events — page views, product views, add-to-carts, checkouts, and purchases — directly to AppLovin's servers, bypassing browser restrictions like ad blockers, ITP, and cookie limits.

Server-side delivery gives AppLovin's algorithm a fuller picture of the conversions your ads actually drove, which improves campaign optimization, audience modeling, and attribution accuracy. Match rates from server-side events are consistently higher than browser-only tracking because each event carries hashed customer data and the `aleid` click identifier when available.

<Note>
  AppLovin uses **token-based auth** instead of OAuth. You'll paste a Pixel ID (Event Key) and a Conversions API access token into the Upstack destination — there is no OAuth handshake to step through.
</Note>

## How it works

Upstack runs as a dual-tracking layer alongside the Axon Pixel. The Upstack Pixel captures events in the browser and forwards each event to Upstack's edge infrastructure, where it is hashed, enriched with identity and click-ID data, and sent to the Axon Conversions API as a server-side event with a shared `dedupe_id`.

AppLovin deduplicates server events against matching browser Pixel events using that `dedupe_id`, so you do not double-count conversions as long as both sources use the same Pixel ID. PII (`email`, `phone`) is auto-hashed by Axon via SHA-256, though Upstack pre-hashes for consistency.

<Warning>
  **Critical:** 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.
</Warning>

## Setup guides

<CardGroup cols={2}>
  <Card title="Onboarding guide" icon="route" href="/guides/applovin-ads/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="/guides/applovin-ads/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="/guides/applovin-ads/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="/guides/applovin-ads/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/events-not-reaching-destination).
</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/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/events-not-reaching-destination">
    End-to-end diagnostic guide when events aren't arriving at any destination.
  </Card>
</CardGroup>
