# Manage

> Manage OpenAI ChatGPT Ads — activate, pause, rename, rebudget, retarget, or archive campaigns, ad groups, and ads, with confirmation gates on spend-starting and irreversible actions. Use when the user says "pause my chatgpt ads", "activate the campaign", "change the budget", "update the ad copy", "archive that campaign", or any management request for OpenAI/ChatGPT ads.

- Skill: `avyanshkatiyar/manage` (Agent Skill)
- Install (CLI): `npx skillmds@latest add avyanshkatiyar/manage`
- Raw SKILL.md: https://api.skillmd.com/api/skills/avyanshkatiyar/manage/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: AvyanshKatiyar (https://skillmd.com/u/avyanshkatiyar)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/avyanshkatiyar/manage

---


# OpenAI ChatGPT Ads — Manager

Manage existing campaigns, ad groups, and ads via the openai-ads MCP tools.

## Request

The user's request: $ARGUMENTS

## Workflow

### Step 1 — Identify the target

Resolve what the user means: `list_campaigns` / `list_ad_groups` / `list_ads`
and match by name or id. Ambiguous match → show candidates and ask. Show the
entity's current state (`get_*`) before changing it.

### Step 2 — Gate by action type

| Action | Gate |
| --- | --- |
| `pause_*` | Safe and reversible — do it, report old → new status. |
| `activate_*` | **Starts spend.** Show budget + targeting and ask "Activate now? Y/N" first. Remind: ads also need `review_status: approved` to actually deliver. |
| `update_*` | Show a before → after diff of exactly the fields changing, then apply. Partial nested objects (budget, creative, bidding_config) are auto-completed from current state — but say what the final object will be. Editing a creative re-triggers review. |
| `archive_*` | **Irreversible.** Quote the entity, say it can never be edited or reactivated, ask "Archive permanently? Y/N", and only then call with `confirm_archive=true`. |

### Step 3 — Verify and report

Re-fetch the entity after the change and report its actual new state, not the
intended one. For bulk requests ("pause everything"), list what matched, ask
once for the whole batch, then apply sequentially and report each result.

## Money reminders

Budgets and bids are micros in the account currency (`get_ad_account`):
1,000,000 micros = 1.00. Budgets are lifetime-only. `max_bid_micros` is per
impression ($60 CPM = 60,000). When the user says "set budget to $500", that is
`{"budget": {"lifetime_spend_limit_micros": 500000000}}`.

## Anti-patterns

- Archiving without the explicit permanent-deletion confirmation.
- Activating without showing what will start spending.
- Reporting success without re-fetching the entity.
- Guessing which "summer campaign" the user meant.

