Tableau Dashboard Extensions allow you to embed custom web applications, third-party visualisations, and interactive controls directly in Tableau dashboards. Here is how they work and when to use them.
The quick answer
Tableau Dashboard Extensions are web applications that run inside Tableau dashboards, extending what a dashboard can do beyond Tableau's native visualisation and interaction capabilities. Extensions can display custom visualisations, embed third-party content, write data back to databases, integrate with external APIs, and create interactive experiences that are not possible with standard Tableau components. They are embedded as dashboard objects — the extension runs in a sandboxed iframe within the Tableau dashboard. Understanding when and how to use extensions is increasingly important for Tableau developers building sophisticated enterprise dashboards.
Types of extensions
**Dashboard Extensions**: web applications embedded directly in a Tableau dashboard as a zone object. They can interact with the dashboard — reading filter selections, reading marks in the viz, responding to user interactions. Dashboard Extensions can also write data back to external systems or trigger actions outside the dashboard.
**Viz Extensions**: custom visualisation components that render as chart types within a Tableau worksheet (rather than as a separate zone). Viz Extensions replace the native Tableau chart renderer for a specific sheet, enabling chart types that Tableau does not natively support — custom maps, chord diagrams, network graphs, specialised financial charts.
**Add-on Extensions**: newer extension type that appears as additional panes in the Tableau authoring interface. Less common; used primarily by tool vendors integrating with Tableau's authoring workflow.
What extensions can do
**Access dashboard state**: extensions can read the current state of the dashboard — what filters are applied, what marks are selected, what parameter values are set. An extension that shows a commentary panel populated with context based on the current filter selection is a common pattern.
**Write back to data sources**: extensions can write data to external databases or APIs — common use cases include target-setting dashboards (user enters a target value, extension writes it to a database), annotation tools (user adds a note to a data point, extension stores it), and approval workflows (user marks a record as reviewed, extension updates the status in the operational system).
**Embed third-party content**: display content from external systems (JIRA issues linked to data points, Salesforce opportunity details, custom interactive maps from Mapbox) contextually within the Tableau dashboard, correlated to what the user is viewing.
**Custom visualisations**: render chart types not available natively in Tableau — Sankey diagrams, radial charts, hierarchical treemaps with custom drill-down behaviour, calendar heatmaps, custom scorecard layouts.
**Dynamic filtering and interactions**: build custom filter UI (a multi-select dropdown with live search and hierarchical grouping) that is more usable than Tableau's native filter controls for complex filtering scenarios.
The Tableau Extensions API
Extensions are built on the Tableau Extensions API — a JavaScript library that exposes the dashboard state and provides methods for interacting with it. The extension runs in a browser context (an iframe) and communicates with the Tableau client via the Extensions API.
**Key API capabilities**: getDashboard() to access dashboard metadata; getFiltersAsync() to read current filter state; getSelectedMarksAsync() to read the current mark selection; addEventListener() to subscribe to filter change events, selection change events, and parameter change events.
**Initialisation**: every extension calls tableau.extensions.initializeAsync() on load, which establishes the connection to the Tableau client. After initialisation, the extension has access to the dashboard object and can begin reading state.
**Settings persistence**: extensions can store configuration settings in the Tableau workbook using tableau.extensions.settings.set() — this persists key-value pairs in the workbook's extension settings, enabling configuration (API endpoints, display options) to be saved with the workbook.
Building an extension
An extension is a web application — HTML, CSS, and JavaScript — served from a web server. The manifest file (a .trex file, in XML format) declares the extension's metadata: name, description, URL of the hosted web application, and permissions requested. The .trex file is what users load into a Tableau dashboard to add the extension.
The development workflow: build the web application locally (using any JavaScript framework — React, Vue, plain JS), test it by loading the .trex file into Tableau Desktop, and deploy the web application to a hosting service (S3 + CloudFront, Vercel, any static hosting or application server) for production use.
**Tableau Sandboxed Extensions**: for extensions that will be distributed publicly or run in security-sensitive environments, sandboxed extensions are hosted by Tableau/Salesforce rather than by a third-party server. Sandboxed extensions have restrictions on external API calls (all data must come through the Extensions API, not from external network requests) to prevent data exfiltration.
Security considerations
Because extensions run in iframes with access to the dashboard's data context, they are a potential security surface. Enterprise Tableau administrators should:
**Allowlist extensions**: in Tableau Server and Cloud administration, configure which extensions are permitted to run. By default, extensions require admin approval. Maintain a list of approved extensions and block unapproved ones.
**Prefer Tableau-hosted (sandboxed) extensions**: for extensions from third-party vendors, prefer those hosted on Tableau's Extension Gallery (Tableau-hosted) over self-hosted extensions from unknown sources.
**Review extension permissions**: extensions request specific permissions in their .trex file — review requested permissions before approving. An extension requesting permission to read all data in the workbook is more privileged than one requesting only filter state.
**Network isolation**: for highly sensitive environments, Tableau Server can be configured to block extensions from making outbound network calls entirely, restricting them to the Extensions API only.
The Tableau Extension Gallery
Tableau maintains the Extension Gallery — a curated marketplace of pre-built extensions from Tableau and third-party vendors. Notable extensions: Narrative Science/Quill (natural language narrative generation from data), Interworks WIP (writeback and annotation tools), Carto (advanced mapping), various custom chart type libraries. The Gallery is the starting point for evaluating extensions before building custom solutions.
When to build a custom extension
Build a custom extension when: a use case requires tight integration between Tableau's interactive state and a custom UI or external system; the requirement involves writing data back to an external system; standard Tableau interaction patterns are insufficient for the workflow; or a chart type genuinely unavailable in Tableau is required.
Do not build a custom extension when: the use case can be solved with standard Tableau features (filters, parameters, calculated fields, actions); the complexity of building and maintaining a web application outweighs the benefit; or a pre-built extension in the Gallery already covers the use case.
For Tableau embedding in custom applications (a related but distinct capability), see tableau embedding guide. For Tableau REST API automation that often complements extensions, see tableau rest api guide. For the broader Tableau Server environment, see tableau server admin guide.
Our Tableau consulting practice designs and builds custom Tableau extensions — from writeback tools and commentary panels through custom visualisations and third-party integrations. Book a free 30-minute audit to discuss your extension requirements.
A former Microsoft data architect audits your data foundation, identifies your top priorities, and sends you a written plan. Free. No pitch.
Book a Call →