← All articles
November 4, 2026

Telegram Mini App Ads Not Showing? Fix No Fill and SDK Errors

If Telegram Mini App ads are not showing, first separate an integration failure from no fill: an ad cannot appear if the SDK never loaded, while a working integration can still have no suitable ad for a particular request. GigaPub is an ad network and ad-mediation platform for Telegram Mini Apps. This guide walks through the checks that help you find the failing step and keep the app usable while you investigate.

Key takeaways

  • Check the full path: SDK load, show call, request result and the interface after failure.
  • A rejected promise is an error signal, not proof that the only cause is no fill.
  • Compare devices, countries and connections before changing the integration.
  • Handle errors without endless retries, duplicate requests or a permanently disabled button.

What should you check first when ads do not appear?

Start with one reproducible attempt inside Telegram. Record which button you tapped, whether a loading state appeared and whether the app recovered after the attempt. Then inspect the console and network activity for that same attempt.

Use this table to narrow down the next check:

SymptomPossible causeNext check
The ad function is missingSDK not loaded, blocked or called too earlyScript request and execution order
Tapping the button does nothingHandler not connected or an earlier JavaScript errorButton handler and first console error
A request runs but no ad opensNo eligible ad, timeout or provider errorSanitized rejection details and request timing
Only some users are affectedCountry, device, Telegram client or connection differenceCompare matching segments
The loading state never endsMissing error cleanup or overlapping requestsRestore controls after both success and failure

These are diagnostic possibilities. A timeout, for example, does not establish that an ad network has no inventory.

How do you confirm that the GigaPub SDK loaded?

Verify the script URL and your actual project ID against the GigaPub integration guide. The documented script endpoint is https://ad.gigapub.tech/script?id=YOUR_PROJECT_ID, and the show function is window.showGiga().

In the network panel, check whether the script loaded successfully. In the console, check typeof window.showGiga after loading: it should be "function" before your app calls it. If it is not, investigate a failed script request, a content security policy restriction, a script error or a call made before loading finished.

For a Nuxt or another server-rendered app, call browser APIs on the client after the SDK is ready. Loading the tag asynchronously and immediately calling its function can create a race. Also check that opening and closing a screen does not attach the same button handler repeatedly.

The official guide includes a backup-domain loader for availability problems. Use the maintained example from the documentation rather than inventing a different initialization API. For the basic setup, see how to integrate the GigaPub SDK.

What is no fill, and how is it different from a broken integration?

No fill means an ad request did not receive an eligible ad. The request may be technically valid, but the available demand may not match that user, country, format or moment. Provider eligibility rules and frequency limits can also restrict availability.

An integration error happens earlier or elsewhere: the script fails, a function is unavailable, a request is malformed or the app cannot render the result. Treat those as separate categories in your own logs. If the SDK does not expose a documented reason for a failure, record it as an unclassified failure instead of labeling every rejection as no fill.

For your own funnel, define an attempt consistently, such as one user tap accepted by the app. Track attempts, successful displays and failures separately. Do not count repeated taps while one attempt is in progress as new ad opportunities.

The GigaPub dashboard shows delivery and revenue metrics; your app's own attempt log helps explain what happened before an impression. Read the eCPM, fill rate and ARPDAU guide for the difference between request availability and revenue per impression.

Why can ads work on one device and fail on another?

Telegram Mini Apps run in different client environments. A successful desktop-browser check does not confirm the same flow on Android or iOS inside Telegram. Test the affected platform, with the same entry point and a comparable connection.

Telegram documents WebView inspection tools for supported clients. Use them to inspect the failing device rather than relying only on a screenshot of a loading spinner.

Compare one variable at a time: Telegram version, operating system, country and connection. If a network request is blocked, inspect the error and your app's content security policy. If requests succeed but availability differs by country, investigate demand and targeting. Do not assume that every regional difference is a code defect.

How should the app behave when an ad fails?

Give the user a clear outcome and return control to the app. For a rewarded placement, explain that the ad is currently unavailable; do not claim a completed view or grant an ad-completion reward from the error path. A separate goodwill bonus, if your product offers one, should have its own rules.

Keep only one show attempt in progress. Restore button and loading states after success and failure, and avoid immediate automatic retry loops. Repeated requests can make the interface worse without creating advertiser demand.

Use a cooldown before another attempt. Our ad frequency and retention guide explains how to coordinate limits across placements. If you offer another monetization option, such as an offerwall, describe its task and reward clearly and handle its result separately. It has its own availability conditions.

Can ad mediation reduce no fill?

Ad mediation can reduce dependence on one source by trying other eligible demand sources. It cannot create an advertiser for every user or guarantee a 100% fill rate. Network outages, demand gaps and client restrictions can still affect delivery.

How ad mediation works explains the role of multiple demand sources. Compare the result using your own traffic and consistent definitions, alongside response time and retention. Adding more attempts or networks is useful only when it improves the experience and the business result.

If the problem persists, contact GigaPub support with the project ID, time and time zone, country, device, Telegram version and reproduction steps. Include sanitized error messages; remove bot tokens, raw authorization data and other secrets.

What are the most common questions about ads not showing?

Why are ads not showing in my Telegram Mini App?

Check whether the SDK loaded, whether the project ID is correct, whether the show call actually ran, and whether the failure is specific to a device or connection. A valid request can also return no fill when no suitable ad is available.

What does no fill mean?

No fill means an ad request did not receive an eligible ad. It differs from an SDK load failure or a JavaScript error. A rejected promise alone does not identify which of these happened.

Does ad mediation guarantee a 100% fill rate?

No. Mediation can try multiple demand sources and reduce dependence on one network, but availability still depends on demand, targeting, platform support and network conditions.

Should I retry immediately when an ad fails?

Avoid automatic retry loops. Restore the interface, show a short availability message and allow another attempt after a cooldown. Keep the app usable if no ad is available.

What should I send to GigaPub support?

Send the project ID, time and time zone, country, device, Telegram version, reproduction steps and sanitized error details. Do not include bot tokens, private keys or raw authorization data.

Ready to connect your app? Create a GigaPub publisher account and follow the integration guide.