List Google Ads campaigns

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns the app's Google Ads campaigns, including paused and deleted ones. Check status to tell them apart.

Each row carries the campaign's id, name, type, status, daily budget, and its performance metrics. Pass an id to Get campaign for the campaign's landing page, targeting, and phone number, which the list rows leave out, or to the pause, resume, update, and delete endpoints.

By default Base44 reads the metrics live from Google Ads. Pass include_metrics=false to skip that round trip, which returns the same fields with the metric ones zeroed and metrics_pending set to true. Either way primary_status comes back empty on this endpoint. Read one campaign to get it.

<Warning>The live read returns at most 50 campaigns, ordered by spend, and there is no pagination. An account with more than 50 active campaigns gets an incomplete list with nothing in the response to say so.</Warning>

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>

get/api/apps/{app_id}/google-ads/campaigns

Path parameters

app_idstring required

ID of the app whose Google Ads campaigns to manage.

ID of the app whose Google Ads campaigns to manage.

Query parameters

include_metricsboolean

Whether to include each campaign's performance metrics, which are fetched from Google on the fly. Pass false to return the cached campaign records on their own, which is faster.

Whether to include each campaign's performance metrics, which are fetched from Google on the fly. Pass false to return the cached campaign records on their own, which is faster.

Response

Successful Response

idstring required

Base44's ID for the campaign. Pass this as campaign_id on the other campaign endpoints.

google_campaign_idstring required

The campaign's ID in Google Ads.

campaign_namestring required

Name shown for the campaign.

campaign_typestring required

Campaign type.

statusstring required

Serving state. A status of REMOVED is a deleted campaign, which stays listed for reporting.

daily_budget_microsinteger required

Daily budget in micros of the account currency, so 15000000 is 15.00.

start_datestring required

Date the campaign started, or empty when it has not.

impressionsinteger required

Impressions, or 0 when metrics_pending is true.

clicksinteger required

Clicks, or 0 when metrics_pending is true.

cost_microsinteger required

Spend in micros of the account currency, or 0 when metrics_pending is true.

spendnumber required

Spend as a decimal amount, taken from cost_micros, for display.

conversionsnumber required

Conversions, or 0 when metrics_pending is true.

ctrnumber required

Click-through rate, or 0 when metrics_pending is true.

review_statusstring required

Google's policy review status. Always empty on a deleted campaign.

serving_statusstring required

Google's serving status. Always empty on a deleted campaign.

primary_statusstring required

Always empty on this endpoint. Read one campaign to get it.

primary_status_reasonsstring[] required

Google's reasons why the campaign is limited or not serving. Always empty on a deleted campaign.

metrics_pendingboolean nullable

Present and true only when you passed include_metrics=false, meaning the metric fields above are zeroed rather than measured.

Example response

[
  {
    "id": "68b1c0d4e7b91d003c45a1f2",
    "google_campaign_id": "21098765432",
    "campaign_name": "Spring sale in Berlin",
    "campaign_type": "SMART",
    "status": "ENABLED",
    "daily_budget_micros": 15000000,
    "start_date": "2026-08-25",
    "impressions": 15420,
    "clicks": 612,
    "cost_micros": 248000000,
    "spend": 248,
    "conversions": 31,
    "ctr": 0.0397,
    "review_status": "REVIEWED",
    "serving_status": "SERVING",
    "primary_status_reasons": [
      "CAMPAIGN_BUDGET_LIMITED"
    ],
    "metrics_pending": true
  }
]

Changes

Changed in 1 of the 11 revisions of this API.1