Skip to main content

Ads Not Showing

The wrapper tag is pasted in, you've shipped a release, but ads aren't rendering. Work down this list from fastest to deepest check.


Quick checks

1. Is the wrapper tag in the page?

View page source (Ctrl/Cmd + U) on the page where you expect ads. Search for your domain ID. You should see an inline <script> block in <head> that includes the domain ID.

If missing: Install the wrapper tag →. Most often the template you pasted into isn't the one that renders, or a full-page cache is serving old HTML — purge the CDN cache.

2. Is the library loading?

DevTools → Network, reload, filter by jsdelivr or your domain ID. Expected: 200 on cdn.jsdelivr.net/npm/@<org>/<domain-id>@<version>/dist/wrapp-<domain-id>.js.

ResultCauseFix
404Wrong domain ID in the tagRe-copy from Account → Setup → Wrapper
Blocked (red)CSP or ad blockerWhitelist cdn.jsdelivr.net and data.jsdelivr.com
No requestInline tag didn't runConfirm the tag is in <head>, not conditionally wrapped

3. Is the wrapper bootstrapping?

DevTools → Console:

typeof window.Wrapp // 'object' if library loaded
window.__wrapp_loader // telemetry object if loader finished
window.wrapperTag?.appVersion // defined after bootstrap

If window.Wrapp is undefined, see Wrapper not loading.

If window.Wrapp is defined but window.wrapperTag.appVersion is undefined, bootstrap hasn't resolved — look for a Wrapper bootstrap failed: error in Console.

4. Is a layout matching?

Append ?pbjs_debug=true to the URL and reload. Filter Console for AAM.

Expected: AAM Processing <N> ad slots on page with <N> > 0.

If <N> === 0, no layout matched this URL. Check Inventory → Layouts — compare the layout's page-path pattern against the URL you're testing.

5. Are bids coming back?

Once slots are registered, in Console:

pbjs.getBidResponses() // responses keyed by ad unit
pbjs.getAllWinningBids() // bids that rendered
  • Empty getBidResponses() → bidders aren't wired up to these slots, all bids timed out, or the layout matched but slots aren't in it.
  • Populated getBidResponses() but empty getAllWinningBids() → bids arrived but GAM didn't serve them. Check the GAM ad-unit mapping on each slot.

Diagnosis by console signal

What you seeWhat it meansNext step
No AAM logs with debug onLibrary didn't bootstrapWrapper not loading
AAM Processing 0 ad slots on pageLayout didn't match URLCheck layout page-path
AAM Processing N ad slots but no adsBids failing or GAM mapping offCheck Demand → Prebid and slot ↔ ad-unit mapping
Wrapper bootstrap failed: …Bootstrap threwSee error detail in Wrapper Debugging
inventory defined for different domain with ID '…'Cached config from a different domainClear localStorage, reload
googletag (google publisher tag) did not load properlyGPT didn't loadCheck CSP; disable ad blocker; confirm securepubads.g.doubleclick.net is reachable

Common causes and fixes

Wrapper tag not in the rendered HTML

  1. Re-copy the tag from Account → Setup → Wrapper
  2. Paste into your shared <head> template / header include
  3. Deploy and purge any full-page cache
  4. Reload in incognito and verify with page source

Wrong domain ID in the tag

The tag is domain-specific. If the domain in the portal differs from the one you pasted, re-copy after selecting the correct domain in the account selector.

Layout didn't match

Most common failure mode once the wrapper is healthy.

  1. Inventory → Layouts — open each layout and review its Scope → Page Paths
  2. Compare its rules to the URL you're testing. Common gotchas:
    • Exact matches only the exact path — Exact: / matches / but not /about
    • Starts with needs a trailing slash if you want to catch subpaths — Starts with: /blog/ matches /blog/post, while Starts with: /blog also matches /blogroll
    • Case matters — the path match is case-sensitive
    • Query strings and hash fragments are stripped before matching; only the path is compared
  3. Save changes and ship a release (Wrapper → Releases → Create Release)
  4. Purge your site's CDN or full-page cache and retest

For the full pattern-type reference see Layout targeting.

Slots not in the matched layout

After a layout matches, only the slots assigned to that layout will initialize. Edit the layout and confirm its slot list.

Bidders aren't wired up

Open each ad slot and confirm:

  1. Demand → Prebid — which bidders are enabled
  2. On the slot or layout, which bidders are active for these slot sizes

GAM ad-unit mapping wrong

Each Anima ad slot must map to a GAM ad unit. If the mapping is missing or wrong, bids can return from Prebid but GAM won't serve the creative.

  1. Edit the ad slot in Inventory → Ad Slots
  2. Verify the linked GAM ad unit
  3. If empty, pick from Inventory → GAM (Day 1's sync populates this)

When to escalate

Escalate to onboarding or support@animaadtech.com if:

  • The library 404s for a valid domain ID (possible broken build)
  • Config endpoint returns a persistent 5xx
  • Everything looks correct in the portal but slots never register even with fresh config

Include:

  • Domain ID
  • Page URL you're testing and which layout you expect to match
  • Output of window.__wrapp_loader and window.wrapperTag?.appVersion
  • Full Console log from a reload with ?pbjs_debug=true