ads_negatives_update
Batch add or remove negative keywords with automatic checks against live keywords so no traffic gets blocked. Dry run by default, then reads back the updated terms.
Instructions
Add or remove negative keywords in a batch, enumerated one by one with no pattern form. Before adding, every proposed negative is checked against the campaign's own live keywords and the batch is refused if one would block traffic, because a wrong negative leaves no evidence anywhere: the traffic just stops. Dry run unless dryRun is false, and the terms are read back afterwards
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Where the negatives live. A campaign-level negative blocks the term everywhere in that campaign | campaign |
| action | Yes | Add negative keywords or remove existing ones. Removal matters as much as adding: a wrong negative shows up as nothing at all | |
| dryRun | No | Report what would change, and which proposed negatives would block a live keyword, without changing anything | |
| target | Yes | The campaign or ad group name. It must match exactly one or nothing is changed | |
| confirm | No | Perform the batch even though a guard tripped. The dry run lists what tripped, so this confirms something already read | |
| keywords | Yes | The negative terms, enumerated one by one. There is no pattern or match-all form: a selector is one typo away from blocking a whole campaign | |
| matchType | No | How each term blocks. BROAD blocks any query containing all its words, which is the setting that can silently kill a campaign | EXACT |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| level | Yes | ||
| notes | Yes | ||
| action | Yes | ||
| guards | Yes | ||
| target | Yes | ||
| applied | Yes | ||
| changed | Yes | ||
| skipped | Yes | Terms not sent, because they are already present when adding or absent when removing | |
| matchType | Yes | ||
| requested | Yes | ||
| collisions | Yes | Proposed negatives that would stop one of this campaign's own live keywords from serving. This is the error that otherwise produces no evidence at all |