Adgora
For advertisers 8 min read 1,354 words

Mobile App Install Campaigns: Buying Users, Not Installs

How to run app install campaigns from a web ad network: why cost per install misleads, and how to wire an MMP link so you measure real users.

Adgora
On this page0%

    App install campaigns have a metric problem baked into the name. Everyone buys installs, everyone reports cost per install, and installs are not what makes an app work. A user who installs, opens once and never returns costs you money and produces nothing — and that user is exactly what the cheapest traffic delivers.

    So the honest version of this guide starts by narrowing what a web ad network can and cannot do for you, because that determines everything after it.

    What a web network actually gives you

    Let us be precise, because this vertical attracts a lot of vagueness.

    Adgora has no in-app SDK. It serves ads on websites; it does not live inside applications, and it cannot see what happens after someone leaves the browser for a store. Any web network implying otherwise is selling something that does not exist.

    What it does give you is the plumbing, and the plumbing is enough:

    • Reach — mobile web inventory across nine formats, targeted by OS, device, browser, geo and language.
    • A click ID — {clickid}, unique per click, passed into your landing URL.
    • A postback endpoint — so something downstream can report back that the install happened.

    The measurement itself belongs to a mobile measurement partner. Your job is to connect the two, and the connection is one parameter.

    Wiring the attribution

    The chain has an obvious break in it: your ad is on the web, the install happens in a store, and the app opens somewhere else entirely. Nothing carries state across those three places on its own — you have to thread it.

    1. Set your landing URL to your MMP tracking link (AppsFlyer, Adjust, Branch — whichever you already use).
    2. Pass {clickid} into one of that link's sub parameters, so your click ID travels with the user.
    3. Configure the MMP to fire Adgora's S2S postback with that click ID when the install — or better, a real in-app event — lands.

    Now a conversion in your Adgora dashboard means an install the MMP attributed, not a guess. It is server-to-server, so it does not depend on a browser that closed twenty minutes ago, and it is idempotent — the same click ID and offer will not be counted twice.

    Miss step 2 and the whole thing collapses into "we spent the budget", which is the least useful sentence in media buying. The click ID is not optional here; it is the entire mechanism.

    Stop optimizing cost per install

    Here is the trap that eats app budgets.

    Cost per install rewards whoever delivers taps most cheaply. Cheap taps come from cold, low-intent traffic — people who tapped out of curiosity, installed to see what it was, and were gone by evening. Your CPI looks superb. Your retention chart looks like a cliff.

    Any source can win on CPI by delivering worse users. That is not a hypothetical failure mode; it is the default one, because CPI is the only metric that improves when quality drops.

    So push the measured event down the funnel to something that correlates with value: registration, tutorial completed, first purchase, day-7 open. Fire the postback on that, and let cost per install be a diagnostic rather than a target. Expensive users who stay beat cheap users who leave, every time, and the arithmetic is the same one behind CPC vs CPM vs CPA: pay as close to the outcome as your tracking allows.

    Targeting is not optional in this vertical

    Most verticals tolerate loose targeting. App installs punish it immediately, because a mismatched impression cannot possibly convert:

    • OS targeting is mandatory. An iOS build advertised to Android users is 100% wasted spend, and it is the most common self-inflicted wound here. One campaign per OS — always.
    • Device and browser shape whether your pre-lander even renders. Old Android on a slow connection is a real audience with real constraints.
    • Geo decides whether your app is available at all, what it costs to acquire, and what a user is worth once acquired. Tier logic applies with full force.
    • Frequency capping stops you re-buying someone who already declined — and someone who already installed. Both are pure waste.

    The full set of controls is in the targeting guide. In this vertical, treat them as correctness rather than optimization.

    Send them to a page first

    The instinct is to link straight to the store listing. Usually that is worse.

    A pre-lander does one job: it qualifies. It states what the app does and asks for a deliberate tap. People who were never going to install drop out there — cheaply, before they pollute your store conversion rate. And store conversion rate is not a vanity number: it is what the store's own ranking machinery watches.

    Sending cold popunder traffic directly to a listing is the fastest way to a terrible install rate on a page you do not control. One qualifying step between the ad and the store almost always pays for itself — the reasoning is the same as in landing page optimization: every step should continue the promise the ad made, and the store listing was written for a different audience than your ad was.

    Which formats fit

    • Interstitial — the natural fit. Full screen at a break, enough room to actually show the app, and the highest engagement of any format.
    • Video — the only format that shows the app in motion. Assume it plays muted, so put the message on screen rather than in a voiceover.
    • Push — cheap and fast for testing angles. Cold users, so expect the retention question to bite.
    • Native — good where the app needs a sentence of credibility before anyone taps.
    • Display — cheap presence; use 320×50 and 300×250 for mobile reach, not as your main engine.

    The fraud angle

    Install fraud is a real industry, and the honest position is that this is mostly your MMP's fight, not your ad network's — the network cannot see inside the app.

    What Adgora does do is filter the click layer before billing: clicks are de-duplicated by hashed IP, creative and day, and conversions by click ID and offer, so repeated activity from one source is stripped rather than paid and clawed back later. That is the mechanism described in ad fraud protection. What it does not do is tell you whether an install was a real human opening a real app — for that, use your MMP's fraud tooling and, above all, watch retention. Fake installs never come back on day 7. That is the tell no fraudster has ever solved.

    A sane way to start

    1. One OS, one geo, one campaign. Never mix.
    2. Wire the MMP link with {clickid} and test the postback before spending anything.
    3. Fire the postback on a real event, not the install.
    4. Run a pre-lander. Measure store conversion rate as its own number.
    5. Label creative and angle with sub-IDs so you can slice results later.
    6. Judge on cost per retained user. Scale in 30–50% steps and re-check retention at each — it degrades as you reach further down the quality curve.

    The honest summary

    A web network is not an in-app platform, and pretending otherwise is how people lose money in this vertical. What it is good at is buying qualified taps cheaply and handing you a click ID clean enough to attribute. Do the wiring once, move the measured event down the funnel, and the vertical becomes ordinary media buying with one extra hop.

    Skip the wiring and you will optimize toward the cheapest installs available — which is a reliable way to acquire users who are already gone.

    Create an Adgora account to run mobile traffic with OS and device targeting, macros and postbacks, funded in TON or USDT. See how the advertiser side works, or look anything up in the glossary.

    Key takeaways

    • Adgora has no in-app SDK — you drive web traffic and attribute with your own MMP.
    • The wiring is one parameter: MMP link as the landing URL, {clickid} passed through, MMP fires the postback.
    • Cost per install rewards worse users — measure a real in-app event instead.
    • One OS per campaign; mismatched OS targeting is 100% waste.
    • A pre-lander qualifies the tap and protects your store conversion rate.
    • Install fraud is the MMP's fight — retention is the tell no fake install survives.

    Terms in this article

    Short definitions from the Adgora glossary.

    Conversion
    The action you are actually paying for — a sale, signup, deposit or install. Conversions are idempotent on Adgora: the same click ID and offer will…
    Conversion rate
    Conversions divided by clicks. Where the landing page and the offer are judged.
    Creative
    The actual ad shown — the image, headline, text or video file plus its landing URL. Reviewed before it can serve.
    Offer
    A specific thing being advertised with a defined payout for a defined action — the unit of CPA. See the CPA marketing guide.
    CPC
    Cost per click — you pay only when someone clicks. The bid you set is the most you will pay for a click; the auction often clears lower. Best when…
    CPM
    Cost per mille — the price for one thousand impressions, paid whether or not anyone clicks. You are buying attention rather than actions, which sui…
    CPA
    Cost per action — you pay only when a defined action happens: a sale, a signup, a deposit. The lowest-risk model for the buyer and the highest bar…
    Popunder
    A full page opened in a tab behind the user's window. No creative — the landing page is the ad. The cheapest volume available and the coldest audie…

    Frequently asked questions

    Does Adgora have an in-app SDK?

    No. Adgora is a web ad network — it serves ads on websites and does not embed inside apps. For install campaigns that means you drive web traffic to a store listing or a pre-lander, and you measure the install with your own mobile measurement partner. Anyone claiming a web network gives you in-app attribution on its own is describing something that does not exist.

    How do I track installs from web traffic?

    Point your landing URL at your MMP tracking link (AppsFlyer, Adjust, Branch and similar), pass Adgora's {clickid} into one of its sub parameters, and configure the MMP to fire Adgora's S2S postback with that click ID when the install or in-app event happens. The click ID is the thread that ties the install back to the click that bought it.

    Why is cost per install a misleading metric?

    Because an install is not a user. The cheapest installs come from people who tapped, opened once, and never returned — they cost little and are worth nothing. Any source can win on cost per install by delivering worse users, so the number to optimize is cost per retained user or per in-app event, not per install.

    Should I send traffic straight to the app store?

    Usually not. A pre-lander qualifies the click first, so people who were never going to install drop out before the store — which raises your store conversion rate and cuts wasted taps. It costs one extra step and almost always pays for itself, especially on cold traffic like popunder.

    Share this article

    Found it useful? Send it to someone who buys or sells traffic.

    Next step

    Ready to put this into practice?

    Launch a campaign or monetize your traffic on Adgora — crypto payments, real-time stats, no lock-in.

    What this page answers