CINXE.COM
Add Viz Extensions to Your Worksheet - Tableau
<!DOCTYPE html><html lang="en-us"><head><meta charset="utf-8"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><meta property="og:type" content="website"><meta property="og:title" content="Add Viz Extensions to Your Worksheet"><meta property="og:description" content="Viz Extensions are web applications that can extend the native visual capabilities of Tableau"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@tableau"><meta name="twitter:title" content="Add Viz Extensions to Your Worksheet"><meta name="twitter:description" content="Viz Extensions are web applications that can extend the native visual capabilities of Tableau"><meta name="section" content="Support"><meta name="subsection" content="Product Help"><meta name="breadcrumb_l1_text" content="Support"><meta name="breadcrumb_l1_url" content="http://www.tableau.com/en-us/support"><meta name="breadcrumb_l2_text" content="Product Help"><meta name="breadcrumb_l2_url" content="http://www.tableau.com/en-us/support/help"><meta name="product_applies_to" content="AppliesTo.Tableau Cloud,AppliesTo.Tableau Server,AppliesTo.Tableau Desktop" /><title>Add Viz Extensions to Your Worksheet - Tableau</title><script type="text/javascript">(function(w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? String.fromCharCode(38) + 'l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-BVCN');</script><script src="https://a.sfdcstatic.com/enterprise/tableau/prod/2024012/v1/oneTrust/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="2d08f29e-0ede-4e8c-997c-f7ef5be8d4e7"></script><script type="text/javascript">function OptanonWrapper() { window.addEventListener('load', () => { window.dataLayer.push({ event: 'OneTrustGroupsUpdated' }); let optanonCookie = decodeURIComponent(document.cookie); let activeGroups = OnetrustActiveGroups; if (optanonCookie.includes('OptanonConsent') && activeGroups) { if (activeGroups.includes('3')) { let event = new CustomEvent('UpdateCookieConsent', { detail: { value: true } }); window.dispatchEvent(event); } } }); OneTrust.OnConsentChanged(OneTrustActiveGroups => { if (OnetrustActiveGroups.includes('3')) { let event = new CustomEvent('UpdateCookieConsent', { detail: { value: true } }); window.dispatchEvent(event); } else { let event = new CustomEvent('UpdateCookieConsent', { detail: { value: false } }); window.dispatchEvent(event); } }); }</script><script type="text/javascript">var _elqQ = _elqQ || []; _elqQ.push(['elqSetSiteId', '840']); _elqQ.push(['elqTrackPageView']); (function() { function async_load() { var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = 'https://img.en25.com/i/elqCfg.min.js'; var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x); } if (window.addEventListener) window.addEventListener('DOMContentLoaded', async_load, false); else if (window.attachEvent) window.attachEvent('onload', async_load); })();</script><script>function getFooterLink(link) { let lang_object = ''; let locString = ''; if ('en-us' !== 'en-us') { lang_object = getLangObject(); locString = lang_object['code']; } // links for fr-ca locale are not consistent with the pattern other locales follow const urlMap = { contact: 'en-us' !== 'en-us' ? 'https://www.salesforce.com/loc/form/contact/contactme/'.replace('loc', locString === 'ca' ? 'fr-ca' : locString) : 'https://www.salesforce.com/company/contact-us/', trust: 'en-us' !== 'en-us' ? 'https://trust.salesforce.com/loc'.replace('loc', locString === 'ca' ? '' : locString === 'jp' ? 'ja' : locString) : 'https://trust.salesforce.com/', disclosure: 'en-us' !== 'en-us' ? 'https://www.salesforce.com/loc/company/disclosure/'.replace('loc', locString === 'ca' ? '' : locString) : 'https://www.salesforce.com/company/legal/disclosure/', privacy: 'en-us' !== 'en-us' ? 'https://www.salesforce.com/loc/company/privacy/'.replace('loc', locString) : 'https://www.salesforce.com/company/legal/privacy/', address: 'en-us' !== 'en-us' ? lang_object['address'] : 'Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States.' }; return urlMap[link] || ''; } function getLangObject() { let buildLang = 'en-us'; locMapping = { 'de-de': { code: 'de', address: 'Salesforce.com Germany GmbH, Erika-Mann-Str. 31, 80636 München, Deutschland.', tel: 'Telefon: +49 800 0010546' }, 'en-gb': { code: 'uk', address: 'Salesforce UK Limited, village 9, floor 26 Salesforce Tower, 110 Bishopsgate, London, UK, EC2N 4AY.', tel: 'Telephone: (+44) 800 086 8530' }, 'es-es': { code: 'es', address: 'Salesforce Spain S.L., Paseo de la Castellana 79, Planta 7ª, Madrid, Spain, 28046.', tel: 'Teléfono: (+34) 800 300 229' }, 'fr-ca': { code: 'ca', address: 'Salesforce Canada Corporation. 10 Bay Street, Suite 400 Toronto, ON, M5J 2R8, Canada.', tel: 'Tél: 1-833-996-2064' }, 'fr-fr': { code: 'fr', address: 'Salesforce.com France SAS – 3 Avenue Octave Gréard – 75007 Paris.', tel: 'Tél: (+33) 8 05 08 21 31' }, 'it-it': { code: 'it', address: 'Salesforce.com Italy S.r.l., Piazza Filippo Meda 5, 20121 Milano (MI).', tel: 'Telefono: (+39) 800 693 802' }, 'ja-jp': { code: 'jp', address: '株式会社セールスフォース・ジャパン 東京都千代田区丸の内1-1-3 日本生命丸の内ガーデンタワー(Salesforce Tower)', tel: 'TEL: 0120-733-257 | 03-4222-1000' }, 'ko-kr': { code: 'kr', address: '일즈포스 코리아 서울특별시 영등포구 여의대로 108, 파크원타워2 28층 (세일즈포스) 07335', tel: ' TEL : 080-822-1378 (솔루션 상담 문의) | 080-805-9651 (기술 지원 문의)' }, 'nl-nl': { code: 'nl', address: 'SFDC Netherlands BV, Gustav Mahlerlaan 2970, 1081 LA, Amsterdam, Nederland.', tel: 'Telefoon: 0800 020 0431' }, 'pt-br': { code: 'br', address: 'Salesforce Brasil, Av. Jornalista Roberto Marinho, 85 – 14º andar – Cidade Monções, São Paulo – SP, 04575-000 Brasil.', tel: '' }, 'sv-se': { code: 'se', address: 'SFDC SWEDEN AB, Klarabergsviadukten 63, 111 64 Stockholm, Sweden.', tel: 'Telefon: (+46) 200285660' }, 'zh-cn': { code: 'cn', address: '', tel: '' }, 'zh-tw': { code: 'tw', address: '', tel: '' }, 'th-th': { code: 'th', address: '', tel: '' } }; return locMapping[buildLang]; } function getTrustUrl() { let trustUrl = 'https://trust.salesforce.com/'; if ('en-us' !== 'en-us') { let locString = getLocString(); trustUrl = 'https://trust.salesforce.com/loc'; return trustUrl.replace('loc', locString); } } window.addEventListener('load', function() { const FOOTER_LINKS = { ADDRESS: 'address', CONTACT: 'contact', TRUST: 'trust', DISCLOSURE: 'disclosure', PRIVACY: 'privacy' }; let privacyLinkElement = document.getElementById('privacyLink'); let disclosureLinkElement = document.getElementById('disclosureLink'); let trustLinkElement = document.getElementById('trustLink'); let contactLinkElement = document.getElementById('contactLink'); let choicesLinkElement = document.getElementById('choicesLink'); let sfAddressElement = document.getElementById('sfAddress'); if (privacyLinkElement) { privacyLinkElement.href = getFooterLink(FOOTER_LINKS.PRIVACY); } if (disclosureLinkElement) { disclosureLinkElement.href = getFooterLink(FOOTER_LINKS.DISCLOSURE); } if (trustLinkElement) { trustLinkElement.href = getFooterLink(FOOTER_LINKS.TRUST); } if (contactLinkElement) { contactLinkElement.href = getFooterLink(FOOTER_LINKS.CONTACT); } if (sfAddressElement) { sfAddressElement.innerText = getFooterLink(FOOTER_LINKS.ADDRESS); } // Accessibility after click on MenuTree on page load set focus on topic title const focusElementId = sessionStorage.getItem('focusElementId'); if (focusElementId) { sessionStorage.removeItem('focusElementId'); const elemToFocus = document.getElementById(focusElementId); if (elemToFocus) { elemToFocus.focus(); } } }); function setFocus() { let logo = document.getElementById('tableau-logo'); if (logo != null) { logo.focus(); } }</script><link href="./Resources/app.css?061e368a0c7a09d14cc3" rel="stylesheet"></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-BVCN" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><div id="app" class="wrapper"><header id="tableau-help-article-header" class="container--full-width quick-help-header"><div class="container--centered"><div class="header__mobile-menu quick-help-hidden"><menu-tree-toggle></menu-tree-toggle></div><div class="header__logo quick-help-hidden"><a id="tableau-logo" href="https://www.tableau.com/en-us/"><img src="./Resources/tableau-logo.png" class="header__logo__img" alt="Tableau"></a></div><div class="header__search"><search-header-help placeholder="Search"></search-header-help></div></div></header><div class="container--navigation-top quick-help-hidden content-only-hidden"><div id="help-subheader" class="subheader print-hidden"><div class="container--centered"><h1 class="heading--subheader">Tableau Desktop and Web Authoring Help</h1></div></div><div class="container--top-links"><div class="container--centered container--breadcrumbs"><div><breadcrumb-links-help></breadcrumb-links-help></div></div><div id="help-container-menu-headings" class="container--menu-headings"><nav class="nav-medium-screen"><menu-heading-links-static-help menu-title="In this article" :disabled="false" :headings="pageHeadings"></menu-heading-links-static-help></nav></div></div></div><div class="section--main container--full-width"><div class="container--centered"><nav class="nav-side nav-side--left" role="navigation"><menu-tree-help menu-title="Contents"></menu-tree-help></nav><article role="main"><h2 class="topic--title" id="topic-title" tabindex="-1">Add Viz Extensions to Your Worksheet</h2><div class="caption article__tags content-only-hidden quick-help-hidden"><span class="article__tags--applies-to">Applies to: Tableau Cloud, Tableau Desktop, Tableau Server</span><br><span class="article__tags--role"> </span></div><div id="content-body"> <div id="mc-main-content"> <p>Viz Extensions are web applications that can extend the native visual capabilities of Tableau. Viz Extensions give users the ability to interact with custom viz types on their worksheets.</p> <p>Tableau Extensions expand worksheet functionality with the help of web applications created by Tableau, Tableau Partners, and third-party developers in our community. If you're a developer and want to create your own extensions, see the <a href="https://tableau.github.io/extensions-api/">Tableau Extensions API</a> documentation on GitHub.</p> <p>A Viz Extension is similar to a <a href="https://help.tableau.com/current/pro/desktop/en-us/dashboard_extensions.htm?_gl=1*uu9rzu*_ga*MTY0NjQ4Mjc3NS4xNzA3NzcyMzUx*_ga_8YLN0SNXVS*MTcxMjE2NjcxNC41NC4xLjE3MTIxNzA1MzUuMC4wLjA.">dashboard extension</a> in that it's a web application that is hosted on the <a href="https://exchange.tableau.com/en-us/">Tableau Exchange.</a> It's different from a dashboard extension in that you add it to a worksheet while building the viz, rather than adding it to a dashboard as an object.</p> <h2 is="heading-item" :level="2" id="add-a-viz-extension-to-a-worksheet">Add a Viz Extension to a worksheet</h2> <p>There are two ways to add a Viz Extension to your worksheet via the Marks card. If you've already downloaded it through the Tableau Exchange, you can add it as a local file. Or you can download it from the Tableau Exchange in the flow of authoring your Viz.</p> <h3 is="heading-item" :level="3" id="add-a-viz-extension-as-a-local-file">Add a Viz Extension as a local file</h3> <p>If you've already selected and downloaded a Viz Extension from the Tableau Exchange, it will be saved on your computer as a .trex file.</p> <ol> <li value="1"> <p>Open a Tableau workbook and connect to your data source.</p> </li> <li value="2"> <p>In a worksheet, on the Marks card, expand the Mark type dropdown menu.</p> </li> <li value="3"> <p>Under Viz Extensions, select <span class="uicontrol">Add Extension</span>.<br><br><img src="Img/viz_ext_marks_AddExt.png" alt="Marks card dropdown menu with Viz Extensions option."></p> </li> <li value="4"> <p>In the Add an Extension dialog box that appears, select <span class="uicontrol">Access Local Viz Extensions</span>.<br><br><img src="Img/viz_ext_addlocal.png" alt="Add an Extension dialog box with the option to Access Local Viz Extensions."></p> </li> <li value="5"> <p>Navigate to and open the saved .trex file.</p> </li> <li value="6"> <p>If prompted, allow or deny the Viz Extension access to data in the workbook.</p> </li> </ol> <p>The Viz Extension loads in the view, and the mark type changes to the name of the Viz Extension.</p> <h3 is="heading-item" :level="3" id="add-a-viz-extension-while-authoring-your-viz">Add a Viz Extension while authoring your viz</h3> <p>If you haven't already selected and downloaded a Viz Extension, you can do so in the flow of authoring a viz.</p> <ol> <li value="1"> <p>Open a Tableau workbook and connect to your data source.</p> </li> <li value="2"> <p>In a worksheet, on the Marks card, expand the Mark type dropdown menu.</p> </li> <li value="3"> <p>Under Viz Extensions, select <span class="uicontrol">Add Extension</span>.<br><br><img src="Img/viz_ext_marks_AddExt.png" alt="Marks card dropdown menu with Viz Extensions option."></p> </li> <li value="4"> <p>In the Add an Extension dialog box that appears, select the Viz Extension that you'd like to load onto your worksheet. In this example, we're loading a Sankey diagram built by Tableau.<br><br><img src="Img/viz_ext_addext.png" alt="Add an Extension dialog box to search for and add an extension from the Tableau Exchange."></p> </li> <li value="5"> <p>If prompted, allow or deny the Viz Extension access to data in the workbook. For more information, see Data security, Network-enabled, and Sandboxed extensions.</p> </li> <li value="6"> <p>Select <span class="uicontrol">Open</span>.<br><br><img src="Img/viz_ext_exchange.png" alt="Tableau Exchange description page for the Sankey diagram, developed by Tableau.]"></p> </li> </ol> <p>The Viz Extension loads in the view, and the mark type changes to the name of the Viz Extension.<br><br><img src="Img/viz_ext_add_sankey.png" alt="Marks card dropdown menu with the Sankey extension magnified in the Viz Extensions section."></p> <h2 is="heading-item" :level="2" id="use-the-marks-card-to-encode-your-marks">Use the Marks card to encode your marks</h2> <p>Drag fields onto the encoding boxes on the Marks card to build the viz. The Mark encoding boxes and formatting options are determined by the developer. Check the extension description on the Tableau Exchange for information on the Viz Extension you're loading.</p> <p>To follow along with the Sankey extension, follow these encoding instructions:</p> <p>The Sankey extension is built to use extension-specific encoding for <strong>Levels</strong> and <strong>Links</strong>. These can be used with the built-in Marks encoding boxes Tooltip and Details to build the Sankey on the worksheet.</p> <ul> <li> <p><strong>Level</strong> - Sankey levels represent the categorical dimensions that are related by the Sankey. In this extension, you can include up to 5 discrete dimensions as Levels.</p> </li> <li> <p><strong>Link</strong> - Sankey links connect the categories across the Sankey. This encoding will size the width of each link based on a numeric measure.</p> </li> </ul> <h2 is="heading-item" :level="2" id="ensure-that-extensions-are-allowed-on-tableau-cloud">Ensure that extensions are allowed on Tableau Cloud</h2> <p>If you're not able to add a Viz Extension, check to see if extensions have been allowed on your site. A Tableau administrator must allow extensions to run on a site and add Network-enabled extensions to an allow list. Administrators should only allow extensions that you have tested and trust.</p> <p>To learn more about adding Network-enabled extensions to an allow list, see <a href="https://help.tableau.com/current/server/en-us/dashboard_extensions_server.htm#change-the-default-settings-for-a-site">Tableau Help: Change the default settings for a site.</a></p> <h3 is="heading-item" :level="3" id="data-security-networkenabled-and-sandboxed-extensions"><a name="Data"></a>Data security, Network-enabled, and Sandboxed extensions</h3> <p>Extensions are web applications that come in two forms:</p> <ul> <li><i>Network-enabled extensions</i> run on web servers located outside of your local network.</li> <li><i>Sandboxed extensions</i> run in a protected environment without access to any other resource or service on the web.</li> </ul> <p>Before adding a Network-enabled extension, be certain that you trust the website that hosts it. By default, extensions use the HTTPS protocol, which guarantees an encrypted channel for sending and receiving data, and ensures some privacy and security.</p> <p>For more information about data security when using extensions, see <a href="https://help.tableau.com/current/server/en-us/security_extensions.htm" target="_blank">Extension Security - Best Practices for Deployment<span class="sr-only">(Link opens in a new window)</span></a>.</p> <h3 is="heading-item" :level="3" id="allow-or-deny-data-access-to-a-networkenabled-extension">Allow or deny data access to a Network-enabled extension</h3> <p>Depending on how an extension is designed, it can access either visible data in a view, or full underlying data, table and field names from data sources, and information about data source connections. When you add an extension, you're given an opportunity to allow or deny the extension to run and access this data. </p> <h3 is="heading-item" :level="3" id="reset-data-access-for-your-extension">Reset data access for your extension</h3> <p>If you need to reset the data access permissions for your extension, you can simply reload the extension by selecting Add Extension on the Marks card, and then re-adding the extension to the worksheet. These steps kick off the process to allow or deny access to the extension. </p> <h2 is="heading-item" :level="2" id="ensure-that-javascript-is-enabled-in-tableau-desktop">Ensure that JavaScript is enabled in Tableau Desktop</h2> <p>Viz extensions interact with data using the Tableau Extensions API library, a JavaScript library. If you want to use extensions, be sure that JavaScript is enabled in the security settings: </p> <p>Choose <span class="uicontrol">Help</span> > <span class="uicontrol">Settings and Performance</span> > <span class="uicontrol">Set Dashboard Web View Security</span> > <span class="uicontrol">Enable JavaScript</span>. </p> <h2 is="heading-item" :level="2" id="get-support-for-viz-extensions"><a name="Tableau"></a>Get support for Viz Extensions</h2> <p>To get help for an extension, you'll need to contact the developer or company who created it through the Tableau Exchange.</p> <p class="note"><b>Note:</b> Tableau doesn't provide support for extensions or for other programs that interface with the Extensions API. However, you can submit questions and ask for help in the <a href="https://community.tableau.com/s/developers" target="_blank">Tableau developer community<span class="sr-only">(Link opens in a new window)</span></a>. </p> </div> </div><div class="article__footer--back-to-top text--centered print-hidden quick-help-hidden"><a href="#" class="text--caps" onclick="setFocus()"><span class="icon--med icon--arrow-up"></span> Back to top</a></div><feedback-form :disabled="false" class="print-hidden content-only-hidden" helpful-question="Did this article solve your issue?" helpful-yes="Yes" helpful-no="No" comment-question="We value your feedback. Add comments here." submit-option="Send" cancel-option="Cancel" loading-text="Sending..."><span slot="submittedMessage">Thanks for your feedback!</span></feedback-form><d-s-c-feedback-form :disabled="false" class="print-hidden content-only-hidden quick-help-hidden" feedback-question="Did this article solve your issue?" feedback-subtitle="Let us know so we can improve!" helpful-yes="Yes" helpful-no="No" error-message="Please check at least 1 checkbox." thanks-positive-feedback="Thanks for the feedback! What made this article helpful?" thanks-negative-feedback="We're sorry to hear that. How can we improve this article?" feedback-yes-accurate="Contains accurate information" feedback-yes-comprehensive="Includes all of the information I need" feedback-yes-clear="Easy to understand with clear explanations and visuals" feedback-no-accurate="Contains inaccurate or outdated information" feedback-no-comprehensive="Missing important information" feedback-no-clear="Confusing or difficult to understand" feedback-no-descriptive="The article is OK, but I don't like how the product described works" feedback-something-else=" Something else" additional-feedback="Would you like to share any additional feedback?" submit-answers="Submit"><span slot="successfullySubmitted">Your feedback has been successfully submitted. Thank you!</span></d-s-c-feedback-form></article><nav class="nav-side nav-side--right"><menu-heading-links-scrollable-help menu-title="In this article" :disabled="false" :headings="pageHeadings"></menu-heading-links-scrollable-help></nav></div></div><feedback-button-floating tooltip="Send feedback" :disabled="false"></feedback-button-floating><footer class="container--full-width"><div class="container--centered"><div class="footer__links" aria-label="footer navigation"><ul><li><a href="https://www.salesforce.com/company/legal/" class="">Legal</a></li><li><a href="https://www.salesforce.com/company/legal/sfdc-website-terms-of-service/" class="">Terms of Service</a></li><li><a id="privacyLink" class="">Privacy Information</a></li><li><a id="disclosureLink" class="">Responsible Disclosure</a></li><li><a id="trustLink" class="">Trust</a></li><li><a id="contactLink" class="">Contact</a></li><li><a href="#" data-ignore-geolocation="true" class="optanon-toggle-display">Cookie Preferences</a></li><li><a id="choicesLink" href="https://www.salesforce.com/form/other/privacy-request/" class="">Your Privacy Choices</a></li></ul></div><div class="footer__copyright"><copyright-notice salesforce-text="Salesforce, Inc." rights-reserved="All rights reserved." trademark-text="Various trademarks held by their respective owners. Salesforce, Inc."></copyright-notice><span id="sfAddress"></span></div></div></footer></div><script type="text/javascript">var TabHelp = TabHelp || {}; TabHelp.PageData = { name: "viz_extensions.htm" };</script> <script type="text/javascript" src="./Resources/toc.js"></script><script type="text/javascript" src="./Resources/vendor.js?061e368a0c7a09d14cc3"></script><script type="text/javascript" src="./Resources/app.js?061e368a0c7a09d14cc3"></script></body></html>