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

# Build Google Ads tracking fix prompt

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

Creates the app's Google Ads conversion goals if it does not have them, then returns an instruction that tells the AI how to install conversion tracking in the app.

Send the returned `composer_prompt` to [Send chat message](/api-reference/send-chat-message) and the AI does the wiring for you. Publish the app afterwards, because Google Ads only records conversions from the published app. Pair it with [Scan Google Ads conversion tracking](/api-reference/scan-google-ads-conversion-tracking) to see what needs fixing first.

This call changes the Google Ads account. Any goal missing from the standard set is created on it, covering `PURCHASE`, `ADD_TO_CART`, `BEGIN_CHECKOUT`, `SIGNUP`, `SUBMIT_LEAD_FORM`, `CONTACT`, `REQUEST_QUOTE`, `BOOK_APPOINTMENT`, `SUBSCRIBE_PAID`, and `PHONE_CALL_LEAD`. Creating a goal is not reversible through this API. Read [List Google Ads conversion actions](/api-reference/list-google-ads-conversion-actions) first if you want to know what the account already has.

Send `wire_events` as `true` to get a prompt that also wires each of the account's enabled [conversion mappings](/api-reference/list-google-ads-conversion-mappings), instead of only installing the base tag. On an account that has enabled mappings, that path waits for Google to publish the tag for each mapped goal and retries the read up to four times about a second apart, so the request can take several seconds.

<Note>Only `wire_events` is supported in the body. The builder UI sends a snapshot of the app's source alongside it, which is internal and not part of this API.</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 post /api/apps/{app_id}/google-ads/tracking-scan/build-bootstrap-prompt
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/tracking-scan/build-bootstrap-prompt:
    post:
      summary: Build Google Ads tracking fix prompt
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Creates the app's Google Ads conversion goals if it does not have them,
        then returns an instruction that tells the AI how to install conversion
        tracking in the app.


        Send the returned `composer_prompt` to [Send chat
        message](/api-reference/send-chat-message) and the AI does the wiring
        for you. Publish the app afterwards, because Google Ads only records
        conversions from the published app. Pair it with [Scan Google Ads
        conversion tracking](/api-reference/scan-google-ads-conversion-tracking)
        to see what needs fixing first.


        This call changes the Google Ads account. Any goal missing from the
        standard set is created on it, covering `PURCHASE`, `ADD_TO_CART`,
        `BEGIN_CHECKOUT`, `SIGNUP`, `SUBMIT_LEAD_FORM`, `CONTACT`,
        `REQUEST_QUOTE`, `BOOK_APPOINTMENT`, `SUBSCRIBE_PAID`, and
        `PHONE_CALL_LEAD`. Creating a goal is not reversible through this API.
        Read [List Google Ads conversion
        actions](/api-reference/list-google-ads-conversion-actions) first if you
        want to know what the account already has.


        Send `wire_events` as `true` to get a prompt that also wires each of the
        account's enabled [conversion
        mappings](/api-reference/list-google-ads-conversion-mappings), instead
        of only installing the base tag. On an account that has enabled
        mappings, that path waits for Google to publish the tag for each mapped
        goal and retries the read up to four times about a second apart, so the
        request can take several seconds.


        <Note>Only `wire_events` is supported in the body. The builder UI sends
        a snapshot of the app's source alongside it, which is internal and not
        part of this API.</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: >-
        build_bootstrap_prompt_api_apps__app_id__google_ads_tracking_scan_build_bootstrap_prompt_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              ID of the app whose Google Ads conversion tracking you want to
              manage.
            title: App Id
          description: >-
            ID of the app whose Google Ads conversion tracking you want to
            manage.
          example: 6820f3a4e7b91d003c45a1f2
      requestBody:
        content:
          application/json:
            schema:
              title: BuildTrackingFixPrompt
              type: object
              properties:
                wire_events:
                  type: boolean
                  description: >-
                    Whether the prompt should also wire the account's enabled
                    conversion mappings (`true`) or only install the base tag
                    (`false`).
                  default: false
                  example: true
            example:
              wire_events: true
      responses:
        '200':
          description: The prompt to send to the AI.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrackingFixPromptResponse'
        '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.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    TrackingFixPromptResponse:
      properties:
        composer_prompt:
          type: string
          title: Composer Prompt
          description: >-
            The instruction to send to [Send chat
            message](/api-reference/send-chat-message). It ends with a reminder
            to publish, because Google Ads only records conversions from the
            published app. The value is an empty string when `skipped_reason` is
            set.
          example: |-
            Wire up Google Ads conversion tracking for this app.

            Call get_capability_guide("google_ads") first, then follow it.
        conversion_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Conversion Id
          description: >-
            The gtag conversion ID baked into the prompt, or an empty string
            when the prompt tells the AI to look each one up instead of carrying
            a concrete ID. Absent when `skipped_reason` is set.
          example: AW-123456789
        actions_created_or_existing:
          anyOf:
            - type: integer
            - type: 'null'
          title: Actions Created Or Existing
          description: >-
            How many conversion goals the account has after this call, counting
            the ones it already had. Absent when `skipped_reason` is set.
          example: 10
        wired_mappings:
          anyOf:
            - type: integer
            - type: 'null'
          title: Wired Mappings
          description: >-
            How many of the account's conversion mappings the prompt carries
            wiring guidance for. When you send `wire_events` and the account has
            no enabled mapping, this reports the number of conversion categories
            the prompt offers instead, so read any value above `0` as a sign
            that the prompt carries wiring guidance rather than as a mapping
            count. Absent when `skipped_reason` is set.
          example: 3
        skipped_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Skipped Reason
          description: >-
            Why no prompt was produced. The only value is
            `no_google_ads_account`, which means the app has no Google Ads
            account that can carry conversion tracking. The field is absent
            whenever a prompt was produced.
          example: no_google_ads_account
      type: object
      required:
        - composer_prompt
      title: TrackingFixPromptResponse
      description: A ready-made instruction for the AI to install conversion tracking.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    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.

````