Skip to main content

Purpose-built App API Reference

Introduction​

This page provides an exhaustive list of all the configuration options available for Purpose-built App plugins. For a guide on how to create a Purpose-built App plugin, see the quickstart guide. For an explanation of available features, see the deep dive.

Config Properties​

This section has a table with the full list of configuration properties that are specific to Purpose-built Apps inside of the config.json file of the plugin. All of these properties should be present at the top level inside of the metadata property in that file unless stated otherwise.

Notification Categories​

The notificationsFilter property allows you to specify which notification categories should be shown to users of your app. The following categories are available:

CategoryDescription
AdminApprovalsGet notifications about usage and other administrative events.
BenchmarksGet notified about benchmark-related events.
CollaborationGet notified whenever someone shares something with you or mentions you in a comment.
DashboardsGet notified about available reports and key metrics tracked by your organization.
DistributionsReceive a weekly email with insights about the health of distributions for selected projects and other status updates for sent or scheduled messages.
PulseGet notified about program or project status changes and setup issues.
ProgramsGet notified about program-related events.
RecommendationsGet recommendations from Qualtrics that help you use full potential of Qualtrics XM platform.
SecurityGet notified about security-related events.
SurveysReceive a weekly email summary about your survey response data and get real-time notifications about response anomalies.
TicketsGet notified about ticket assignments and status changes. (You might receive some ticket notifications even when the toggle is off based on your organization's preferences)
WorkflowsGet notified based on custom workflows set up for your organisation.

Subcategories can be specified using colon notation. For example, Recommendations:FirstLogin would filter for the FirstLogin subcategory within the Recommendations category.

You can learn more about notifications on this page.

Constant Properties

The portalType, tags and type properties should not be changed.

PropertyTypeDescriptionRequiredDefault
typestringshould always be "purposeBuiltApp"YesN/A
tagsstring arraymust contain "purposeBuiltApp"YesN/A
portalTypestringmust always be "INTERNAL". EXTERNAL and HIDDEN are internal-only portal types used by first-party Qualtrics portals and are not available to extension plugins.No"INTERNAL"
nameKeystringTranslation key for the app name from your plugin's translation fileYesN/A
descriptionKeystringTranslation key for the app description from your plugin's translation fileYesN/A
shouldQualtricsBeVisiblebooleanIf false, the user will not be able to switch from this app to the main Qualtrics experience.Notrue
tabsobjectsee Tabs PropertiesYesN/A
portalDataobjectDescribes style properties for the whole pba.Noundefined
portalData.headerColorstringThe color of the header in the app. Available options can be found hereNoundefined
portalData.logoUrlstringURL for the logo that can replace the Qualtrics logo in the top left hand corner of the appNoundefined
configurationSettingsobjectsee Configuration SettingsNoundefined
isDeprecatedbooleanIndicates whether this app is deprecated. More information can be found hereNofalse
deprecationMessagestringA message explaining the app deprecation. If isDeprecated is set to true, this message will be provided for more details.No"This app type is deprecated and will no longer be supported. Please create a new app using the updated app type."
deprecationLinkstringA URL where users can find more information about the app deprecation. If isDeprecated is set to true, then this URL will be given to users to find more information about how to migrate off of the deprecated appNoundefined
notificationsFilterstring arrayDefines which notification categories should be shown to users of this app. Can include subcategories using colon notation (e.g., Recommendations:FirstLogin). See Notification Categories for available options.Noundefined

Configuration Settings​

PropertyTypeDescriptionRequired
configurablebooleanWhether the user can configure the app. If set to false no other properties are permitted in the configurationSettings object.Yes
allowTabNameCustomizationbooleanWhether users can customize the names of tabs in the app. When set to false, tab names will be locked to their default values. Defaults to true.No
multiInstanceConfigurationobjectThe configuration for multi-instance apps. When specified, the app acts as a template that brands can use to create multiple instances. See Multi-instance Apps for details.No
multiInstanceConfiguration.authTypestringThe type of authorization that will be used for instances of the app. Must use "cxRoles" for its value. This property is required when using multiInstanceConfiguration.Yes (when multiInstanceConfiguration is used)
previewOptionsobjectContains all the fields to define how the preview on the configuration page should look.Yes
previewOptions.breadcrumbTypestringThe type of breadcrumb to display. DashboardBreadcrumb is the only valid option right now.No
previewOptions.previewElementsobject arrayAn array of preview elements that should appear in the preview. See Preview Elements for details.Yes
configurationSettings.configurationPanelobject arrayAn array of panels that display as tabs on the configuration page. See Configuration Panel for the properties of each panel.Yes

Configuration Panel​

PropertyTypeDescriptionRequired
idstringThe id of the panel. Any unique value is acceptable.Yes
pathstringThe path for the panel.Yes
nameKeystringThe translation key for the name of the panel.Yes
descriptionKeystringThe translation key for the description of the panel.Yes
iconNamestringIcon selected from the list of available Tab Icons link.Yes
paneTypestringThe type of panel to display. Must be "sections".Yes
sectionsobject arrayAn array of sections within a pane.Yes
sections.idstringThe ID of the section. Determines the section's contents. Valid values are "SupportContact", "Deactivate", "TabsSection", "EditLogo", "EditTheme", and "EnablementConfigurator".Yes
sections.nameKeystringThe translation key for the name of the section. Only applicable when the section's id is set to "EnablementConfigurator".No
sections.descriptionKeystringThe translation key for the description of the section. Only applicable when the section's id is set to "EnablementConfigurator".No

Tab Properties​

There are a few different types of tabs that can be used in a Purpose-built App. They are as follows:

  • multiPageDashboardTab - A tab that displays a specific page of a multi-page dashboard.
  • customBlockTab - A tab that displays a single page of content that is defined by a Custom Block plugin.
  • content - A tab that displays a single page of content inside of an iframe. The location to fetch the content from is defined by the href property.
PropertyTypeDescriptionApplicable Tab TypeRequired
typestringDefines the type of tab. Valid options are "content", "customBlockTab", and "multiPageDashboardTab"AllYes
iconNamestringIcon selected from the list of available Tab Icons linkAllYes
ordernumberDefines tab display order in the side navigationAllNo
accessControlsobjectDefines the permissions required for a user to be able to view this tab. See Access Controls for details on how to configure this. requirements is a deprecated alias for this same object and accepts the same shape.AllNo
themeTypestringColor theme applied to the tab. Valid values are "blue", "green", "greenblue", "purple", and "yellow". See Customize the look and feel.content, multiPageDashboardTabYes for multiPageDashboardTab, No for content
activeForGlobalWrapperConfigTypesobject arrayList of Global Wrapper contexts for which this tab should be shown as active. Each entry requires contextType and may optionally include resourceType, subresourceType, resourceId, and urlMatch.contentNo
pluginIdstringUnique ID of the Custom Block Plugin being used as a Custom TabcustomBlockTabYes
globalWrapperConfig.tabsListTypeStringType of tabsList for blocking navigation menus from the Global Wrapper. Must be allowList or blockList. See Global Wrapper Menu.contentNo
globalWrapperConfig.tabsListString[]List of tabs for blocking navigation menus from the Global Wrapper. See Global Wrapper Menu.contentNo
idstringUnique tab identifier, a human-readable id recommendedcontent, multiPageDashboardTabYes
nameKeystringTranslation key from your plugin's translation file. The text will be displayed as the title of the tab.content, multiPageDashboardTabYes
hrefstringDefines the URL which will be loaded when user navigates to the tabcontentYes
translationURLstringThe platform accepts this field but always overrides it with the plugin's own public/translations/ path, so setting it has no effect.content, multiPageDashboardTabNo
URLAllowListstring[]List of regular expressions to determine which URLs can always be opened in the given tab. If tab is enabled and visible for user these values will be included in portals allowed URLs listcontentNo
configurationSettingsobjectConfiguration settings for the tab.content, multiPageDashboardTabNo
configurationSettings.configurablebooleanIf set to true, the the tab will be configurable to the user.content, multiPageDashboardTabYes
configurationSettings.tabTitleKeystringTranslation key for the tab title.content, multiPageDashboardTabYes
configurationSettings.tabDescriptionKeystringTranslation key for the tab description.content, multiPageDashboardTabYes
configurationSettings.defaultEnabledStatebooleanIndicates the initial state of configurable tabs. When set to false, the tab will not be shown to users until the App configuration owner turns it on.content, multiPageDashboardTabYes

Custom Tab Properties​

Deprecation Notice

Custom Block plugins can currently contain some metadata that lets them configure how a Purpose-built App plugin should render a tab that uses it. This functionality will be deprecated in the future to make sure all configuration for Purpose-built Apps is done through the Purpose-built App plugin.

This table contains properties unique to a Custom Tab found in its config.json file:

PropertyTypeDescriptionRequired
configurationSettings.configurableBooleanIf set to true, the the tab will be configurable to the user.true
configurationSettings.tabTitleKeyStringTranslation key for the tab title.true
configurationSettings.tabDescriptionKeyStringTranslation key for the tab description.true
configurationSettings.defaultEnabledStateBooleanIndicates the initial state of configurable tabs. When set to false, the tab will not be shown to users until the App configuration owner turns it on.true
attachmentPointsObject arrayA List of Purpose-built App Plugins to which the Custom Block isfalse
attachmentPoints.appIdStringThe Unique ID of a particular Purpose-built App Plugin.true
attachmentPoint.orderNumberDefines the descending order in which tab should be displayed in the left-side navigation.false
Override Values

Fields like accessControls, iconName override values defined inside Custom Tab metadata.

Access Controls​

Access controls can be defined on specific tabs to further restrict who should have access to them. Most Purpose-built-apps do not need to use this. To control access to the app, you should use the privileges that are automatically created for your extension. If you need this feature to further restrict access to particular tabs, see the supported permissions below.

Access Control Properties​

PropertyTypeDescriptionRequired
AccountPermissionsString[]List of Account Permissions which need to be fulfilled in order to display the tab to the end userNo
AppPermissionsString[]List of App Permissions which need to be fulfilled in order to display the tab to the end userNo
ProjectPermissionsString[]List of Project Permissions which need to be fulfilled in order to display the tab to the end userNo
BrandPermissionsString[]List of Brand Permissions which need to be fulfilled in order to display the tab to the end userNo
CustomerJourneyOptimizerPermissionsString[]List of Customer Journey Optimizer Permissions which need to be fulfilled in order to display the tab to the end userNo
AIPermissionsString[]List of AI Permissions which need to be fulfilled in order to display the tab to the end userNo
ConfigurerPermissionsString[]List of permissions that must be enabled in order for the user to be able to change the configuration of the tabNo
featuresString[]List of Feature Flippers which need to be turned on in order to display the tab to the end userNo
requireQualtricsBooleanIf this is set to true, then the tab will only appear to the user if they also have access to the regular Qualtrics product as well.No
{
...
"metadata": {
...
"tabs": [
{
...
"accessControls": {
"AccountPermissions": ["accessSiteIntercept"],
"AppPermissions": ["cxDashboardPortalViewer"],
"features": ["Homepage.EnableUI"]
}
}
]
}
}

Supported Permission Values​

The platform supports a specific set of permission values for each permission type. Only the following permission values will be recognized:

AccountPermissions​

  • accessPanelManagement
  • accessResearchHub
  • accessSiteIntercept
  • administerSiteIntercept
  • allowHomepageWidgetPinning
  • approveMailings
  • createCBConjointProjects
  • createFrontlineFeedbackProjects
  • createMaxDiffProjects
  • createSurveys
  • createThreeSixties
  • createVocalizeProjects
  • createZone
  • enableBrandManagementHub
  • manageDirectory
  • searchResearchHub
  • useImportedDataProjects
  • useSearchReport
  • useVocalize
  • viewNewUserNavigationTour

AppPermissions​

  • cxDashboardPortalConfigurer
  • cxDashboardPortalViewer
  • exTeamPortalConfigurer
  • exTeamPortalViewer
  • manageContactCenterFrontlineApp
  • manageLocationAssistApp
  • managePatientExperienceHub
  • useContactCenterFrontlineApp
  • useLocationAssistApp
  • usePatientExperienceHub
  • viewXMPlatform

ProjectPermissions​

  • BXCategory
  • CXCategory
  • EXCategory
  • PXCategory
  • ResearchCoreCategory
  • employeeEngagement
  • employeeGeneralFeedback
  • employeeLifecycle
  • employeePulse
  • surveyPlatform
  • threeSixty

BrandPermissions​

  • DigitalExperienceAnalytics
  • ResearchHub
  • enablePatientExperienceHub
  • managerAssistDefaultActive
  • useCXActionPlanning
  • viewTARedesign

CustomerJourneyOptimizerPermissions​

  • actDataAnalyst
  • actJourneyAdministrator
  • actJourneyAnalyst
  • actJourneyDesigner
  • actJourneyPublisher

AIPermissions​

  • useInsightExplorer

features (Feature Flippers)​

  • CXUID2022
  • Homepage.EnableChangeManagementBanner
  • Homepage.EnableFavoritesInstructionalOverlay
  • Homepage.EnableNavTour
  • Homepage.EnableNewHomepageDesign
  • Homepage.EnableUI
  • Homepage.FAM.ServeHomepageAssets
  • Homepage.LocalizeNavTour
  • Portals.EnablePortalsHomepage
  • Portals.HpsCollection.DisableWrites
  • Portals.PbaCollection.EnableWrites
  • Portals.PbaCollection.SwitchReads
  • RP.UseRSDKReleaseCandidate
  • Widgets.EnablePinning
  • XMNotifications.HomepageNotificationsRevamp
  • XMNotifications.HomepagePrefetchInternal
  • XMNotifications.HomepageUseRevampedEndpoints
  • XMMobileFrontlineExperience

URL Allow List​

The URLAllowList property is used to control which URLs can be displayed within a tab and how URLs are routed to your app. For detailed information about URL handling and best practices, see Display Qualtrics Pages.