Al-Nasr · Vega

How do you set up app events tracking that campaigns can actually optimize on?

7 min read Updated

Every Gulf app running paid acquisition eventually hits the same wall: Meta reports one number, Google another, the MMP a third, and nobody trusts any of them enough to move budget. The root cause is almost never the platforms — it is an event setup that grew by accident: events added per campaign, named three different ways, missing revenue, and firing twice. Ad networks can only optimize toward the events you send them; send noise, and the smartest algorithm in the world buys you noise.

This guide is the setup that prevents that: why events decide campaign performance, the eight events every app needs, naming conventions that survive two years of growth, how to wire everything through your MMP to the ad networks, which event each campaign should optimize on, and the funnels that turn events into weekly decisions.

Why do events decide how your campaigns perform?

Modern app campaigns on Meta, Google, TikTok and Snapchat are optimization machines pointed at whatever event you feed them. Optimize to installs and they find the humans most likely to install — including the ones who never open the app again. Optimize to trial starts or purchases and they hunt for payers. The event taxonomy is therefore not an analytics chore; it is the steering wheel of your entire acquisition budget.

Bad taxonomies fail quietly. A purchase event without revenue makes ROAS unknowable. A registration event that fires on screen view instead of completion teaches the algorithm to buy lookers, not doers. Duplicate purchase events — the classic being client and server both reporting the same transaction without a shared transaction ID — double your reported revenue and hide losing campaigns behind inflated returns. Each of these is invisible until you audit for it.

Which app events should you track? The core eight

Most apps need fewer, better events than they think. Eight cover the growth funnel for nearly every category:

  • first_open — automatic in most SDKs; your install baseline.
  • sign_up — account created, fired on completion, with a method parameter (phone, Apple, Google).
  • onboarding_complete — the user got through setup; the first quality gate paid traffic must pass.
  • activation — your app's aha moment: first scan, first lesson, first search, first listing saved. Define it once, from retention data.
  • content_view or product_view — the browsing signal, with a category or item parameter for later segmentation and retargeting.
  • add_to_cart or trial_start — the intent event; the strongest pre-revenue signal ad networks can optimize on.
  • purchase or subscribe — with revenue, currency, and a transaction_id for deduplication, ideally verified server-side.
  • renewal or repeat_purchase — the loyalty signal that separates buyers from customers, and the honest input to LTV.

What naming conventions keep analytics sane?

Naming feels trivial until the day three tools disagree and nobody remembers which event is real. The rules that hold:

  • snake_case everywhere, one grammatical pattern — object_action (trial_start) or verb_object — chosen once and never mixed.
  • Parameters, not name variants: one level_complete event with a level parameter, never level_1_complete, level_2_complete and forty siblings.
  • The same event name in the app code, the MMP, GA4 and every ad network mapping — renaming per tool is how numbers stop matching.
  • One tracking plan sheet as the single source of truth: event name, trigger definition, parameters, destinations, owner, date added. Version it.
  • No orphan events: if nobody can say what decision an event feeds, it does not go in. Dozens of unused events are how real signals drown.

How do you wire events through your MMP to the ad networks?

For paid campaigns, your MMP — Adjust or AppsFlyer — is the source of truth, because it is the only place attribution and cost meet. Implement events once in the app, forward them through the MMP, and map each to the corresponding optimization event in every network: Meta app events, Google conversions, TikTok and Snap equivalents. One taxonomy, many destinations — never a separate hand-built setup per channel.

Send purchase revenue with currency on every event, and pass a transaction ID so networks and the MMP deduplicate correctly — the most common inflation bug in app accounts is the same purchase counted twice. On iOS, your SKAdNetwork conversion values must be derived from the same taxonomy, so the events you optimize on remain measurable even for opted-out users. And verify end to end before spending: trigger each event on a test device and confirm it lands, once, with the right parameters, in the MMP and in each network.

How do you set up conversion events for campaigns?

Every campaign faces the depth-versus-volume tradeoff: deeper events describe better users but fire less often, and delivery algorithms need steady weekly volume to learn — as a working floor, an event that cannot produce a few dozen conversions per week per campaign is too deep to optimize on yet.

So graduate as you grow. A new app starts on install or sign_up optimization while volume builds. Once trial_start or add_to_cart fires reliably at volume, move campaigns there — quality jumps, and cost per install usually rises while cost per customer falls. At scale, purchase or value-based optimization is the end state. Revisit quarterly: staying on install optimization long after you have purchase volume is one of the most expensive default settings in app marketing.

How do you build funnels in GA4 and your MMP?

The eight events chain into one funnel: first_open → onboarding_complete → activation → intent → purchase → repeat. Build it twice — in GA4 for product analysis across all users, and in the MMP segmented by channel and campaign for paid decisions. The two views answer different questions: GA4 tells you where the product leaks; the MMP tells you which money buys users that survive the leaks.

Review weekly and act on the largest drop-off, not all of them. And set volume alerts on your core events — a sudden drop after a release usually means a broken SDK call, and every week it goes unnoticed, your campaigns are optimizing on corrupted signal and your reports understate reality.

How Ashayrah sets up your event tracking for you

Clean events are the foundation under everything else we run — campaigns, creative testing, budget decisions — so tracking is where every app engagement of ours begins.

  1. The audit

    We test-drive your app with a debugger attached and document what actually fires: missing events, duplicates, absent revenue, mismatched names across MMP, GA4 and ad networks. Free, in a 20-minute consultation, and the gap report is yours to keep.

  2. The launch

    Within 14 days: a written tracking plan covering the core eight, event implementation specced with your developer, MMP-to-network mappings rebuilt, and every event verified end to end on test devices.

  3. The scale

    Weekly funnel reviews drive the decisions — campaigns graduate to deeper optimization events as volume allows, budget follows verified cost per activated user, and volume alerts guard the signal. Month-to-month, founder-led.

Questions people also ask

Which app events should I track first if I can only track three?

Sign_up, activation, and purchase with revenue and currency. Those three give you the funnel's entry, its quality gate, and its money — enough to judge every campaign honestly. Add the remaining core events as soon as development time allows, starting with your intent event.

How many events is too many for an app?

When events stop mapping to decisions. Most apps do their best work with 15–25 well-defined events; past that, taxonomies usually contain duplicates, orphans and name variants that should have been parameters. The failure mode is not the count itself — it is that real signals drown in noise nobody maintains.

Do I need GA4 if I already have an MMP?

Yes — they answer different questions. The MMP attributes installs and events to paid channels and ingests cost, making it the truth for campaign decisions. GA4 covers full product behavior for all users, organic included, with funnels, retention and audiences. Same event names in both, different jobs.

Why does Meta report more conversions than my MMP?

Different counting rules: the networks self-attribute with their own windows and include view-through conversions, while the MMP applies one last-touch model across all channels, so each network's own number is usually higher. Use the MMP for cross-channel budget decisions, and each network's numbers only for relative comparisons inside that channel.

Can I rename app events later?

Technically yes, practically it is expensive: historical data splits across two names, ad network optimization resets on remapped events, and funnels need rebuilding. Renames are a last resort — which is exactly why the naming convention and tracking plan deserve real care on day one.

The fire is lit. Sit with us.

Pick your time

Booking takes 30 seconds. The consultation is free — and the plan is yours to keep.

  • 20 minutes
  • A concrete 90-day plan
  • Zero obligation
Book a free consultation

Calendar not loading? Book directly on TidyCal

Pick your time

Booking takes 30 seconds. The consultation is free — and the plan is yours to keep.

  • 20 minutes
  • A concrete 90-day plan
  • Zero obligation