Every sale traced back to the link that started it
Mega-sale days, seasonal launches, creators, WhatsApp statuses and newsletters. AppVero shows which touchpoints bring buyers into your app — and what they spend, in your reporting currency.

What gets in the way
- 01
Links get stuck in in-app browsers
A link tapped inside LINE, Facebook or Instagram often can’t open your app. Shoppers end up on a mobile site they never meant to visit.
- 02
Owned channels go unmeasured
Newsletters, SMS blasts, WhatsApp statuses, chat broadcasts, posters and creators drive installs that ad platforms never see.
- 03
Revenue arrives in many currencies
Orders in different currencies need one reporting currency and one calendar day before anyone can compare campaigns.
A seasonal sale, end to end
An illustrative walk-through of a spring campaign for a shop app selling in several countries.
- links
One link per channel
Short links for the newsletter, the SMS broadcast, a WhatsApp status and the in-store QR poster — each deep-linking to
promo/spring. - in-app browsers
Shoppers tap from anywhere
LINE links open in the external browser; Facebook, Instagram and TikTok show an interstitial, localised from the browser’s language.
- deferred deep link
New users land on the promo
People who install first still open
promo/springon first launch — the deferred deep link is delivered once. - revenue
Orders are attributed
av_purchaseevents with revenue in the shopper’s currency — from the app, or from your order system through the S2S API — inherit the install’s source and campaign. - reporting
Everyone sees the same numbers
The owned-channels report shows clicks → installs → revenue per channel, and hourly Parquet lands in your warehouse for finance.
The parts of the platform you’ll use most
- Links & QR for every channelShort links, templates and QR codes with deep-link values and campaign fields.
- In-app browser handlingLINE escapes, interstitials and Android intent fallbacks, with localised copy.
- Smart bannersMove mobile-web shoppers into the app without losing the ad click that brought them.
- Share & referral linksLet shoppers share products; installs carry the referrer’s user ID.
- Orders from your backendSend confirmed orders with the S2S events API so revenue matches your books.
- Raw data for financeHourly, typed Parquet to S3, GCS, BigQuery or Snowflake.
A starting event plan
Standard av_ events where they fit, your own names where they don’t. Events from the SDK and the S2S API both inherit the install’s attribution.
| Event | When | Sent from |
|---|---|---|
av_add_to_cart | Product added to cart | SDK |
av_checkout | Checkout started | SDK |
av_purchase | Order paid — revenue + ISO currency, order ID as a param | SDK or S2S |
av_registration | Account created | SDK |
av_share | Product shared to WhatsApp or Instagram | SDK |
AppVero.trackEvent(
"av_purchase",
mapOf("order_id" to "NW-10293", "items" to 2),
revenue = 49.90,
currency = "USD",
)Good to know
Our payments run through a payment gateway, not the app stores. Can we still attribute revenue?
Yes. Send purchase events with revenue and currency from the app, or from your order system with the S2S events API. Receipt validation applies to App Store and Google Play purchases.
Can we keep our existing short links?
Import exports from Firebase Dynamic Links, OneLink, TrueLink and Branch with their short codes, and keep old hosts answering with domain aliases.
Other solutions
See your own data in AppVero
Bring a campaign, a link or an app build. We’ll walk through attribution, deep links and raw data with your team, on data that looks like yours.