# Validate and reconcile ChatGPT Ads bulk changes

> Tier: recipe. Operating recipe: real tool sequence, core rules, known traps.

Run ChatGPT Ads bulk changes with native validation, explicit confirmation, job tracking and individual operation results.

**Intent.** Validate bulk campaign operations, confirm the exact job and reconcile every outcome before declaring completion.

## When to use

- The user requests a batch of campaign, ad-group or ad changes.

## When not to use

- Treating an accepted job or a completed status as proof that every operation succeeded.

## Sources

Required: ChatGPT Ads

## Preconditions

- The selected account has native Bulk API access and the workspace permits writes.
- The account is ticked in the dashboard, confirmed via list_accounts.

## Inputs

- `window`: Analysis window. Default: last 30 days.

## Procedure

1. Read the bulk schema and account prerequisites. Use the distinct bulk operation bodies and dependency keys, not single-resource payloads. — tools: `openai_ads_get_write_schema`, `openai_ads_get_write_context`
2. Prepare validation-only, show the exact proposal, and submit only the confirmed job with stable request and operation keys. — tools: `openai_ads_submit_bulk_job`
3. Read job status, then every page of operation outcomes. Keep created, updated, validated, failed and skipped results separate. — tools: `openai_ads_get_bulk_job`, `openai_ads_get_bulk_job_operations`
4. Read affected campaigns, groups and ads and use the saved mutation receipt to reconcile uncertain responses. — tools: `openai_ads_get_campaign`, `openai_ads_get_ad_group`, `openai_ads_get_ad`, `openai_ads_get_mutation`

## Decision rules

- **When** A job is accepted or still processing → **conclude** Keep it in progress; report completion only after terminal status, operation outcomes and native entity readback.
- **When** Some operations fail or a result is uncertain → **conclude** Explain successful and unresolved operations separately. Partial failures do not roll back successful changes; never resubmit the original uncertain job.

## Evidence requirements

- Every figure carries its account, metric and window.
- Anything below a readable sample size is reported as unjudged, not as zero.

## Human approval boundary

- The human confirms the exact bulk proposal before submission. Campaign creation stays paused; activation needs a separate confirmed action.

## Failure modes

- Validation-only outcomes are not created entities. Keep validation and application results distinct.
- Bulk access is controlled by the native account; the existence of a tool does not grant that access.

## Output

- **Readout**: The figures, with windows and accounts named.
- **Flags**: What deserves a deeper skill or a human decision.

## Related

- Guide: [sources/chatgpt-ads](https://www.getmcpads.com/guides/sources/chatgpt-ads.md)
