Chatvertise
Back to blog

· 6 min read

Every serving issue in ChatGPT Ads: 35 codes, what they mean and how to fix them

Next to the status of a campaign, ad group or ad, ChatGPT Ads reports why it currently isn't serving, or only partly. These serving issues come as codes like campaign_budget_exhausted or ad_group_has_no_serving_ready_ads. The official documentation lists them without explanation. Here are all 35 with meaning and fix, grouped by the level where they arise.

How to read the issues

In Chatvertise the issues appear as colored labels next to the status: at campaign, ad group and ad level and in the structure view. In the API they're called serving_issues. We classify every code into one of three urgency levels; the same classification appears in the tables below.

  • Blocking: as long as the issue is present, nothing serves. Usually you have to fix something yourself.
  • Warning: serving is stopped or limited, usually by a setting such as status, budget or schedule.
  • In progress: something is underway, such as a review. Only patience helps.

A note on reliability: so far we've observed only some of the codes live. Where the exact fix depends on the individual case, we point to the OpenAI Ads Manager instead of guessing.

Account: approval, payment and identity

Account-level issues affect all campaigns at once. As long as one of them is blocking, the whole account serves nothing.

ad_account_suspended BlockingMeaningThe ad account is suspended. No campaign serves.FixCheck the reason in the OpenAI Ads Manager and contact support there. A suspension can't be lifted through the API.
ad_account_brand_review_in_progress In progressMeaningThe account's brand review is still running.FixWait. Until approval, the account serves nothing.
ad_account_brand_review_missing_favicon BlockingMeaningThe brand review is missing a favicon. OpenAI shows it next to every ad.FixUpload the favicon in Chatvertise on the “Ad account” page; it's passed straight to OpenAI.
ad_account_brand_review_escalated_review BlockingMeaningThe brand review has been escalated for a deeper review.FixWait and answer any questions from OpenAI in the Ads Manager. It can't be sped up.
ad_account_brand_review_rejected BlockingMeaningThe account's brand review was rejected.FixCheck and correct brand, domain and favicon details in the Ads Manager, then resubmit.
ad_account_payment_method_missing_or_unauthorized BlockingMeaningNo payment method is on file, or it isn't authorized.FixAdd or confirm the payment method in the OpenAI Ads Manager.
ad_account_threshold_payment_failed BlockingMeaningA due charge failed.FixCheck the payment method and settle the outstanding amount in the Ads Manager.
ad_account_persona_verification_not_approved BlockingMeaningThe account's identity verification has not passed or isn't confirmed yet.FixComplete or repeat the verification in the OpenAI Ads Manager.
ad_account_persona_verification_step_up_required WarningMeaningOpenAI requires an additional step of identity verification.FixComplete the requested additional check in the Ads Manager.
ad_account_budget_exhausted WarningMeaningThe account-level spend limit has been reached. All campaigns pause.FixWait for the next reset or raise the account limit. More in Account daily limit vs. campaign daily budget.

Campaign: status, schedule and budget

These issues arise from the campaign's settings. They're mirrored downward: if the campaign budget is used up, the same issue also appears on its ad groups and ads.

campaign_not_active WarningMeaningThe campaign is paused or archived.FixActivate the campaign. The history shows who paused it.
campaign_not_started In progressMeaningThe campaign's start date is in the future.FixWait, or move the start date forward.
campaign_ended WarningMeaningThe campaign's end date has passed.FixExtend the end date or create a new campaign.
campaign_has_no_ad_groups WarningMeaningThe campaign contains no ad group.FixCreate at least one ad group with targeting and a bid.
campaign_has_no_serving_ready_ad_groups WarningMeaningNone of the campaign's ad groups is ready to serve.FixCheck the ad groups: are they active, and do they contain approved, active ads?
campaign_budget_exhausted WarningMeaningThe campaign's budget is used up.FixWith a daily budget it resumes the next day. With a lifetime budget, raise the budget.

Ad group: status and content

An ad group only serves when it's active and contains at least one ad that's ready to serve.

ad_group_not_active WarningMeaningThe ad group is paused or archived.FixActivate the ad group.
ad_group_has_no_ads WarningMeaningThe ad group contains no ad.FixCreate at least one ad.
ad_group_has_no_serving_ready_ads WarningMeaningNone of the ad group's ads is ready to serve: all are paused, under review or rejected.FixGo through the ad group's ads: activate paused ones, fix rejected ones, wait for reviews.

