Campaign drafts are a way of staging some set of intended changes to a base campaign. Each campaign draft has a base campaign and a draft campaign associated with it.
- The base campaign is a normal campaign in your account, with ads, ad groups, and other resources.
- The draft campaign is a virtual layer where changes are aggregated as you perform operations, but don't affect any real campaigns in your account. Once you are satisfied with the state of the draft campaign, you can apply it to a real campaign in a few different ways.
Creating a draft
Creating a CampaignDraft
is as simple as any other
entity creation in the Google Ads API. Create a CampaignDraft
and specify its
base_campaign
and
name
, then call
CampaignDraftService.MutateCampaignDrafts
,
passing in the newly created CampaignDraft
as a
create
operation.
The create
request behaves
like a typical API call in that a response is returned immediately.
Modifying a draft campaign
Once you create your campaign draft, you will need to look up the resource name
of its associated draft campaign so that you can begin making changes. You can
do this using the following query in
GoogleAdsService.SearchStream
:
SELECT campaign_draft.draft_campaign
FROM campaign_draft
WHERE campaign_draft.resource_name = "CAMPAIGN_DRAFT_RESOURCE_NAME_HERE"
Once you have your draft campaign resource name, you can modify that campaign the same way you would any real campaign in your account. The draft campaign cannot serve ads but serves as a staging area for changes that you can apply to a real campaign later.
Promote or remove a draft campaign
After you are done configuring your draft campaign, you have a few options.
- Promote the draft campaign to the base campaign, applying all the
changes you made in the draft campaign to the base campaign. This is an
asynchronous operation. This can be performed by calling
CampaignDraftService.PromoteCampaignDraft
. - Remove the campaign draft by setting its
status
toREMOVED
. This will throw away the changes if you decided not to proceed. This is a synchronous operation and works like any other API call.