Create Google Ads campaign
<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>
Creates a campaign on the app's Google Ads account and starts serving it.
This spends money. The workspace needs a payment method on file and an account in good standing. Without either, the call returns a 402 and no campaign is created. A campaign is also created paused when the app's conversion tracking is not yet verified, so check status on the response rather than assuming it is serving.
Set campaign_type to SMART or PERFORMANCE_MAX. daily_budget_micros is in micros of the account currency and has a per-currency floor Google enforces. A budget below it comes back as a 400 carrying Google's reason, and the campaign is not created. Advertisers in the EU must declare whether the campaign carries political advertising. The call is rejected until that declaration is on file.
Google validates the campaign as it is created, so a rejected ad text, an unreachable landing page, or a budget below the floor comes back as a 400 with Google's own reason.
<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>
<Warning>A 409 means the change may or may not have been applied. The request to Google Ads timed out after it was sent. Read the campaign back with Get campaign before retrying, or you can end up applying it twice.</Warning>
<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time. Send only the fields documented here. Other request fields are not supported and their behavior can change.</Warning>
Path parameters
ID of the app to advertise.
ID of the app to advertise.
Request body
Response
Successful Response
Example response
{
"id": "68b1c0d4e7b91d003c45a1f2",
"google_campaign_id": "21098765432",
"campaign_name": "Spring sale in Berlin",
"campaign_type": "SMART",
"status": "ENABLED",
"daily_budget_micros": 15000000,
"landing_page": "https://example.com/spring",
"geo_targets": [
"1003854"
],
"phone_number": "+493012345678",
"learning_ends_at": "2026-09-08T11:20:00Z",
"review_status": "REVIEWED",
"serving_status": "SERVING",
"primary_status": "ELIGIBLE",
"primary_status_reasons": [
"CAMPAIGN_BUDGET_LIMITED"
],
"created_date": "2026-08-25T11:20:00Z",
"updated_date": "2026-08-25T14:05:00Z"
}Changes
Changed in 2 of the 11 revisions of this API.3
- ○
added the new optional request property
logo_urlnew-optional-request-property
- ○
added the new optional request property
settingsnew-optional-request-property
- ○
- ○
endpoint added
endpoint-added
- ○