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

# Rename a dashboard or replace its layout

> Requires dashboard.update. The layout replaces the whole card list.

A layout is { cards: [{ type, x, y, w, h, config? }] } on a 12-column grid: x + w <= 12, w and h at least the card minimum, each type at most once.

Only funnel takes config: { steps } with 1-12 unique ids, built-in (impressions, reach, ad_click, page_view, add_to_cart, start_checkout, purchase) or request event names; omitted means the built-in steps.

Sales cards are the ones prefixed "sales" below; use them for a conversion dashboard.

Cards:
- profit (min 3x5): sales: profit, revenue, expenses, ROAS and orders
- sales_chart (min 4x5): sales: revenue over time against the previous period
- achievement (min 3x5): sales: team all-time revenue milestone (getProjectDashboardAchievement)
- funnel (min 3x5): sales: conversion funnel from impressions to purchase; config.steps picks the steps
- payment_methods (min 3x4): sales: sales by payment method
- payment_status (min 3x3): sales: pending, approved, refunded and charged-back sales
- platform_share (min 3x2): sales: sales by sales platform
- traffic_source_share (min 3x3): sales: sales by traffic source
- geo (min 6x6): traffic: accesses on a world map (getProjectDashboardGeo)
- accesses_total (min 2x2): traffic: total accesses
- accesses_unique (min 2x2): traffic: unique accesses
- accesses_real (min 2x2): traffic: accesses without bots
- accesses_bots (min 2x2): traffic: bot accesses
- clients_device (min 3x5): audience: accesses by device
- clients_browser (min 3x5): audience: accesses by browser
- clients_os (min 3x5): audience: accesses by operating system
- clients_utm (min 3x5): audience: accesses by UTM source, medium, campaign, term and content
- clients_referrer (min 3x5): audience: accesses by referrer
- revenue_utm (min 3x5): sales: revenue by UTM source, medium, campaign, term and content
- top_pages (min 3x5): traffic: most accessed pages
- link_accesses (min 3x5): traffic: accesses by link and by domain
- time_distribution (min 4x5): sales: accesses, sales and revenue by hour of day and weekday



## OpenAPI

````yaml https://api.trackup.me/openapi.json patch /v1/projects/{id}/dashboards/{dashboardId}
openapi: 3.1.0
info:
  title: Trackup API
  description: >-
    API-key-accessible Trackup operations. Send your key in the `X-Api-Key`
    header.


    Keys belong to a team. `X-Team-Id` is not required; if supplied, it must
    match that team.


    Each operation lists its required key permission. The key creator must
    remain a team member and normally hold that permission. The ingest-only
    permissions `visitor.create`, `conversion.create`, and `request.create` do
    not need to be held by the creator.


    Project access and selection are described per operation. Session-only
    account, administration and OAuth operations are not part of this reference.


    The same operations are available as MCP tools at `/mcp` (Streamable HTTP).
    Authenticate with `X-Api-Key` or connect through OAuth, which issues an API
    key on consent.


    Schema validation errors return HTTP 422 with an `errors` object. Other
    errors generally contain `error` and `message`; operation-specific responses
    describe exceptions.
  version: 1.0.0
servers:
  - url: /
    description: Current API environment
security:
  - ApiKey: []
