Create Dashboards

Learn to design, create, and manage interactive dashboards.

What Are Dashboards

Dashboards are interactive tools used for displaying visualizations in an easily digestible format. The primary purpose of a dashboard is to provide a quick, at-a-glance view of key performance indicators (KPIs) and other relevant data to support decision-making.

Example of a dashboard displaying KPIs such as Net Sales, Orders, Active Customers, and Gross Profit Margin, along with bar and line charts showing weekly net sales and total sales trends over time.

Dashboards are powerful tools widely used in business to monitor performance, track sales trends, analyze customer behavior, manage projects, and more. Beyond business, dashboards are equally valuable in fields like healthcare (for monitoring patient data) and education (for tracking student progress and performance). They are also used in many other areas where clear, real-time insights are needed.

GoodData supports extensive Dashboard customization in both form and function. See Customize Appearance, or if you are a React developer, also check out our React SDK.

Designing Your Dashboards

When creating dashboards, we recommend following these key principles to ensure clarity, usability, and impact:

  • Structure – Organize information in a way that reflects user needs or business domains. Group related insights together to support logical flow.
  • Navigation – Make it easy to move around the dashboard using clear global and local navigation elements.
  • Hierarchy – Design layouts that draw attention to the most important metrics first, using size, placement, or color to show priority.
  • Grouping – Place similar data points or visualizations near each other to allow quick comparisons and easier analysis.
  • Labeling – Use simple, clear labels to describe charts, metrics, and filters so users can understand the data at a glance.
  • Filtering – Offer filter options so users can drill down into specific segments relevant to their interests.

For a detailed exploration of these principles, you can read the blog article Six Principles of Dashboard Information Architecture.

Create a Dashboard

Once you have a workspace with some visualizations, you can proceed to create a dashboard:

  1. Open a workspace.

  2. Click either the Create dashboard button:

    The Create Dashboard button highlighted on the welcome screen of an empty Workspace.

    Or the + button.

    The Create Dashboard button with a plus symbol is highlighted at the top of the left panel, above the list of existing dashboards.
  3. Name your dashboard.

    Input field to name the dashboard, with Budget Overview entered.

    Note:

    It’s important to note that the dashboard titles are publicly accessible through the API, meaning that users can obtain them even if they lack the necessary permissions to access the actual dashboards. While users may not have access to the dashboards themselves, if they call the /api/v1/actions/workspaces/{workspaceId}/dependentEntitiesGraph API endpoint, they can retrieve a string that includes the titles of dashboards.

  4. Drag one or more visualizations into the dashboard.

    A visualization named Budget Spend is dragged from the list of visualizations on the left panel and dropped into a dashboard layout.

    You can move the visualizations around and resize them. See Configure a Dashboard Layout for details.

  5. Check if the Date range filter is set to the appropriate date range. The value you select will be the default value for all users when they open the dashboard for the first time.

    Date range filter set to This Month with the dropdown showing other options like All Time.

    You can also add more filters. See Add Filters to Dashboards for details on how filters in dashboards work.

  6. Save the dashboard.

    Dashboard titled Budget Overview showing visualizations and the Save button highlighted in the top right corner.

    Note that by default, the dashboard is private. To let other users in your organization access it, you need to share it with them first.

    Share button in the dashboard toolbar highlighted for sharing with others.

    See Share Dashboards for details.

To add a new dashboard to your workspace, make a POST call to the API endpoint /api/v1/entities/workspaces/<workspace_id>/analyticalDashboards/ and include the dashboard’s declarative API layout definition in the body of the call:

curl $HOST_URL/api/v1/entities/workspaces/<workspace_id>/analyticalDashboards \
-X POST
-H "Authorization: Bearer $API_TOKEN" \
-H 'Content-Type: application/vnd.gooddata.api+json' \
-d '{
    "data": {
        "id": "<dashboard_id>",
        "type": "analyticalDashboard",
        "attributes": {
            "title": "<dashboard_title>",
            "description": "",
            "content": {
                "layout": {
                    "type": "IDashboardLayout",
                    "sections": [
                        {
                            "type": "IDashboardLayoutSection",
                            "header": {},
                            "items": [
                                {
                                    "type": "IDashboardLayoutItem",
                                    "widget": {
                                        "type": "insight",
                                        "insight": {
                                            "identifier": {
                                                "id": "<visualization_id>",
                                                "type": "visualizationObject"
                                            }
                                        },
                                        "ignoreDashboardFilters": [],
                                        "drills": [],
                                        "title": "<visualization_title>",
                                        "description": ""
                                    },
                                    "size": {
                                        "xl": {
                                            "gridHeight": 11,
                                            "gridWidth": 2
                                        }
                                    }
                                },
                                {
                                    "type": "IDashboardLayoutItem",
                                    "widget": {
                                        "type": "insight",
                                        "insight": {
                                            "identifier": {
                                                "id": "<visualization_id>",
                                                "type": "visualizationObject"
                                            }
                                        },
                                        "ignoreDashboardFilters": [],
                                        "drills": [],
                                        "title": "<visualization_title>",
                                        "description": ""
                                    },
                                    "size": {
                                        "xl": {
                                            "gridHeight": 22,
                                            "gridWidth": 6
                                        }
                                    }
                                }
                            ]
                        }
                    ]
                },
                "version": "2"
            }
        }
    }
}'

You can use the GET API endpoint to reverse-engineer existing dashboards that are similar to your use case:

/api/v1/entities/workspaces/<workspace_id>/analyticalDashboards/<dashboard_id>

You can then adapt the returned declarative layout to create or customize dashboards that fit your specific needs.

Technical Limits

FeatureLimitDetails
Dashboard content definition250,000 charactersThe maximum size for the content in the /analyticalDashboardsAPI entity.

Limits in a dedicated cluster can be changed after considering the individual use case.