Where can an advertiser inspect why a ChatGPT ad is not serving?

The Citead team, updated

In short. Request serving_issues and inspect the account to ad hierarchy, statuses, reviews, targeting, budgets, schedules, and spend limits.

Definition: An advertiser inspects ChatGPT ad delivery through the OpenAI Ads API by requesting serving_issues on the ad, ad group, or campaign, then checking the account to ad hierarchy. The response is read alongside configured statuses, review fields, schedules, budgets, targeting, and spend limits.

Key facts

  • OpenAI's Ads troubleshooting documentation says to inspect explicit serving issues before changing bids or recreating resources.
  • The serving_issues include is available when retrieving an ad, campaign, or ad group, and on campaign and ad-group list endpoints.
  • An active ad can still be blocked by a paused campaign, an incomplete review, a budget, a schedule, a targeting condition, or an account-level limit.
  • OpenAI separates configured status from review fields: status describes whether a resource is enabled, while review fields describe approval checks.
  • An empty serving_issues array leaves low delivery conditions to investigate, including limited eligible opportunities, restrictive targeting, bids, and usable product sets.

How is the serving issue retrieved?

OpenAI's troubleshooting page shows a GET request for the ad with include[]=serving_issues. The same include is available on campaign and ad-group retrieval and list endpoints. After reading the returned issue details, fix the cause and retrieve the resource again to see whether the issue remains.

curl -G "https://api.ads.openai.com/v1/ads/ad_123" \
  -H "Authorization: Bearer ${OPENAI_ADS_API_KEY}" \
  --data-urlencode 'include[]=serving_issues'

OpenAI's campaign management documentation places the same request beside the ad preview workflow. A preview checks appearance. It does not confirm serving eligibility, so the resource response remains the relevant inspection point for a delivery problem.

Which states can block an active ad?

Start at the account. OpenAI's account management documentation says that account status and account reviews are separate. Its documented fields include status, review.status, review.reason, and account_integrity_review.review.status when that object is returned. Account activation permits delivery only when the other conditions are satisfied.

Then inspect the campaign, ad group, and ad. OpenAI's troubleshooting checklist asks whether the campaign is active, within its schedule, funded, and correctly targeted; whether the ad group is active, compatible with the objective, and linked to eligible products where relevant; and whether the ad is active, approved, and has an accessible creative and landing page. A paused campaign prevents its child ads from serving, as the campaign documentation states.

Configured status and review outcome answer different questions. An ad can have status: "active" with review_status: "in_review", which means it is enabled while its review remains incomplete. OpenAI lists in_review, approved, and rejected as review outcomes. Changing status does not finish a pending review or approve a rejected creative.

What should be checked when no issue is returned?

An empty serving_issues array is not evidence that impressions should already be present. OpenAI directs advertisers to compare reporting over a suitable interval and inspect eligible opportunities, targeting, bids, and the usable product set. Its low-delivery guidance also says that the bid_too_low diagnostic, when exposed, is a warning rather than a serving restriction.

Targeting needs a combined check. OpenAI's campaign targeting documentation says geographic, platform, and audience settings work together. An included audience restricts eligibility to matching users, and exclusions take precedence when a user belongs to both an included and an excluded audience. The same page says the campaign can include up to 2,500 geographic IDs in inclusion and exclusion lists.

FAQ

Should an advertiser change the bid first?

No. OpenAI's troubleshooting guidance starts with serving_issues, statuses, reviews, schedules, budgets, and account spend limits. A low-bid warning is a separate diagnostic when the integration exposes it.

Does an active ad mean that it can serve?

No. The ad also depends on its ad group and campaign, and a paused parent can prevent serving. Review state, targeting, budget, schedule, and account conditions also belong in the check.

What does approved prove?

It records a passed review for the relevant review field. OpenAI says an approved ad can still be prevented from serving by a paused parent or another delivery condition.

Where should account-wide blocking be inspected?

Retrieve the ad account and inspect its configured status and returned review fields. The account documentation says an active account can still have another outstanding account review, an exhausted spend limit, or campaign-level delivery issues.

Sources

  1. OpenAI Developers, "Troubleshooting, Ads", undated
  2. OpenAI Developers, "Campaign Management, Ads", undated
  3. OpenAI Developers, "Account Management, Ads", undated
  4. OpenAI Developers, "Targeting, Ads", undated

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark