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 any tracking written in as static UTMs.
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.
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.

