Disclosure: this post contains affiliate links. If you sign up through them, I may earn a commission at no extra cost to you.

Monetag ads showing zero in your Telegram Mini App? You're probably using the wrong ID

Published 2026-08-18 · Solo dev · 5 Telegram mini games live, rewarded ads as primary revenue

Short version: Monetag shows you two different numbers, and only one of them works in the SDK. The list of your Telegram Mini Apps shows an App ID. The SDK needs the Zone ID, which is a different, longer number buried inside the integration snippet.

I shipped four games with the App ID in place of the Zone ID. Everything looked wired up. Ads served zero. No error, no warning — just nothing.

What I was doing

I build small idle and merge games as Telegram Mini Apps — five of them are live right now — and rewarded ads are the primary revenue, not in-app purchases. So the ad integration isn't a nice-to-have; if it silently fails, the game earns nothing while looking completely healthy.

Where I got stuck: two IDs that look interchangeable

Monetag's dashboard gives you two numbers per mini app, and nothing on screen tells you which one the code wants:

 App IDZone ID
Where you see itThe Telegram Mini Apps list — it's the name tag for the appInside the integration snippet, as show_XXXXXXXX()
Shape (mine)7 digits, 34xxxxx8 digits, 115xxxxx
Used by the SDKNoYes
Symptom if you use itZero impressions, no console errorAds serve

(IDs masked — publishing real zone IDs is asking for junk traffic against your account.)

The reason it's so easy to get wrong: the App ID is the number that's visible. It's on the list page, next to your app's name, exactly where you'd look for "the ID of this app". The Zone ID only appears once you expand a specific ad format.

what happened

Four live games — my merge, idle, daily-puzzle and shop titles — all had the App ID in the config. All four served zero ads. There is no error state for this: the SDK loads fine, the function call just isn't there. I fixed all four in one sitting once I understood the difference, and left a comment on the config line in every project so I can't repeat it.

How to get the right one

  1. Open Monetag → your Telegram Mini App
  2. Expand the Rewarded Interstitial format (or whichever format you're using)
  3. Look at the code snippet it shows you. The number inside show_XXXXXXXX() is the Zone ID. That's the one your code needs.

The "Activate" button is not a switch

Second thing that confused me: there's an Activate control, and it reads like an on/off toggle you must flip before ads work. It isn't. It just reveals the integration code. Embedding the snippet is the activation — there's no extra step on Monetag's side to wait for.

The wiring that actually works

Monetag injects a global function named after your zone id. That's the part that makes the wrong ID fail silently — window['show_' + wrongId] is simply undefined, and if you don't guard for it you get nothing at all:

code

const MONETAG_ZONE = "115xxxxx"; // ← Zone ID, NOT the App ID const s = document.createElement('script'); s.src = 'https://libtl.com/sdk.js'; s.setAttribute('data-zone', MONETAG_ZONE); s.setAttribute('data-sdk', 'show_' + MONETAG_ZONE); document.head.appendChild(s); // later, on the player's opt-in tap: const fn = window['show_' + MONETAG_ZONE]; // named after the zone id if (typeof fn !== 'function') return; // ← wrong id lands here, silently fn().then(grantReward);

Two things I'd do again in any project:

Who this is for / not for

Payout details worth knowing before you start

If you want to try it

Affiliate link — I earn a commission if you sign up, at no extra cost to you.

Sign up for Monetag

Free to join · individual accounts accepted · $5 minimum payout via PayPal


One more thing, in case it saves someone a search: I keep ads switched off for Japanese-language users in my games as a personal precaution around local ad rules. That's my own caution, not advice — check your own situation.

The tools I actually use · Games

Details are accurate as of the publish date. Check Monetag's own docs for current terms.