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.

Dashboard Example

Dashboards are widely used in business environments for monitoring company performance, tracking sales trends, analyzing customer behavior, managing projects, and more. They are also valuable in non-business contexts, such as in healthcare for patient data monitoring or in education for tracking student performance.

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 designing dashboards, it is useful to try and stick to the following principles:

  • Structure: Organizing information logically based on user needs or business areas.
  • Navigation: Ensuring ease of movement within the dashboard through global and local navigation elements.
  • Hierarchy: Creating a visual and logical layout that highlights the most important information.
  • Grouping: Arranging similar information together for quick comparison and analysis.
  • Labeling: Using clear, concise labels for easy understanding of metrics and trends.
  • Filtering: Providing options to focus on specific, relevant data.

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:

UI
API
  1. Open a workspace.

  2. Click either the Create dashboard button:

    Create dashboard button

    Or the + button.

    + button for creating dashboards
  3. Name your dashboard.

    dashboard title

    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.

    drag and drop

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

  5. Double check 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.

    change date range

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

  6. Save the dasboard.

    save the dashboard

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

    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"
            }
        }
    }
}'

We recommend you use the GET API endpoint /api/v1/entities/workspaces/<workspace_id>/analyticalDashboards/<dashboard_id> to first reverse engineer other dashboards that suit your use case and adapt the API declarative layout to suit your needs.