Traffic with nowhere to sell
People open the mini app every day, yet nothing in it is monetised: negotiating with advertisers one deal at a time costs more hours than it ever returns.
Register your mini app, place ad units — banner, interstitial, rewarded or task — and read impressions, clicks, CTR and earnings for each unit separately. A built-in data check looks for inconsistencies in those numbers before you reconcile them against a payout.
People open the mini app every day, yet nothing in it is monetised: negotiating with advertisers one deal at a time costs more hours than it ever returns.
Impressions and clicks live on the network's side with nothing to reconcile them against, so an anomalous CTR is spotted only after it has moved the earnings.
The money arrives as one figure with no split by period or unit, and there is nowhere to check whether it matches last month's impressions.
Name, a public https://t.me/ link, the production web app URL, the bot ID and one of thirteen categories. Once submitted, the app goes into review.
Banner, interstitial, rewarded or task — each unit gets its own placement and frequency. The code goes in as a JavaScript snippet, a React package or API calls.
Impressions, clicks, CTR and earnings are counted per unit, per app and across the portfolio. Earnings are booked by period with a status: pending, processing, paid.
Banner, interstitial, rewarded and task, with placement and display frequency configured on each unit individually.
A JavaScript snippet, a React package or direct API calls — whichever fits the way your mini app is already built.
Impressions, clicks, CTR and earnings not just per app but per unit, so you can see which placement is actually earning.
It reconciles unit counts and transaction earnings, flags suspicious CTR above 10% or below 0.1%, and reports a data consistency score.
Changes to apps and earnings reach the workspace immediately, so the numbers on screen do not lag behind reality.
Every entry keeps its period, net amount and status, and a payout request goes out straight from the app's own card.
A name longer than three characters, a public link starting with https://t.me/, the production web app URL that opens inside Telegram, a bot identifier and a category. A description is optional but helps during review. Once the form is submitted the app enters the review queue.
Three ways, your choice: a JavaScript snippet, a React package or direct API calls — in each case you pass the app identifier. Ad units are then created in the workspace, where type, placement and display frequency are set for every unit separately.
Four: banner, interstitial, rewarded and task. You can mix formats inside one app, and because frequency is configured per unit, the advertising does not have to crowd the interface to earn.
The workspace ships a separate data check. It reconciles the declared number of ad units against the real one and transaction totals against app earnings, flags apps with no activity and suspicious CTR — above 10% or below 0.1% — and reports an overall data consistency score.
Earnings are booked by period: each period keeps a net amount and a status — pending, processing or paid. A payout request is sent from the app's card. The exact schedule, threshold and transfer method are set by whoever operates your Valkiria install.
Registering an app is one form, and the first ad units can go in the same day. Impressions and earnings are visible from day one, not at month end.