Ad Platforms ยท AppLovin
Last Updated: August 11, 2026
UTM templates
The verbatim UTM template strings Tierra uses across AppLovin Ads (formerly Axon) clients, plus the rules for hierarchy, supported macros, and cutover timing. Read alongside the playbook for the platform model and vocabulary. Attribution windows and dashboard-vs-API reads live in reporting and tracking; the API and automation in dev.
Verify these against the client's downstream stack before applying. The parenthetical dates mark when each note was last confirmed.
Supported URL macros
AppLovin supports a limited, documented set of dynamic URL macros (AppLovin's tracking URL macros doc). The complete supported list is the seven below. Treat anything not on it as unsupported.
| Macro | Expands to | Notes |
|---|---|---|
{CAMPAIGN_NAME} |
Campaign name string | Survives renames poorly; prefer the ID for reporting. |
{CAMPAIGN_ID} |
Hashed campaign identifier | Stable across renames. A hashed string, not numeric. |
{CREATIVE_SET} |
Creative set name | Same caveat as CAMPAIGN_NAME. |
{CREATIVE_SET_ID} |
Hashed creative set identifier | Preferred for utm_content. Stable across renames. The value is a hashed string, not a numeric integer. |
{AD_ID} |
Not supported as a URL macro | Not a real macro; it resolves to nothing. Ad-level attribution has to come from the creative-set ID plus asset-level data-warehouse data. |
{AD_TYPE} |
Ad type identifier | Available in the Northbeam template. |
{AD_SIZE} |
Ad size identifier | Available in the Northbeam template. |
{EVENT_ID} |
Unique ID of the ad request that showed the ad | The nearest ad-level grain that is supported; also usable for affiliate-tracking integrations. |
Device-level macros are not supported. Other platforms expose device type or OS at click level; AppLovin doesn't.
Macros resolve at serve time. AppLovin fills each macro in at click and serve time, not when you build the URL. So never hard-substitute a literal value into a macro slot while writing a template. Leave {CREATIVE_SET_ID} as the macro; don't paste in one set's actual ID. A hard-coded value freezes every ad to that one value and defeats the macro's purpose. AppLovin also auto-tags its own appended UTMs as utm_source=axon and utm_medium=display, which won't always match the utm_medium=paid you set on the template, and a few macros don't resolve on every placement. For both reasons, verify the parameters on a real click, not on the template string (see the pre-launch checklist).
Redirects must preserve AppLovin's auto-appended UTMs and the aleid/alart click params. AppLovin appends additional UTMs beyond what you specify, and more importantly, aleid and alart are the load-bearing query params that connect each page load and conversion back to the originating click. Affiliate, tracking, and rotator redirects must not strip any of them. Dropping aleid/alart means conversions can't attribute (high bounce, minimal downfunnel).
Hashed IDs in the API and in UTMs: the {CREATIVE_SET_ID} tracking-URL macro is a hashed string. The Reporting API creative_set_id column is documented only as "does not change if the name changes", and its format is unspecified, so don't assert it's numeric. For API-to-UI joins, use the Campaign Management API's hashed_id sibling field. Detail in dev.
Template families
1. Plain (default)
Use this when no downstream multi-touch attribution (MTA) platform requires custom params. The utm_source=axon value is the accepted source string (the platform still recognizes axon on the URL even after the rebrand).
Variant: one client uses utm_source=1992-AppLovin instead of axon. That's the client's internal convention (per a 2025-12-29 tracking-correction note). Use the client's existing convention; don't switch mid-account.
2. Northbeam (one client's production string, 2026-03-06)
Locked production template:
?utm_campaign={CAMPAIGN_NAME}&utm_content={CREATIVE_SET}&utm_medium=paid&utm_source=axon&nb_platform=axon&nbt=nb:axon::{CAMPAIGN_ID}:{CREATIVE_SET_ID}:{AD_ID}&aff_click_id={EVENT_ID}&aff_id=<your Northbeam affiliate id>&aff_sub={AD_TYPE}~{AD_SIZE}&aff_sub2={CREATIVE_SET_ID}&aff_sub5={CAMPAIGN_NAME}&campaign_id=<your Northbeam campaign id>&hostNameId=<your Northbeam host id>
Component breakdown:
- The standard
utm_*keys (utm_campaign,utm_content,utm_medium=paid,utm_source=axon) are required (see Required keys below). nb_platform=axon: Northbeam's platform identifier.nbt=nb:axon::{CAMPAIGN_ID}:{CREATIVE_SET_ID}:{AD_ID}: Northbeam's tracking template. Note that{AD_ID}isn't a supported AppLovin URL macro, so that slot doesn't resolve; it stays literal or empty. Ad-level grain isn't available here.- The
aff_*params: HasOffers/Everflow affiliate-tracking params (this client's affiliate stack). campaign_idandhostNameId: Northbeam account-side identifiers; pull the real values from the client's Northbeam account.
Per-ad URL update required: Northbeam attribution needs each ad's tracking URL updated per their integration doc. Bulk-update through the campaign-management API when possible (dev).
3. Cake (a lead-gen client, 2026-04-13)
A Cake-platform affiliate redirect. Cake auto-injects utm_campaign, utm_medium, and utm_source on redirect, so don't duplicate them with values on the AppLovin URL or tracking breaks. But AppLovin requires the three UTM keys to be present. The resolution: blank the values, keep the keys.
?utm_campaign=&utm_medium=&utm_source=&utm_content={CREATIVE_SET}&a=<Cake offer id>&oc=<Cake offer-conversion id>&c=<Cake campaign id>&s1={CAMPAIGN_ID}&s2={CAMPAIGN_NAME}&s3={CREATIVE_SET_ID}&s4={CREATIVE_SET}&s5={AD_SIZE}
Component breakdown:
utm_campaign=&utm_medium=&utm_source=: the required AppLovin keys with empty values; Cake injects the real values on redirect.utm_content: keep it populated; Cake doesn't override it.a/oc/c: Cake offer, offer-conversion, and campaign identifiers.s1-s5: Cake sub-tracking slots, used here for AppLovin's macros (campaign_id, name, creative_set_id, name, size).
Anti-pattern: Cake's own traffic[*] bracketed params (for example traffic[campaign_id]) are Cake-platform syntax, not AppLovin-supported. Don't include them in the AppLovin URL.
Test the redirected URL, not the source URL. Cake-fronted URLs transform before the user lands, so verify pixel firing on the final landing URL with the redirect's auto-injected UTMs and the aleid/alart click params still present.
Direct-URL bypass risk: when AppLovin flags a Cake redirect URL as "dead" (its automated check doesn't follow redirects), you can have AppLovin dial the destination URL directly. That bypasses Cake tracking. The tradeoff is that it's easier for Tierra but breaks the client's Cake attribution, so surface it to the client before flipping.
4. Reading baseline (any account)
When reviewing a client's existing UTMs, split by & and check for these:
This is the minimum AppLovin-side requirement. Anything beyond it is for a downstream MTA platform (Northbeam, Triple Whale, Cake).
5. Standardization with incrementality dual-tagging (one client, 2026-03-03, updated 2026-04-14)
Standardized AppLovin UTMs with WorkMagic incrementality dual-tagging:
?utm_campaign={CAMPAIGN_NAME}&utm_content={CREATIVE_SET_ID}&utm_medium=paid&utm_source=axon&wm_*=...
The 2026-04-14 update switched utm_content={CREATIVE_SET} to utm_content={CREATIVE_SET_ID}, because IDs survive set renames and names don't.
UTM rules (never break)
Required keys
utm_campaign, utm_medium, and utm_source are required keys in the destination URL. Values can be empty strings (utm_source=) but the keys must be present. Removing them breaks AppLovin-side tracking even when the downstream platform (Cake) auto-injects them. Per AppLovin: "you can make them equal nothing, but they still have to be included in the link."
Hierarchy
- A creative-set URL replaces the campaign URL outright, query string included. It does not merge with the campaign URL, so nothing from the campaign-level query carries over. An explicit creative-set URL that is missing the tracking parameters therefore lands with zero tracking, not partial tracking. Every explicit creative-set URL has to carry the full campaign query template, not just the part that changed. The API-side mechanic behind this full-replace behavior lives in dev.
- Catalog clicks inherit creative-set UTMs, not campaign UTMs (2026-03-19). Catalog drives roughly 10% of clicks.
utm_contentprecedence: client-set catalog UTMs may override; confirm with the rep when both layers are configured.
Day cutover
7pm EST is the AppLovin UTM day-cutover. Activity after 7pm EST attributes to the next day in AppLovin's UTM reporting (2026-02-20).
Implications:
- Daily reconciliation between the AppLovin UI and downstream MTA panels has to account for the 7pm EST boundary.
- Apply budget changes at 12am UTC (4pm PST winter, 5pm PDT summer, 7pm EST winter, 8pm EDT summer) to align with the UTC day reset. Mid-day changes accelerate spend toward end-of-day, which is an anti-pattern.
- Retire seasonal end cards at 3:30pm PST, the UTC day reset (2026-01-06), for the cleanest day-over-day comparison.
Ad-level attribution gap
{AD_ID} isn't a supported URL macro. If a client wants ad-level attribution:
- Use
{CREATIVE_SET_ID}for the smallest grain available in URLs ({EVENT_ID}is the nearest ad-request-level macro, but not a stable per-ad identifier). - Pull asset-level data from AppLovin's separate Asset Reporting API or a daily UI export.
- Tell the client upfront that ad-level UTM attribution is a platform gap.
Common UTM debugging patterns
Misaligned utm_source (one client, 2025-12-29)
Symptom: the client's analytics show utm_source=axon on some creatives and utm_source=1992-AppLovin on others.
Cause: ad-level destination URLs are inconsistent across creative sets.
Fix: review every ad, confirm the UTM parameters, and centralize ad links under the campaign-level URL for consistent tracking.
AppLovin D0 vs Shopify UTM mismatch (one client, 2025-11-03)
Symptom: AppLovin D0 reporting and Shopify UTM data show different numbers. Cause: attribution loss (cookies, app redirects, user-journey gaps). Fix: add event-based order tagging on the Shopify side to capture AppLovin sales more accurately.
Cake auto-inject doubling (a lead-gen client, 2026-04-13)
Symptom: the client's engineer reports utm_* params duplicating on redirect.
Cause: Tierra had utm_campaign={CAMPAIGN_NAME} populated and Cake injected its own values on top.
Fix: blank the values on the AppLovin URL (utm_campaign=), keep the keys, and confirm via post-redirect URL inspection.
Catalog UTM precedence unclear
Open question (one client, 2026-03-19): when UTMs are set at both the catalog and the campaign, which wins? Status: catalog clicks are confirmed to inherit creative-set UTMs, not campaign UTMs. The catalog-vs-creative-set precedence is still ambiguous; surface it to the rep when it matters.
Redirect drops aleid / alart (tracking-dead)
Symptom: clicks register but conversions don't attribute; high bounce, near-zero downfunnel events (one case: 173 clicks, 0 pixel events).
Cause: a redirect, rotator, or same-URL split-test strips the aleid/alart click params before the user lands.
Fix: preserve aleid and alart through every redirect hop. Rotators and same-URL landing-page split-tests are hard-incompatible with AppLovin (see media buying).
Shopify drops UTMs server-side
Symptom: AppLovin click count is significantly higher than Shopify session count. Cause: Shopify dropping UTM parameters during a redirect or session handling. Fix: client-side dev work. AppLovin's land rate is healthy; the gap is downstream.
Pre-launch UTM checklist
Before approving an AppLovin campaign for launch, verify:
- All three required
utm_*keys are present (values can be empty). utm_contentuses{CREATIVE_SET_ID}, not{CREATIVE_SET}(IDs survive renames).- Downstream-MTA params (
nb_*,wm_*, Cakea/oc/c/s1-s5) match the client's current stack. - A test URL with one creative actually loads and fires pixel events (use the Pixel Helper on the post-redirect URL).
- The day-cutover behavior is documented for the AM team (the 7pm EST boundary).
- Any redirect in the path preserves the
aleid/alartclick params (test the post-redirect URL). - If the URL is Cake-fronted, the values on
utm_campaign/medium/sourceare blank, not populated.
Send the AM a one-line summary: "Campaign UTM template: <full string>. Day cutover 7pm EST. Per-ad updates required for [Northbeam | Cake | other] integration."
Related references
- reporting and tracking: attribution windows, dashboard vs API reads, KPI definitions.
- pixel install cookbook: the pixel events these UTMs feed, and the Pixel Helper.
- media buying: why redirects and same-URL split-tests break the algorithm.
- dev: the Reporting and Campaign Management APIs, hashed-ID joins, bulk URL updates.