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.
| Result | Cause | Fix |
|---|---|---|
| 404 | Wrong domain ID in the tag | Re-copy from Account → Setup → Wrapper |
| Blocked (red) | CSP or ad blocker | Whitelist cdn.jsdelivr.net and data.jsdelivr.com |
| No request | Inline tag didn't run | Confirm 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 emptygetAllWinningBids()→ bids arrived but GAM didn't serve them. Check the GAM ad-unit mapping on each slot.
Diagnosis by console signal
| What you see | What it means | Next step |
|---|---|---|
No AAM logs with debug on | Library didn't bootstrap | Wrapper not loading |
AAM Processing 0 ad slots on page | Layout didn't match URL | Check layout page-path |
AAM Processing N ad slots but no ads | Bids failing or GAM mapping off | Check Demand → Prebid and slot ↔ ad-unit mapping |
Wrapper bootstrap failed: … | Bootstrap threw | See error detail in Wrapper Debugging |
inventory defined for different domain with ID '…' | Cached config from a different domain | Clear localStorage, reload |
googletag (google publisher tag) did not load properly | GPT didn't load | Check CSP; disable ad blocker; confirm securepubads.g.doubleclick.net is reachable |
Common causes and fixes
Wrapper tag not in the rendered HTML
- Re-copy the tag from Account → Setup → Wrapper
- Paste into your shared
<head>template / header include - Deploy and purge any full-page cache
- 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.
- Inventory → Layouts — open each layout and review its Scope → Page Paths
- 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, whileStarts with: /blogalso matches/blogroll - Case matters — the path match is case-sensitive
- Query strings and hash fragments are stripped before matching; only the path is compared
- Exact matches only the exact path —
- Save changes and ship a release (Wrapper → Releases → Create Release)
- 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:
- Demand → Prebid — which bidders are enabled
- 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.
- Edit the ad slot in Inventory → Ad Slots
- Verify the linked GAM ad unit
- 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_loaderandwindow.wrapperTag?.appVersion - Full Console log from a reload with
?pbjs_debug=true
Related
- Wrapper not loading — if
window.Wrappis undefined - Wrapper Debugging — full reference
- Low revenue — ads render but revenue is down