---
title: "Get Google Ads performance dashboard"
method: GET
path: "/api/apps/{app_id}/google-ads/analytics/dashboard"
---

# Get Google Ads performance dashboard

`GET /api/apps/{app_id}/google-ads/analytics/dashboard`

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

Returns the account's spend, clicks, impressions, conversions and return on ad spend for a date window, each with its change against the previous window of the same length, plus a per-campaign breakdown.

Base44 reads these numbers from Google Ads on every call. When Google is unavailable it falls back to its own nightly copy, which is the same shape minus `trend` and `conversion_goals`: write your client to treat both as optional rather than assuming the live shape.

Archived campaigns stay in both the totals and the breakdown, so the rows always sum to the figures above them.

`conversions` and `conversions_trend` are `null` for an account that records no conversions and has no conversion tracking configured, so a real zero stays distinguishable from an untracked account. [List conversion actions](/api-reference/list-google-ads-conversion-actions) shows whether the account has any goals at all.

Set `include_campaign_trend` to `false` to drop the per-campaign daily sparkline. It costs one Google Ads row per campaign per day, so leaving it on is noticeably slower on an account with many campaigns and a long window.

<Note>`start_date` and `end_date` are inclusive and must both be `YYYY-MM-DD`. Anything else is rejected with a 400.</Note>

<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>

## Path parameters

- `app_id` string, required — ID of the app whose Google Ads reporting you want to read.

## Query parameters

- `start_date` string, required — First day of the window, as `YYYY-MM-DD`. Inclusive.
- `end_date` string, required — Last day of the window, as `YYYY-MM-DD`. Inclusive.
- `include_campaign_trend` boolean — Include each campaign's daily series in `campaign_breakdown[].trend`. Set it to `false` to leave the series out, which is significantly faster on an account with many campaigns or a long window.

## Response `200`

The account's totals for the window, plus a row per campaign.

- DashboardResponse — Account-wide totals for the window, plus a per-campaign breakdown.
  - `spend` number, required — Amount spent in the window, in the account's currency.
  - `spend_trend` number, nullable — Percentage change in spend against the previous window of the same length. `null` when the previous window had no spend to compare against.
  - `impressions` integer, required — Impressions in the window.
  - `impressions_trend` number, nullable — Percentage change in impressions against the previous window.
  - `clicks` integer, required — Clicks in the window.
  - `clicks_trend` number, nullable — Percentage change in clicks against the previous window.
  - `conversions` number, nullable — Conversions in the window. `null` when the account has no conversion tracking configured and recorded none, because the number would read as a real zero.
  - `conversions_trend` number, nullable — Percentage change in conversions against the previous window. `null` whenever `conversions` is `null`.
  - `roas` number, required — Return on ad spend: conversion value divided by spend. `0` when nothing was spent.
  - `roas_trend` number, nullable — Percentage change in return on ad spend against the previous window.
  - `campaign_breakdown` DashboardCampaignRow[], required — One row per campaign that has metrics in the window, archived campaigns included, so the rows sum to the totals above.
    - `id` string, required — The Google Ads campaign ID. This is not the Base44 campaign ID the campaign endpoints take, which is reported as `id` by [List campaigns](/api-reference/list-google-ads-campaigns).
    - `name` string, required — Name of the campaign.
    - `status` string, required — Google Ads campaign status, one of `ENABLED`, `PAUSED`, or `REMOVED`.
    - `campaign_type` string, required — Google Ads channel type, for example `SEARCH`, `PERFORMANCE_MAX`, or `SMART`.
    - `spend` number, required — Amount spent in the window, in the account's currency.
    - `impressions` integer, required — Impressions in the window.
    - `clicks` integer, required — Clicks in the window.
    - `conversions` number, required — Conversions in the window.
    - `conversions_value` number, required — Total value of those conversions, in the account's currency.
    - `ctr` number, required — Click-through rate for the window, as a percentage. `0` when the campaign had no impressions.
    - `trend` DashboardTrendPoint[], nullable — Daily series for this campaign. Present when `include_campaign_trend` is true, and always present when Base44 served its own copy of the numbers, which builds it regardless of the flag.
      - `date` string, required — The day, as `YYYY-MM-DD`.
      - `clicks` integer, required — Clicks across the account that day.
      - `conversions` number, required — Conversions across the account that day.
    - `conversion_goals` DashboardConversionGoal[], nullable — This campaign's share of each conversion goal. Absent when Base44 served its own copy of the numbers, and `null` when the goal read failed.
      - `category` string, required — Google Ads conversion category, for example `PURCHASE` or `SUBMIT_LEAD_FORM`.
      - `name` string, required — Name of the goal as Google Ads reports it.
      - `conversions` number, required — Conversions recorded against this goal in the window. Goals that recorded nothing are still listed, with `0`.
  - `top_search_terms` DashboardTopSearchTerm[] — Up to four search terms that drove the most clicks in the last 30 days, regardless of the window you asked for. Empty when the term read failed or the account has no campaigns yet.
    - `term` string, required — The search term someone typed.
    - `clicks` integer, required — Clicks the term drove in the last 30 days.
  - `monthly_spend_cap_micros` integer — The account's monthly spend cap in micros, or `0` when no cap is set. Absent when the account has no synced campaigns yet.
  - `includes_estimated` boolean, required — `true` when some rows are Base44's own estimate rather than a figure Google reported.
  - `trend` DashboardTrendPoint[], nullable — Account-wide daily series for the window. Absent when Base44 served its own copy of the numbers instead of Google's live figures.
    - `date` string, required — The day, as `YYYY-MM-DD`.
    - `clicks` integer, required — Clicks across the account that day.
    - `conversions` number, required — Conversions across the account that day.
  - `conversion_goals` DashboardConversionGoal[], nullable — Every conversion goal on the account with its count for the window. Absent when Base44 served its own copy of the numbers, and `null` when the goal read failed.
    - `category` string, required — Google Ads conversion category, for example `PURCHASE` or `SUBMIT_LEAD_FORM`.
    - `name` string, required — Name of the goal as Google Ads reports it.
    - `conversions` number, required — Conversions recorded against this goal in the window. Goals that recorded nothing are still listed, with `0`.

## Other responses

- `400` — `start_date` or `end_date` is not `YYYY-MM-DD`.
- `401` — Missing or invalid credentials.
- `403` — You don't have access to this app, the app does not exist, or you used a workspace API key. A missing app and an app you cannot reach are deliberately the same answer.
- `404` — The app has no connected Google Ads account.
- `422` — Validation Error

## Changes

- **2026-08-26** `f2727732ced1` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/idealspot/apis/base44-app-management-api/changes/api/apps/:app_id/google-ads/analytics/dashboard/get.md)

---

[API](https://skmtc.dev/idealspot/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/idealspot/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/idealspot/base44-app-management-api/revisions/394136a6cdd4/schema)
