An ad slot showing nothing is the most common problem in ad serving, and it is nearly always one of eight things. Check them in this order — it goes roughly most to least likely.

1. The campaign is paused

The single most common cause, and the easiest to miss, because a paused campaign looks identical to a broken one. The dashboard shows the campaign, the creative is there, the dates are right — and nothing serves.

Check the status field first, every time.

2. There is no approved creative

A campaign with no creative cannot serve, and neither can one whose creatives are all awaiting review. These need different fixes: one means upload something, the other means approve what is there.

3. The slot isn't on the page

The tag is installed and working, but the page has no <div data-ad="..."> matching the placement, or the CSS selector for an auto-placed slot no longer matches anything.

The usual causes are a typo in the slug and a theme update that changed the markup the selector targeted.

4. The campaign isn't booked to that placement

Easy to do: create a campaign, upload a creative, forget to tick the placement. Everything looks configured and nothing is connected.

5. The flight dates don't include today

Either it has not started or it has ended. Watch for timezone edges — a campaign ending "today" may have ended at midnight UTC while it is still yesterday where you are.

6. A cap has been hit

Budget or impression caps stop delivery when reached. Because caps are usually enforced by a periodic job rather than counted live, a campaign can overdeliver slightly and then stop abruptly mid-month.

7. Targeting excludes the visitor

Country, device or time-of-day restrictions can be narrower than intended. The dangerous version is targeting a dimension the ad server cannot actually determine — if it cannot establish a visitor's country, a country-restricted campaign will correctly refuse to serve to everyone, which looks exactly like a broken ad.

8. The tag isn't installed, or isn't loading

Last because it is easy to check: open the page source and look for the script. If it is there, open the browser console and look for a failed request.

An ad blocker will also do this. Test in a private window with extensions disabled before concluding anything.

The distinction that saves the most time

"Nothing is showing" splits into two very different situations, and telling them apart first will save you an hour:

If your ad server can tell you which, use it. If it cannot, check whether any slot on the site is serving. If another slot works, the tag is fine and the problem is with this campaign.

What good tooling should do

An ad server knows exactly why it declined to serve — it evaluated every one of these conditions to make the decision. There is no technical reason for it to keep that to itself.

If yours fails silently, that is a reasonable thing to hold against it.