gads_propose_clone_campaign
Propose a copy of an existing Search campaign for a new market: a new campaign with its own budget and the locations and languages you give, carrying the source's ad groups (their
Propose a copy of an existing Search campaign for a new market: a new campaign with its own budget and the locations and languages you give, carrying the source's ad groups (their enabled keywords and best-performing live responsive search ad) and its campaign-level negative keywords. Locations are never copied from the source. It is built from synced data as one proposal, which always waits for a person to approve it; nothing is created in Google Ads before then. Because the copy arrives complete with ads, approving it starts delivery and spend at the budget you set, unless you pass startPaused: true to create it paused for a check first. An applied clone can be reverted, which removes the new campaign. Location ids are Google geo target constant ids (2250 = France); a GAQL query on geo_target_constant resolves a place name to its id.
Type: money-moving write. Every write is dry-run validated, then classified by the safe-apply policy — auto-applied when bounded and low-risk, otherwise queued for approval.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
sourceCampaignId | string | Yes | The campaign to copy. |
name | string | Yes | Name of the new campaign, as it should read in Google Ads. |
dailyBudgetMicros | integer | Yes | Daily budget in the account's currency, in micros: 1,000,000 micros = 1 unit (50000000 = 50.00 a day). |
biddingStrategy | "MAXIMIZE_CONVERSIONS" | "MAXIMIZE_CONVERSION_VALUE" | "MANUAL_CPC" | No | Defaults to the closest supported form of the source campaign's strategy. |
targetCpaMicros | integer | No | Optional target cost per conversion, in micros. Leave unset to launch without a target. |
targetRoas | number | No | Optional target return on ad spend as a ratio: 1.4 = 140%. Leave unset to launch without a target. |
geoTargets | object[] | Yes | Locations the campaign targets or excludes. At least one must be targeted. |
languageConstantIds | string[] | No | Google language constant ids. Default 1000 = English. (default: ["1000"]) |
adGroupIds | string[] | No | Subset of the source's ad groups to copy. Defaults to its enabled groups ordered by name (up to 20). |
enabledKeywordsOnly | boolean | No | Copy only the source's enabled keywords. Default true. (default: true) |
includeBestRsa | boolean | No | Copy each ad group's best-performing live responsive search ad. Default true. (default: true) |
searchPartners | boolean | No | Also serve on Google search partner sites. Default false. (default: false) |
startPaused | boolean | No | Create the copy paused when the approval applies, to enable it after a check. Default false: the copy has ads, so approving it starts spend. (default: false) |
reason | string | Yes | Why this change, shown to the approver. |
projectId | string | No | Target account (project id). Optional when exactly one authorized stored account exists. Use gads_list_ad_accounts or gads_get_connection_status to select among multiple accounts. |