AppLovin (Axon) Conversion API

Datafly Signal delivers web conversion events to AppLovin server-to-server using the Axon Conversion API (CAPI). This complements the Axon Pixel with reliable server-side delivery that is not affected by ad blockers or browser tracking prevention, improving campaign optimisation and attribution.

Prerequisites

Before configuring AppLovin in Signal, you need an Axon Ads Manager account with an active pixel, plus two keys from the Axon dashboard.

Step 1: Access the Axon Ads Manager

  1. Sign in to the Axon Ads Manager dashboard.
  2. Make sure your web campaign and pixel are set up. AppLovin recommends running the Conversion API alongside the Axon Pixel for optimal performance.

Step 2: Get Your Keys

  1. In the Axon dashboard, open the Keys section.
  2. Copy your Event Key (the pixel identifier).
  3. Copy your Conversion API Key (the secret used to authenticate API requests).
⚠️

Treat the Conversion API Key as a secret. Store it securely and never expose it client-side.

Configure in Signal

Configuration Fields

FieldRequiredDescription
event_keyYesYour Axon Event Key (pixel identifier). Sent as the pixel_id query parameter.
conversion_api_keyYesYour Conversion API Key. Sent in the Authorization header.

Management UI Setup

Add the integration

Go to Integrations > Add Integration > AppLovin.

Choose a variant

Select the Retail preset for the full e-commerce funnel (page views, product views, cart, checkout, search, leads, and purchases).

Enter your keys

Paste your event_key and conversion_api_key.

Choose the consent categories that gate advertising (typically marketing or advertising).

Save

Click Save. Signal begins delivering events to the Axon Conversion API.

API Endpoint

POST https://b.applovin.com/v1/event?pixel_id={event_key}
Authorization: {conversion_api_key}
Content-Type: application/json

Events are sent as a JSON object with an events array (up to 100 events per request).

Identity Signals

AppLovin matches server events to users using several signals. The more you provide, the better the match rate. Signal requires at least one identity signal per event.

Automatic Signals

Sent automatically by Signal — no configuration needed:

SignalFieldDescription
axwrtuser_data.axwrtThe Axon Pixel first-party cookie value. Captured by Signal and forwarded for high-accuracy matching.
aleiduser_data.aleidThe AppLovin click ID, extracted automatically from the aleid URL parameter.
client_iduser_data.client_idSet to the Datafly anonymous_id — a stable cross-session identifier.
client_ip_addressuser_data.client_ip_addressVisitor’s IP address, forwarded from the original request.
client_user_agentuser_data.client_user_agentVisitor’s User-Agent string, forwarded from the original request.

User-Provided Signals (Hashed)

When a user is identified via datafly.identify(), these fields are SHA-256 hashed by Signal before delivery:

SignalHashingDescription
emailSHA-256, trimmed, lowercaseUser’s email address
phoneSHA-256, E.164 normalisedUser’s phone number

All PII hashing is performed server-side by Signal before the data leaves your infrastructure. Raw PII is never sent to AppLovin. AppLovin also accepts raw values and hashes them server-side, but Signal hashes first so you keep raw data inside your own systems.

How to Send User Data

Call datafly.identify() when a user logs in, registers, or submits a form:

datafly.identify("user-123", {
  email: "jane.doe@example.com",
  phone: "+44 7700 900123"
});

Event Mapping

Retail preset

Signal eventAppLovin event
pagepage_view
Products Searchedsearch
Product Viewedview_item
Product Addedadd_to_cart
Product Removedremove_from_cart
Cart Viewedview_cart
Checkout Startedbegin_checkout
Payment Info Enteredadd_payment_info
Order Completedpurchase
Signed Upsign_up
Logged Inlogin
Lead Generatedgenerate_lead

To customise, edit the integration’s Field Mappings in the Management UI.

Example: Purchase Event

Datafly.js call:

datafly.track("Order Completed", {
  order_id: "ORD-001",
  revenue: 129.99,
  currency: "USD",
  tax: 8.00,
  shipping: 5.00,
  products: [
    { product_id: "SKU-A", price: 49.99, quantity: 2 },
    { product_id: "SKU-B", price: 30.01, quantity: 1 }
  ]
});

AppLovin CAPI payload sent by Signal:

{
  "events": [
    {
      "name": "purchase",
      "event_time": 1717660800000,
      "event_source_url": "https://example.com/checkout/confirmation",
      "dedupe_id": "evt_abc123def456",
      "user_data": {
        "axwrt": "axwrt-cookie-value",
        "aleid": "click-id-from-url",
        "client_id": "a1b2c3d4-anon-id",
        "client_ip_address": "203.0.113.50",
        "client_user_agent": "Mozilla/5.0 ...",
        "email": "5e8...hashed",
        "phone": "9f2...hashed",
        "esi": "web"
      },
      "data": {
        "transaction_id": "ORD-001",
        "value": 129.99,
        "currency": "USD",
        "tax": 8.00,
        "shipping": 5.00,
        "items": [
          { "item_id": "SKU-A", "price": 49.99, "quantity": 2 },
          { "item_id": "SKU-B", "price": 30.01, "quantity": 1 }
        ]
      }
    }
  ]
}

event_time is the Unix epoch in milliseconds for the Axon Conversion API.

Testing Your Integration

Trigger a test event

Browse your site with the integration live (e.g. view a product, add to cart, complete a test purchase).

Check the Axon dashboard

In the Axon Ads Manager, open the event activity / diagnostics view for your pixel. Server-side events should appear within a short delay.

Verify the response

A 200 response means all events in the batch were accepted. Use Signal’s event debugger to inspect the exact payload sent.

Deduplication

If you run both the Axon Pixel client-side and Signal server-side during a migration, deduplicate to avoid double-counting. Signal sends a unique dedupe_id with every event; pass the same value to the Axon Pixel so AppLovin can match and dedupe the pair.

Once server-side events are arriving correctly, you can remove the client-side Axon Pixel entirely. This eliminates a client-side tag, improves page performance, and removes the deduplication requirement.

Troubleshooting

ProblemSolution
401 authentication failedCheck the Conversion API Key in the Authorization header and the Event Key in the pixel_id query parameter. Regenerate keys in the Axon dashboard if needed.
400 request error (batch dropped)A required field is missing or malformed. Ensure each event has name, event_time, and event_source_url, and that purchase events include currency and value. Review the payload in Signal’s event debugger.
Events not appearingConfirm at least one identity signal is present (axwrt, aleid, email, phone, or client_id). Events with no identity cannot be matched.
Low match rateCapture the Axon Pixel cookie (axwrt) and the aleid click ID, and pass email/phone via datafly.identify().

Rate Limits

The Axon Conversion API accepts up to 100 events per request. Signal batches events automatically when batching is enabled for the integration.