paths:
  /v1/projects/{id}/dashboards/{dashboardId}:
    patch:
      tags:
        - Dashboards
      summary: Rename a dashboard or replace its layout
      description: >-
        Requires dashboard.update. The layout replaces the whole card list.


        A layout is { cards: [{ type, x, y, w, h, config? }] } on a 12-column
        grid: x + w <= 12, w and h at least the card minimum, each type at most
        once.


        Only funnel takes config: { steps } with 1-12 unique ids, built-in
        (impressions, reach, ad_click, page_view, add_to_cart, start_checkout,
        purchase) or request event names; omitted means the built-in steps.


        Sales cards are the ones prefixed "sales" below; use them for a
        conversion dashboard.


        Cards:

        - profit (min 3x5): sales: profit, revenue, expenses, ROAS and orders

        - sales_chart (min 4x5): sales: revenue over time against the previous
        period

        - achievement (min 3x5): sales: team all-time revenue milestone
        (getProjectDashboardAchievement)

        - funnel (min 3x5): sales: conversion funnel from impressions to
        purchase; config.steps picks the steps

        - payment_methods (min 3x4): sales: sales by payment method

        - payment_status (min 3x3): sales: pending, approved, refunded and
        charged-back sales

        - platform_share (min 3x2): sales: sales by sales platform

        - traffic_source_share (min 3x3): sales: sales by traffic source

        - geo (min 6x6): traffic: accesses on a world map
        (getProjectDashboardGeo)

        - accesses_total (min 2x2): traffic: total accesses

        - accesses_unique (min 2x2): traffic: unique accesses

        - accesses_real (min 2x2): traffic: accesses without bots

        - accesses_bots (min 2x2): traffic: bot accesses

        - clients_device (min 3x5): audience: accesses by device

        - clients_browser (min 3x5): audience: accesses by browser

        - clients_os (min 3x5): audience: accesses by operating system

        - clients_utm (min 3x5): audience: accesses by UTM source, medium,
        campaign, term and content

        - clients_referrer (min 3x5): audience: accesses by referrer

        - revenue_utm (min 3x5): sales: revenue by UTM source, medium, campaign,
        term and content

        - top_pages (min 3x5): traffic: most accessed pages

        - link_accesses (min 3x5): traffic: accesses by link and by domain

        - time_distribution (min 4x5): sales: accesses, sales and revenue by
        hour of day and weekday
      operationId: updateProjectDashboard
      parameters:
        - in: path
          name: id
          schema:
            type: string
            format: uuid
          required: true
        - in: path
          name: dashboardId
          schema:
            type: string
            format: uuid
          required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                layout:
                  type: object
                  properties:
                    cards:
                      type: array
                      items:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - profit
                              - sales_chart
                              - achievement
                              - funnel
                              - payment_methods
                              - payment_status
                              - platform_share
                              - traffic_source_share
                              - geo
                              - accesses_total
                              - accesses_unique
                              - accesses_real
                              - accesses_bots
                              - clients_device
                              - clients_browser
                              - clients_os
                              - clients_utm
                              - clients_referrer
                              - revenue_utm
                              - top_pages
                              - link_accesses
                              - time_distribution
                          x:
                            type: integer
                            minimum: 0
                          'y':
                            type: integer
                            minimum: 0
                          w:
                            type: integer
                            minimum: 1
                            maximum: 12
                          h:
                            type: integer
                            minimum: 1
                          config:
                            type: object
                            properties:
                              steps:
                                type: array
                                items:
                                  type: string
                                  pattern: ^[a-z0-9_]{1,40}$
                                minItems: 1
                                maxItems: 12
                            required:
                              - steps
                        required:
                          - type
                          - x
                          - 'y'
                          - w
                          - h
                      maxItems: 22
                  required:
                    - cards
      responses:
        '200':
          description: Updated dashboard.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dashboard'
        '401':
          description: The X-Api-Key header is missing or the API key is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: >-
            The key is expired, revoked, lacks permission, or its creator no
            longer has the required team access. A conflicting X-Team-Id is also
            rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: >-
            The requested resource was not found or is outside the permitted
            scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: >-
            Invalid input. Each field path maps to its first validation message;
            _form identifies an object-level error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: An unexpected error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
components:
  schemas:
    Dashboard:
      type: object
      properties:
        id:
          type: string
          format: uuid
        projectId:
          type: string
          format: uuid
        name:
          type: string
        isDefault:
          type: boolean
        layout:
          type: object
          properties:
            cards:
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                    enum:
                      - profit
                      - sales_chart
                      - achievement
                      - funnel
                      - payment_methods
                      - payment_status
                      - platform_share
                      - traffic_source_share
                      - geo
                      - accesses_total
                      - accesses_unique
                      - accesses_real
                      - accesses_bots
                      - clients_device
                      - clients_browser
                      - clients_os
                      - clients_utm
                      - clients_referrer
                      - revenue_utm
                      - top_pages
                      - link_accesses
                      - time_distribution
                  x:
                    type: integer
                  'y':
                    type: integer
                  w:
                    type: integer
                  h:
                    type: integer
                  config:
                    type: object
                    properties:
                      steps:
                        type: array
                        items:
                          type: string
                    required:
                      - steps
                required:
                  - type
                  - x
                  - 'y'
                  - w
                  - h
          required:
            - cards
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - id
        - projectId
        - name
        - isDefault
        - layout
        - createdAt
        - updatedAt
      example:
        id: 12121212-1212-4121-8121-121212121212
        projectId: 11111111-1111-4111-8111-111111111111
        name: Conversions
        isDefault: false
        layout:
          cards:
            - type: sales_chart
              x: 0
              'y': 0
              w: 8
              h: 5
            - type: profit
              x: 8
              'y': 0
              w: 4
              h: 5
            - type: funnel
              x: 0
              'y': 5
              w: 6
              h: 8
              config:
                steps:
                  - page_view
                  - add_to_cart
                  - purchase
        createdAt: '2026-10-26T12:00:00.000Z'
        updatedAt: '2026-10-26T12:00:00.000Z'
    ApiError:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
      required:
        - error
        - message
      additionalProperties: true
    ValidationError:
      type: object
      properties:
        errors:
          type: object
          additionalProperties:
            type: string
      required:
        - errors
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-Api-Key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.