The short version
Bulk upload helps you create or update many supported Ads Manager campaign objects together. The hierarchy is campaigns → ad groups → ads. Use the current template, preserve its tabs and column names, validate the links between each level, and inspect row-level results after upload. OpenAI says campaign CSV upload does not currently create product-feed campaigns; use the dedicated feed workflow for those.
When bulk upload is useful
Choose bulk upload for a larger launch or coordinated edits across many objects. For a one-off budget, copy or pause change, the in-product editing flow is usually simpler. For bulk edits, start with Export for edit so the file includes the current IDs and field values. The upload schema is different from a CSV reporting export.
OpenAI’s beta schema and interface can change. Download the current template in your Ads Manager account before preparing a file; do not rely on an old spreadsheet or a copied list of columns.
How the three tabs connect
| Tab | What it contains | Key checks |
|---|---|---|
| Campaigns | Objective, budget, dates and country settings | Required fields, unique names and valid formats |
| Ad Groups | Groups of related ads under a campaign | Parent campaign matches exactly; context hints use the required JSON format |
| Ads | Creative, text, landing page and image | Ad-group reference matches; copy and URLs pass current requirements |
For example, if a campaign is named Lahore Solar Enquiries, spell it the same way wherever an ad-group row references it. Repeat the exact ad-group name in its Ads rows. Spaces, punctuation and capitalisation count. Use the IDs from a fresh export for existing objects and parent-child links.
OpenAI’s checklist currently states limits of 5,000 campaigns, 5,000 ad groups and 5,000 ads per account. It recommends ad titles of 16–24 characters (50 maximum) and ad copy of 32–48 characters (100 maximum). These are beta specifications: follow the current checklist and in-product validation if they change. Read OpenAI’s schema checklist.
Format the file carefully
Fields such as context hints use JSON arrays, for example ["solar installation in Lahore","compare residential solar providers"], rather than a plain comma-separated sentence. Country values also need the format specified in the current template; do not guess or reuse a different market’s sample.
Keep the template’s header row, tab names and column names unchanged. Avoid merged cells, duplicate object rows, and inconsistent parent names. Use valid dates in the requested format. Open landing pages while signed out and check that they load. Image URLs should open the image directly, without a login or preview-page redirect. OpenAI’s current checklist specifies publicly accessible square PNG or JPG images up to 1200 × 1200 pixels.
Creating new objects versus editing existing ones
- Update an existing object: retain its ID from a fresh Export for edit.
- Add an ad group to an existing campaign: use the correct campaign ID and leave the new ad-group ID blank, as the current template directs.
- Add an ad to an existing ad group: use the correct parent ad-group ID and leave the new ad ID blank.
A blank ID can tell Ads Manager to create a new object. If an upload partly succeeds, replaying the same successful row can create a duplicate. Check the row results and account objects before retrying. OpenAI recommends exporting current data before edits because the export contains the IDs and values needed to update the intended objects. See the current edit workflow.
Context hints are replaced as a complete field value during bulk edits; they are not automatically appended. Export the current list, make the changes, and upload the full set of hints you want that ad group to retain.
Pre-upload checklist
- Download the current schema template, or select Export for edit for the objects you will change.
- Confirm the correct advertiser account, objective and markets. Pakistan is listed in OpenAI’s availability list checked 27 October 2026; access does not guarantee account or campaign approval. Check current availability.
- Check required fields, unique names, dates, budget and country format.
- Match each campaign and ad-group reference exactly; validate JSON arrays.
- Review text limits, image dimensions, direct image URLs and landing-page access.
- Confirm object and parent IDs. Leave an ID blank only when you intentionally want to create a new object.
- Keep a dated working copy in a shared business folder and assign one person to own the upload. This is team practice, not an OpenAI requirement.
- Upload the intended object type and keep the row-level result report.
If the upload reports errors
Read the exact error and fix the fields it identifies. Then inspect row-level results to see what was created or updated successfully. Reconcile those objects before retrying, and submit only the rows that still need action. Do not assume a failed upload changed nothing: processing can succeed for some rows while others fail, and replaying a successful row with a blank ad ID can create a duplicate. Common causes include changed headers, name mismatches, invalid JSON, duplicate rows, stale IDs, or image and landing-page URLs that cannot be reached. For persistent errors, contact OpenAI support with the file and error details; never include passwords or card security information. OpenAI upload troubleshooting.
Quick answers
Can I create product-feed campaigns through campaign bulk upload?
No. OpenAI’s current Ads Manager documentation says campaign CSV upload does not create product-feed campaigns. Use the dedicated product-feed flow.
Does a bulk edit append context hints?
No. The uploaded list replaces the previous value. Export the existing hints and include the complete list you want to keep.
What if only some rows succeed?
Inspect each row’s outcome, confirm what was created or updated, and retry only the corrected rows that still need action. A blind full-file retry can create duplicates.
Should I rename tabs or headers to make the spreadsheet clearer?
No. Keep the tab names, header row and column names from the current Ads Manager template.
Are the 5,000-object limits permanent?
No. The current OpenAI checklist states those per-object limits, but the beta can change. Check the latest checklist before a large upload.