> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Google Ads campaign metrics

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

Reads live performance figures for every campaign on the account over a date window, in one call.

This goes to Google directly rather than to Base44's nightly copy, so the numbers include today. Use it to fill in a table you first drew from [List campaigns](/api-reference/list-google-ads-campaigns) with `include_metrics=false`.

`metrics` is keyed by the Google Ads campaign ID, not Base44's campaign ID. Join on the `google_campaign_id` field from the list endpoint. A campaign that had no activity in the window does not appear as a zero row, it is simply absent.

When Google cannot be reached you get an empty `metrics` map with `degraded` set to `true`, under a 200. Treat that as "unknown" rather than "nothing happened".

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



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json get /api/apps/{app_id}/google-ads/campaigns/metrics
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - ApiKeyAuth: []
paths:
  /api/apps/{app_id}/google-ads/campaigns/metrics:
    get:
      summary: Get Google Ads campaign metrics
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Reads live performance figures for every campaign on the account over a
        date window, in one call.


        This goes to Google directly rather than to Base44's nightly copy, so
        the numbers include today. Use it to fill in a table you first drew from
        [List campaigns](/api-reference/list-google-ads-campaigns) with
        `include_metrics=false`.


        `metrics` is keyed by the Google Ads campaign ID, not Base44's campaign
        ID. Join on the `google_campaign_id` field from the list endpoint. A
        campaign that had no activity in the window does not appear as a zero
        row, it is simply absent.


        When Google cannot be reached you get an empty `metrics` map with
        `degraded` set to `true`, under a 200. Treat that as "unknown" rather
        than "nothing happened".


        <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>
      operationId: campaign_metrics_api_apps__app_id__google_ads_campaigns_metrics_get
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose Google Ads reporting you want to read.
            title: App Id
          description: ID of the app whose Google Ads reporting you want to read.
          example: 6820f3a4e7b91d003c45a1f2
        - name: start_date
          in: query
          required: true
          schema:
            type: string
            description: First day to include, as `YYYY-MM-DD`. Inclusive.
            title: Start Date
          description: First day to include, as `YYYY-MM-DD`. Inclusive.
          example: '2026-08-01'
        - name: end_date
          in: query
          required: true
          schema:
            type: string
            description: Last day to include, as `YYYY-MM-DD`. Inclusive.
            title: End Date
          description: Last day to include, as `YYYY-MM-DD`. Inclusive.
          example: '2026-08-31'
      responses:
        '200':
          description: Metrics for each campaign with activity in the window.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleAdsCampaignMetricsResponse'
        '400':
          description: >-
            `start_date` or `end_date` is not `YYYY-MM-DD`, or `start_date` is
            after `end_date`.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            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':
          description: The app has no connected Google Ads account.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    GoogleAdsCampaignMetricsResponse:
      properties:
        metrics:
          additionalProperties:
            $ref: '#/components/schemas/GoogleAdsCampaignMetrics'
          type: object
          title: Metrics
          description: >-
            One entry per campaign, keyed by the Google Ads campaign ID. This is
            the `google_campaign_id` field from [List
            campaigns](/api-reference/list-google-ads-campaigns), not Base44's
            `id`, so join on that field. Campaigns with no activity in the
            window are left out entirely.
          example:
            '21458812345':
              clicks: 137
              conversions: 6
              cost_micros: 48200000
              ctr: 0.028
              impressions: 4821
        degraded:
          type: boolean
          title: Degraded
          description: >-
            `true` when Google could not be reached and `metrics` is empty for
            that reason rather than because nothing ran. Always check this
            before showing zeros.
          example: false
      type: object
      required:
        - metrics
        - degraded
      title: GoogleAdsCampaignMetricsResponse
      description: >-
        Live metrics for every campaign on the account, keyed by Google's
        campaign ID.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    GoogleAdsCampaignMetrics:
      properties:
        impressions:
          type: integer
          title: Impressions
          description: Times the campaign's ads were shown.
          example: 4821
        clicks:
          type: integer
          title: Clicks
          description: Clicks the campaign received.
          example: 137
        cost_micros:
          type: integer
          title: Cost Micros
          description: >-
            Spend over the window, in micros (1,000,000 micros = 1 unit of the
            account's currency).
          example: 48200000
        conversions:
          type: number
          title: Conversions
          description: Conversions Google attributed to the campaign.
          example: 6
        ctr:
          type: number
          title: Ctr
          description: Click-through rate as a fraction, so `0.028` is 2.8%.
          example: 0.028
      type: object
      required:
        - impressions
        - clicks
        - cost_micros
        - conversions
        - ctr
      title: GoogleAdsCampaignMetrics
      description: Performance figures for one campaign over the requested window.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````