Semaphor

Feature Visibility

Control which dashboard features and navigation controls are visible to your users

Overview

When embedding dashboards and the self-service experience, you can control which UI features and dashboard chrome are visible to your end users. Pass a config object in the token request to show or hide elements such as the SQL editor, Dashboard Hub navigation, sharing controls, or group management.

All features are enabled by default. You only need to pass config when you want to disable something.


Available Options

OptionDefaultDescription
showAdvancedModetrueControls the Advanced Mode toggle in the visual editor. When enabled, users can switch to the SQL editor to write and modify queries directly.
showInfoTabtrueControls the Info tab in the visual editor. The Info tab displays query execution details and diagnostics.
showQueryDebugToolstrueControls the Inspect payload button in the Info tab. When enabled, you can read the query request and response as JSON, and copy them, for troubleshooting.
showDashboardHubtrueControls the Dashboard Hub home button. Set it to false when an embedded user should remain within the dashboard selected by your application.
showDashboardSharingtrueControls the dashboard Share button. Existing dashboard sharing permissions still apply when this option is visible.
showGroupManagementtrueControls the Manage Groups entry under More options. Existing organization and tenant-role permissions still apply when this option is visible.
assistantoffThe assistant's options (enabled, name, layout). Unlike the options above, it is off until you enable it. See Assistant.

Visibility is not authorization

These settings only remove entry points from the embedded interface. Setting an option to true does not grant a permission the user does not already have, and server-side authorization continues to protect sharing and group management APIs. Do not use UI visibility settings as a security boundary.


Setting Feature Visibility

Pass the config object in your token request body. This works for both dashboard tokens and project tokens.

Dashboard Token

const requestBody = {
  dashboardId: DASHBOARD_ID,
  dashboardSecret: DASHBOARD_SECRET,
  config: { 
    showAdvancedMode: false, 
    showQueryDebugTools: false, 
  }, 
};

const response = await fetch(TOKEN_URL, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(requestBody),
});

Project Token

const requestBody = {
  type: 'project',
  projectId: PROJECT_ID,
  projectSecret: PROJECT_SECRET,
  endUserId: 'user_123',
  config: { 
    showAdvancedMode: false, 
    showInfoTab: false, 
    showDashboardHub: false, 
    showDashboardSharing: false, 
    showGroupManagement: false, 
  }, 
};

const response = await fetch(TOKEN_URL, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(requestBody),
});

Security Note

The token generation function must be run on the server side. Do not expose DASHBOARD_SECRET or PROJECT_SECRET in client-side code in production.


Default Behavior

All Features Enabled by Default

You only need to pass config when you want to explicitly disable a feature. Setting a flag to false hides it; omitting it or setting it to true keeps it visible.

Keep Users Within an Application-Selected Dashboard

For a focused embedded experience, issue a project or dashboard token with the three dashboard chrome settings disabled:

const tokenRequest = {
  type: 'project',
  projectId: PROJECT_ID,
  projectSecret: PROJECT_SECRET,
  endUserId: 'user_123',
  targetDashboardId: DASHBOARD_ID,
  config: {
    showDashboardHub: false,
    showDashboardSharing: false,
    showGroupManagement: false,
  },
};

This hides the Dashboard Hub button, Share button, and Manage Groups menu item for that token. Other More options actions, such as Export and Report preferences, remain available according to their own feature and permission rules.


On this page