Add Negative Keyword
add_negative_keywordAdds negative keywords at CAMPAIGN or AD GROUP level (to stop wasted spend) — ONE keyword or a WHOLE BATCH in a single call.
BULK (use this whenever there is more than one keyword — one call, one confirmation, one credit): keywords=['ucuz|BROAD', 'iş ilanı|EXACT', 'kariyer'] — each item is 'text' (takes match_type, default PHRASE) or 'text|EXACT' / 'text|PHRASE' / 'text|BROAD', exactly like manage_shared_negative_list. A comma- or newline-separated string is accepted too. Up to 5000 per call. NEVER loop this tool one keyword at a time: the batch goes to Google as a single mutate with partial failure ON, so one bad or duplicate keyword can no longer take the rest of the batch down, every keyword comes back with its own ok/criterion_id/error, and nothing can be silently dropped between hand-made batches.
skip_existing=true (default) first reads the negatives already live on that campaign/ad group and skips exact (text + match type) duplicates — repeat daily runs then stay idempotent and do not burn the 10.000-negatives-per-campaign limit. Set false to write them anyway.
Give campaign_id to block the term across the whole campaign, or ad_group_id to block it in ONE ad group only — the latter is what cross-negation needs (each ad group serves only its own theme, negating the other groups' core terms inside a single campaign). If both are given, ad_group_id wins. Undo: remove_negative_keyword (bulk: criterion_ids=[...] or keywords=[...]) at campaign level; manage_keywords(action='remove') at ad group level — list_negative_keywords returns the ids. If confirm=false, returns a dry-run preview of the WHOLE batch.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| confirm | No | ||
| keywords | No | ||
| match_type | No | PHRASE | |
| ad_group_id | No | ||
| campaign_id | No | ||
| customer_id | Yes | ||
| skip_existing | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||