Ad: status, review and required fields

At ad level it's about three things: whether the ad is active, where the review stands, and whether all required fields are present. Codes with partial_serving mean that only part is serving.

ad_not_active WarningMeaningThe ad is paused or archived.FixActivate the ad.
ad_in_review In progressMeaningThe ad is currently under review.FixWait. Every change to the ad restarts the review.
review_not_approved BlockingMeaningThe ad was rejected in review.FixRead the rejection reason on the ad detail page and fix it. All reasons: Ad rejected?
landing_page_crawl_issue BlockingMeaningThe landing page couldn't be fetched during review.FixCheck robots.txt, bot protection and reachability of the destination URL, then save the ad again.
title_missing BlockingMeaningThe ad has no title.FixAdd a title and save.
advertiser_name_missing BlockingMeaningThe ad account is missing the advertiser name.FixAdd the account or brand name on the “Ad account” page.
image_or_favicon_missing BlockingMeaningThe ad has no image, or the account has no favicon.FixAdd an image to the ad, or upload the favicon in the ad account.
target_url_invalid BlockingMeaningThe ad's destination URL is invalid.FixFix the URL: complete with https, reachable, and on a domain approved for the account.
reserved_query_params_present WarningMeaningThe destination URL contains parameters that OpenAI reserves for itself.FixRemove the affected parameters from the destination URL and save the ad again.
product_feed_id_missing BlockingMeaningA feed ad isn't linked to any product feed.FixSelect a product feed in the campaign or ad group.
partial_serving_ad_in_review In progressMeaningThis level serves partly; some of the ads are still under review.FixWait. The ads already approved keep serving.
partial_serving_review_not_approved WarningMeaningThis level serves partly; some of the ads were rejected.FixFix or pause the rejected ads. The rest keeps serving.
partial_serving_landing_page_crawl_issue WarningMeaningThis level serves partly; for some ads the landing page couldn't be fetched.FixCheck the destination URLs of the affected ads and save them again.

Policies and targeting

These issues come from OpenAI's advertising policies. They depend on the ad's content and the chosen target country.

ad_over_18_only BlockingMeaningThe ad is classified as content for adults only.FixCheck the ad's content and category. The classification and its consequences are shown in the OpenAI Ads Manager.
policy_country_targeting_blocked BlockingMeaningFor policy reasons, this ad may not serve in the selected target countries.FixAdjust the ad group's target countries or aim the ad at other markets.
policy_country_targeting_limited WarningMeaningIn some of the target countries, serving is limited for policy reasons.FixCheck which countries are affected and split the targeting if needed.

What these issues don't cover

  • The exact rejection reason of an ad. review_not_approved only says it was rejected; why is in the rejection reason. All reasons are explained in Ad rejected? Crawler errors explained.
  • Errors on save. An unapproved destination domain or a disallowed country is reported by the API already on save, not as an issue. See Five errors when saving an ad.
  • A bid that's too low. The API doesn't report that you're being outbid in the auction; that hint only exists in the OpenAI Ads Manager. More in Bidding in ChatGPT Ads explained.

In which order to proceed

Start at the top: first the account, then the campaign, then the ad group, finally the ad. An issue at a higher level often explains everything below it. Fix everything marked as blocking first, then reload the data — the issues only change with the next fetch. If nothing serves after that, the overview Why isn't my ad serving? helps.

Frequently asked questions

Where do I see the serving issues?
In Chatvertise as labels next to the status of campaigns, ad groups and ads, and in the structure view. In the API, OpenAI returns them in the serving_issues field when it's explicitly requested.
Why does the same issue appear on campaign, ad group and ad?
Issues are mirrored downward. If, for example, the campaign's budget is used up, its ad groups and ads also carry campaign_budget_exhausted. The cause always lies at the highest level that shows the issue.
What does an issue with partial_serving mean?
The level is serving, but not fully: some of the ads are still under review, rejected, or have a landing page problem. The rest keeps running normally.

Ready to advertise in ChatGPT?

Connect your account and launch your first ad in minutes.

Start for free