A ChatGPT ads campaign is built in three levels: the campaign sets the objective, budget and target countries; ad groups sit under it, each carrying its own bid and context hints; and ads sit under each group with the title, copy, image and landing URL. Uploading a launch in bulk is just filling those three levels out correctly and validating them before you submit. Get the structure right and the rest is careful data entry.
The three levels of a campaign
Everything maps to a hierarchy, and keeping it clean is what makes a hundred-ad launch manageable rather than chaotic.
- +Campaign: objective (views or clicks), budget, and the countries you target. This is the top-level container.
- +Ad group: sits under a campaign, holds the max bid and the context hints that define one buyer situation.
- +Ad: sits under an ad group, holds the title, copy, square image and the landing URL for that specific message.
Because context hints live at the ad-group level, group your ads by intent, not by product. That single habit keeps the structure coherent and your situation targeting sharp.
The field rules that matter
Each level has fields that have to be right, and the ones that bounce a launch are predictable. Budgets are set daily. Bids are set per ad group. Target countries must come from the markets you are actually eligible to serve. Ads have to respect the character and image limits, and the landing URL has to belong to the verified business, with your own tracking parameters written in and the supported ID macros filled at delivery.
Validation gotchas
Most rejections come from a short list of avoidable mistakes:
- +A title or description over the character limit, even by one character.
- +An image outside the square 640-to-1200-pixel rule, or a logo used as the primary image.
- +A landing URL that does not match the verified business domain.
- +Context hints that are too broad, or that describe a product or claim the ad policies do not allow.
- +Target countries that include a market you are not eligible to serve.
Product feed campaigns in a bulk sheet
Until 30 September 2026 a bulk sheet could create campaigns, ad groups and ads, and a product feed campaign had to be built by hand in the interface. OpenAI's advertiser email that day says multiple product feed campaigns and ad groups can now be created from a spreadsheet, with the ad templates generated for you. The route is Campaigns, then Bulk uploads, then Bulk sheet, and the Product feed template is a separate download from the ordinary campaign schema.
Two things are worth knowing before you plan a launch around it. OpenAI's own bulk upload checklist and its product feed article have not been updated to describe any of this, so the email is currently the only description of how it behaves, and the Advertiser API has no bulk creation endpoint at all: this is an interface feature. And a feed campaign still targets at country level, where an ordinary campaign can target regions, cities and postal codes, so the structural trade-off that decides whether a feed suits you has not moved.
The same update adds a review status to the Products tab, so a product that was rejected now says why rather than quietly not serving. That tab is a reporting view and stays one: it fills from delivery data, so it can be empty for hours after a campaign starts without anything being wrong. Check the product count in the ad group creation flow to confirm what actually passed your filters, and allow up to seven hours before reading the Products tab as evidence of anything.
The Ads Manager plugin, and where it fits
Since 4 September 2026 there is a third way to build, next to the wizard and the bulk upload. OpenAI's ChatGPT Ads Manager plugin, installed from Plugins in ChatGPT or Codex and connected to your advertiser account, takes a website or a brief in plain language and turns it into ready-to-launch ads, creates variants, updates campaigns, troubleshoots delivery, reviews performance and proposes prioritised changes. It previews every change and asks for confirmation before applying it, so nothing goes live from a sentence. Whether you can install it depends on your ChatGPT plan, workspace, role and region, which is OpenAI's own qualifier.
The structure on this page is what the plugin builds too, and the same validation rules decide whether its output launches. The parts that still need a person are the ones this guide is about: which situation each group targets, whether the hints are policy-safe, and whether a hundred ads are actually distinct. Treat it as the drafting tool and keep the review pass.
Review before you upload
Run a human pass before submitting: check every ad against the limits, confirm each group's hints all point at one situation, and dedupe the near-identical ads that always creep into a large batch. A launch that validates on the first try saves days, because a bounced upload goes back into a review queue that is slower than usual right now. When you would rather hand the whole build over, we structure, validate and upload it for you.

