Attribution · Published 2025-09-11 · 2 min read
Sending installs properly in Web2App
What separates a profitable campaign from a loss-making one? Quality.
Campaign quality equals how well the campaign is trained, multiplied by the creative. Two factors, and they decide everything.
Yes, campaign type, geo and attribution (AEM or web) all matter, but creative and campaign training are what give 80% of the result.
The UA manager's job
- Find a strong creative
- Train the campaign correctly
We work with mobile apps, so the key events for Facebook are:
- installs (leads)
- subscriptions, plus trial conversion (subscribe/purchase)
- trials (starttrial)
Event mapping in Facebook
- Lead: Facebook looks for users who have installed apps in the past
- Purchase/Subscribe: Facebook looks for people who buy
- Trials: people who sign up for a trial
In 99% of cases we want purchases, so we set campaigns on purchase, or on the neighbouring subscribe and trial events. But training needs intermediate events — leads.
The typical AppsFlyer mistake
On web, AppsFlyer sends an event named install by default.
The problem: install is a custom event with no physical meaning. Facebook cannot find similar users, because it is not a standard event.
The fix
Duplicate install and map it as lead in AppsFlyer. How:
- AppsFlyer: it can be done at code level — send a new custom_install event to AppsFlyer.
- AppsFlyer: or, if you have Apphud, forward the user_created event into AppsFlyer.
- Adjust, incidentally, maps the install event to lead correctly by default.
The result is campaigns that train correctly and a lower cost per purchase.
A reminder: I am launching the course "UA Manager 2025: Facebook & Google Ads at full strength". On the course I go through settings like these in detail and hand out ready-made checklists for developers. You will not have to dig around in code — everything is laid out step by step.
More about the course.