Tableau • Filters and Interactivity

URL Actions — Use URL actions to link to external resources

Transform static dashboards into dynamic portals by embedding clickable links that open external web pages driven by your data.

Tableau illustration with a dashboard presentation, data visualization, and database
Inside this lesson 10 sections 5 questions 7 figures

SECTION 1

Historical Context & Motivation

The evolution of data visualization tools has always been shaped by the tension between analytical depth and user accessibility. Early business intelligence platforms of the 1990s produced static reports—PDFs and spreadsheets that existed in isolation, disconnected from the broader ecosystem of enterprise knowledge. When a manager reviewing quarterly sales figures needed to cross-reference a specific vendor's contract or pull up a customer's profile in a CRM, they had to leave the analytics tool entirely and navigate manually to the relevant system. This context-switching was not merely inconvenient; it fundamentally disrupted the analytical workflow and introduced cognitive overhead that degraded decision quality.

Tableau, founded in 2003 as a spin-off from Stanford University research on interactive visualization, recognized early that dashboards needed to function not as endpoints but as navigational hubs—launching pads from which users could seamlessly reach related resources. The introduction of URL actions was a direct answer to this need: a mechanism that constructs hyperlinks dynamically from data field values, enabling a single click on a mark in a visualization to open any web-accessible resource—be it a Google Maps location, a Jira ticket, an API endpoint returning JSON, or a page within another Tableau Server workbook.

2003 • Tableau Founded

Tableau Software is incorporated, building on Pat Hanrahan and Chris Stolte's Stanford VizQL research. The initial product focuses on drag-and-drop chart creation with no interactivity layer.

2008 • Dashboard Actions Introduced

Tableau 4.x introduces filter and highlight actions, enabling cross-sheet interactivity within a single workbook. URL actions are included in this initial action framework.

2015 • Web Edit & Embedded Analytics

Tableau Server adds web authoring capabilities, and URL actions gain significance in embedded analytics scenarios where dashboards integrate with external web applications.

2020 • Dashboard Extensions & Set Actions

Tableau introduces richer interactivity via set actions, parameter actions, and the Extensions API, but URL actions remain the primary mechanism for linking outside the Tableau ecosystem.

2023 • Tableau Embedding API v3

Modern embedded deployments use the Embedding API v3 alongside URL actions to create bi-directional communication between Tableau views and host web applications.

The central question URL actions address is deceptively simple: how can a visualization serve as a contextual gateway to the broader web, using the data itself to determine the destination? The answer involves URL templating, field reference injection, and an understanding of how HTTP query strings encode parameters—concepts that sit squarely at the intersection of data visualization and web engineering.

SECTION 2

Core Principles & Definitions

A URL action in Tableau is a dashboard action that constructs a URL string at runtime by interpolating field values from the selected mark(s) into a template URL. When triggered—by hover, selection, or menu click—the constructed URL opens in a web browser tab, an embedded web page object within the dashboard, or a new browser window. Unlike filter actions (which operate within the Tableau workbook) or highlight actions (which modify visual encoding), URL actions establish a bridge between the Tableau environment and the external web. This makes them uniquely powerful for integration scenarios.

1

Template URL

A URL string containing field reference placeholders wrapped in angle brackets, e.g., https://maps.google.com?q=<City>,<State>. Tableau replaces each placeholder with the corresponding field value from the selected mark.
2

Trigger Mode

URL actions can fire on three triggers: Hover (tooltip proximity), Select (click on mark), or Menu (right-click context menu). Select is the most common for URL actions.
3

URL Target

The destination where the generated URL opens. Options include a new browser tab, a Web Page object embedded in the dashboard, or the default system browser. In-dashboard rendering via a Web Page object keeps the user in context.
4

URL Encoding

Tableau automatically percent-encodes field values injected into URLs, converting spaces to %20 and special characters to their RFC 3986 equivalents. This ensures well-formed URLs even when data contains whitespace or reserved characters.
5

Source & Target Sheets

The source sheet is the worksheet whose marks trigger the action. Unlike filter actions, URL actions have no target sheet within Tableau—their target is an external URL or a Web Page dashboard object.
✦

KEY TAKEAWAY

Think of a URL action as a parameterized API call triggered by user interaction. Just as a function in your code accepts arguments and produces a result, a URL action accepts field values from the clicked mark and produces a fully-formed URL. The template URL is the function signature; the field references are the parameters; and the browser's HTTP GET request is the invocation. If you've ever constructed a query string programmatically—say, building a REST endpoint like /api/users?id={userId}—you already understand the core abstraction.

SECTION 3

Visual Explanation — How URL Actions Flow

The following diagram illustrates the end-to-end flow of a URL action, from user interaction with a dashboard mark to the final HTTP request. Understanding this pipeline is essential because each stage—field extraction, template interpolation, URL encoding, and dispatch—is a point where configuration errors can occur. Tracing a concrete example through this pipeline will ground the concept before we dive into implementation details.

URL Action Execution Pipeline1. USER CLICKUser clicks a markin the bar chartCity = "Denver"2. FIELD EXTRACTTableau reads fieldsfrom the selected markState = "CO"3. INTERPOLATIONReplace <City> and<State> in template?q=Denver,CO4. DISPATCHBrowser opens theconstructed URLmaps.google.comTemplate URLhttps://maps.google.com/maps?q=<City>,<State>Resolved URLhttps://maps.google.com/maps?q=Denver,CONEW TABOpens in browsertab / windowWEB PAGE OBJECTRenders inline inthe dashboardTOOLTIP URLAppears as linkinside tooltip
The pipeline begins when a user clicks a mark (step 1). Tableau extracts field values from the mark's data row (step 2), substitutes them into the template URL's angle-bracket placeholders (step 3), and dispatches the resolved URL to one of three targets (step 4): a new browser tab, an embedded Web Page dashboard object, or a tooltip hyperlink.

Notice that the pipeline is inherently unidirectional: data flows from Tableau outward to the web. The URL action does not receive a response from the target—it simply opens the resource. This is an important architectural constraint. If you need bidirectional communication (e.g., writing data back from an external form into Tableau), you would pair URL actions with the Tableau Extensions API or use Tableau's JavaScript Embedding API to listen for events on the host page.

SECTION 4

How URL Actions Work — Template Syntax & Encoding

The core mechanism of a URL action is string interpolation over a template URL. Tableau's template syntax uses angle brackets to delimit field references. When the action fires, the engine performs a lookup against the selected mark's underlying data row, retrieves the value for each referenced field, applies percent-encoding per RFC 3986, and concatenates the result into a valid URL string. The process is conceptually identical to template literals in JavaScript or f-strings in Python, but operates at the dashboard interaction layer rather than in application code.

Template URL Syntax

TEMPLATE PATTERN

https://host/path?param₁=<Field A>&param₂=<Field B>

Each <Field Name> placeholder is replaced at runtime by the field's value from the selected mark. Field names are case-sensitive and must exactly match the field name (or alias) visible in the Data pane.

Percent-Encoding Rules

Tableau automatically applies percent-encoding (also known as URL encoding) to every injected field value. This is the same encoding you encounter in web development: spaces become %20, ampersands become %26, and so on. For CS students familiar with the encodeURIComponent() function in JavaScript, the behavior is analogous. This automatic encoding is crucial because data fields frequently contain characters that are reserved in URL syntax—a city name like "St. Louis" contains a period and a space, both of which must be escaped to prevent the URL parser from misinterpreting the string.

ENCODING EXAMPLE

"NewYork"→New"New York" → New%20York | "AT&T" → AT%26T | "100%" → 100%25

Spaces map to %20, ampersands to %26, and literal percent signs to %25. Tableau handles this automatically; you should not pre-encode values in your data source.

Using Calculated Fields in URLs

You are not limited to raw data fields. Tableau allows you to reference calculated fields in URL templates. This is powerful because you can construct complex URL segments using Tableau's formula language. For example, you might create a calculated field called Google Search URL defined as "https://www.google.com/search?q=" + [Product Name] and then use <Google Search URL> as the entire template URL. This approach lets you leverage string functions like REPLACE(), LOWER(), and REGEXP_REPLACE() to sanitize or transform values before they enter the URL.

⚠

Watch Out: Multiple Marks

If the user selects multiple marks (e.g., via a lasso selection), the field value injected into the URL corresponds to the first selected mark only. Tableau does not generate multiple URLs or concatenate values. If your use case requires multi-select, consider constructing a comma-separated list via a calculated field or using a different action type.

SECTION 5

Common Use Cases & URL Patterns

URL actions are versatile precisely because the web is versatile—any resource addressable by a URL is a valid target. Below, we catalog the most common integration patterns encountered in enterprise Tableau deployments, along with their template URL structures. Understanding these patterns equips you to recognize when a URL action is the right tool and to construct the template quickly.

URL Action Use Case TaxonomyURL ACTIONGEOSPATIALGoogle MapsOpenStreetMap?q=<Lat>,<Lon>?q=<Address>ISSUE TRACKERSJira, GitHub IssuesServiceNow/browse/<Ticket ID>/issues/<Issue #>CRM / ERPSalesforce, SAPHubSpot/<AccountID>/contact/<ID>DOCUMENTATIONConfluence, NotionSharePoint/wiki/<Page ID>/pages/<Slug>SEARCHGoogle, BingInternal search/search?q=<Term>API ENDPOINTSREST APIsWebhooks/api/v1/<resource>TABLEAU SERVEROther workbookswith filter params/views/wb?Region=<R>EMAIL / COMMSmailto: linksSlack deep linksmailto:<Email>Common Template URL ExamplesGoogle Maps:https://maps.google.com/maps?q=<Latitude>,<Longitude>Jira: https://jira.company.com/browse/<Ticket ID>Salesforce:https://company.lightning.force.com/lightning/r/Account/<SF ID>/view
A taxonomy of eight common URL action categories. Each card shows the target system, typical platforms, and the key URL path or query-string pattern. The bottom section provides concrete template URL examples for three widely-used integrations: Google Maps, Jira, and Salesforce.
Use CaseTemplate URL PatternTriggerTarget
Open Google Maps for a locationhttps://maps.google.com?q=<City>,<State>SelectWeb Page Object
Navigate to a Jira tickethttps://jira.co/browse/<Ticket ID>SelectNew Tab
Google search for a producthttps://google.com/search?q=<Product>MenuNew Tab
Link to another Tableau workbookhttps://server/views/Sales?Region=<Region>SelectNew Tab
Compose email to a contactmailto:<Email>?subject=Re: <Account>MenuSystem Default

Common URL action patterns with recommended trigger and target configurations.

SECTION 6

Worked Example — Building a Google Maps URL Action

Suppose you have a dashboard displaying a bar chart of sales by city. Each mark represents a city, and the underlying data includes the fields City, State, Sales, and Profit. You want to allow users to click on any city bar and immediately see that city on Google Maps, displayed inside a Web Page object embedded in the dashboard. Here is the step-by-step process.

Google Maps URL Action in a Sales Dashboard

  1. 1

    Step 1 — Add a Web Page Object to the Dashboard

    Open your dashboard in Tableau Desktop. From the Objects pane (lower-left), drag a Web Page object onto the dashboard layout. When prompted for an initial URL, enter https://maps.google.com as a placeholder. Position it adjacent to your bar chart so users can see both the chart and the map simultaneously.
  2. 2

    Step 2 — Open the Actions Dialog

    Navigate to Dashboard → Actions from the menu bar (or press the keyboard shortcut). In the Actions dialog, click Add Action → Go to URL…. This opens the URL Action configuration dialog.
  3. 3

    Step 3 — Configure the Source Sheet

    Give the action a descriptive name, such as Show on Google Maps. Under Source Sheets, check only the bar chart sheet that contains the city data. This ensures the action only triggers from that specific view, not from other sheets on the dashboard.
  4. 4

    Step 4 — Set the Trigger to 'Select'

    Under "Run action on", select Select. This means the URL will be generated when the user clicks a mark. Hover would be too aggressive for opening web pages (firing on every mouse movement), and Menu requires an extra right-click, adding friction.
  5. 5

    Step 5 — Enter the Template URL

    In the URL field, type the template: https://maps.google.com/maps?q=<City>,<State>. You can click the arrow button to the right of the URL field to see available field names and insert them as properly-formatted angle-bracket references. Verify that the field names match exactly.
    Template URL: https://maps.google.com/maps?q=<City>,<State>
  6. 6

    Step 6 — Set the URL Target

    Under "URL Target", select the Web Page object you added in Step 1 from the dropdown. This causes the map to render inside the dashboard rather than opening a new browser tab, keeping the user in the analytical context.
  7. 7

    Step 7 — Test the Action

    Click OK to save. Return to the dashboard and click on the "Denver" bar. The Web Page object should navigate to https://maps.google.com/maps?q=Denver,CO, displaying a Google Maps view centered on Denver, Colorado. Click "New York" and confirm the map updates to New York.
    Resolved URL for Denver: https://maps.google.com/maps?q=Denver,CO

SECTION 7

Strengths, Limitations & Comparisons

URL actions occupy a specific niche within Tableau's interactivity toolkit. To use them effectively, you need to understand both what they excel at and where their design constraints limit their applicability. The following comparison contextualizes URL actions alongside Tableau's other action types.

CriterionURL ActionsFilter ActionsParameter Actions
ScopeExternal: opens URLs outside the Tableau workbookInternal: filters target sheets within the same dashboardInternal: updates a parameter value used across sheets
Data flowUnidirectional (Tableau → web)Bidirectional within Tableau (source ↔ target)Unidirectional within Tableau (mark → parameter)
Multi-selectLimited: uses first selected mark onlyFull support: filters by all selected valuesSingle value only: parameters hold one value
Use caseLinking to external systems, maps, APIs, docsDrill-down, cross-filtering between chartsDynamic reference lines, calculated fields, what-if analysis
SecurityCaution: exposes field values in the URL string (browser history, logs)Contained within Tableau's security modelContained within Tableau's security model

Comparison of Tableau's three primary action types.

✦

KEY TAKEAWAY

URL actions are the HTTP GET requests of the Tableau action world—they carry data outward via query strings and path segments, they're stateless, and they don't modify the source system. Just as REST API design encourages GET for safe, idempotent reads, URL actions are best used for navigating to or displaying external resources, not for triggering write operations. If you need to trigger a POST (e.g., creating a ticket), you'll need middleware: a lightweight web service that receives the GET from the URL action and translates it into the appropriate POST call.
⚠

Security Consideration

Because URL actions embed field values directly in the URL, those values become visible in the browser's address bar, browsing history, and potentially in server access logs. Never pass sensitive data—passwords, SSNs, API keys—through URL actions. If you must pass an identifier to a secure system, use an opaque ID (like a UUID) rather than human-readable PII, and ensure the target system enforces its own authentication and authorization.

SECTION 8

Connection to Advanced Theory — Extensions & Embedding

URL actions represent the simplest form of outbound interactivity in Tableau, but they sit at the base of a larger architectural stack that includes Tableau's Embedding API, Dashboard Extensions, and Connected Apps. Understanding how URL actions relate to these advanced capabilities helps you select the right tool for increasingly complex integration scenarios.

FeatureURL Actions (Basic)Embedding API + URL Actions (Intermediate)Dashboard Extensions (Advanced)
Communication directionTableau → external resource (one-way)Tableau ↔ host web page (two-way via JS events)Full bidirectional: extension can read/write Tableau data
Coding requiredNone — configuration onlyJavaScript for the host page; URL action configured in TableauFull web app (HTML/CSS/JS) using the Extensions API
DeploymentWorks in Desktop, Server, CloudRequires embedded deployment on a custom web pageRequires Server/Cloud; extension must be allowlisted
Typical scenarioOpen a record in Salesforce from a dashboardHost page reacts to URL change and updates adjacent React componentsCustom write-back form, real-time data feed, or ML model scoring

Progression from basic URL actions to advanced integration techniques.

A particularly powerful intermediate pattern involves combining URL actions with the Tableau Embedding API v3. When a Tableau view is embedded in a web application via the <tableau-viz> web component, the host page can listen for the UrlActionEvent and intercept the URL before it opens in a browser. This allows the host application to parse the URL's query parameters, extract the field values, and use them to drive behavior in the surrounding application—updating a sidebar, fetching data from a custom API, or routing to a different page within a single-page application. In this pattern, the URL action effectively becomes a structured event emitter, with the URL serving as a serialization format for the event payload.

💡

Looking Ahead

If you're building enterprise-grade embedded analytics, start with URL actions to prototype the interaction flow. Once you've validated the UX, evaluate whether the Embedding API's event listeners or a full Dashboard Extension would provide a cleaner, more maintainable architecture. URL actions serve as an excellent rapid-prototyping tool because they require zero code.

SECTION 9

Practice Problems

Question 1: CONCEPTUAL

Explain why a URL action is described as "unidirectional." What are the implications of this for use cases that require writing data back to an external system? Describe at least one architectural pattern that addresses this limitation.
Show answer
A URL action is unidirectional because it only sends data outward from Tableau to an external resource via an HTTP GET request encoded in the URL; it has no mechanism to receive a response or feed data back into the Tableau workbook. This means you cannot use a URL action alone to, say, create a Jira ticket and update a Tableau field with the new ticket ID. To address this, you can implement a middleware pattern: the URL action targets a lightweight web service (e.g., a REST endpoint built with Flask or Express) that receives the GET request, parses the query parameters, performs the write operation (e.g., POSTing to the Jira API), and optionally writes the result to a shared database that Tableau's data source can query on refresh. Alternatively, if the Tableau view is embedded, you can intercept the UrlActionEvent via the Embedding API and handle the write logic in the host application's JavaScript layer.

Question 2: BASIC CALCULATION

Given a dataset with fields Employee Name and Employee ID, write the template URL that would open a company's internal HR portal at https://hr.company.com/profile with the employee ID passed as a query parameter named id. Then, determine what the resolved URL would be for an employee with ID E-4092.
Show answer
The template URL would be: https://hr.company.com/profile?id=<Employee ID>. When the user clicks on the mark for the employee with ID E-4092, Tableau substitutes the field value into the template and applies percent-encoding. Since "E-4092" contains a hyphen (which is an unreserved character in RFC 3986), it passes through unencoded. The resolved URL would be: https://hr.company.com/profile?id=E-4092. Note that if the Employee Name were used instead (e.g., "Jane O'Brien"), the apostrophe would be encoded as %27, yielding Jane%20O%27Brien.

Question 3: INTERMEDIATE

You have a Tableau dashboard with a scatter plot of GitHub repositories. The data includes Owner and Repo Name fields. Design a URL action configuration (template URL, trigger type, and target) that opens the repository's Issues page on GitHub when a user clicks a mark. Additionally, explain how you would modify the template to pre-filter the Issues page to show only open bugs by appending the appropriate GitHub query parameters.
Show answer
The base template URL for a GitHub repository's Issues page follows the pattern https://github.com/<Owner>/<Repo Name>/issues. The trigger should be set to Select (single click), and the target should be a New Tab since GitHub's Content Security Policy typically blocks iframe embedding, which would prevent a Web Page object from rendering the page correctly. To pre-filter for open bugs, append GitHub's query string parameters: https://github.com/<Owner>/<Repo Name>/issues?q=is%3Aopen+label%3Abug. Note that we hardcode the filter values (is:open, label:bug) since they're constants, not data-driven. Only the Owner and Repo Name are injected dynamically from field values. This illustrates an important design principle: URL templates can freely mix static URL segments with dynamic field references.

Question 4: APPLIED

You are building an analytics dashboard for a logistics company. The dashboard shows shipment data with fields Origin Lat, Origin Lon, Dest Lat, Dest Lon, and Tracking Number. Design two URL actions: (1) one that opens Google Maps with driving directions from origin to destination, and (2) one that opens the FedEx tracking page for the shipment. Specify the trigger and target for each and justify your choices.
Show answer
Action 1 — Google Maps Directions: The template URL is https://www.google.com/maps/dir/<Origin Lat>,<Origin Lon>/<Dest Lat>,<Dest Lon>. The trigger should be Select and the target a Web Page object embedded in the dashboard, because viewing a route map alongside the shipment data provides immediate spatial context without losing the analytical view. Action 2 — FedEx Tracking: The template URL is https://www.fedex.com/fedextrack/?trknbr=<Tracking Number>. The trigger should be Menu (right-click) and the target a New Tab. Menu is preferred here because tracking is a secondary action—the user may want to inspect several shipments on the map before drilling into a specific tracking page. Using Menu prevents accidental navigation and avoids conflicting with the Select trigger on Action 1. Opening in a new tab is necessary because FedEx's site uses X-Frame-Options headers that prevent iframe embedding.

Question 5: CRITICAL THINKING

A healthcare analytics team wants to create a Tableau dashboard where clicking a patient's name opens their Electronic Health Record (EHR) in Epic's web interface. The dataset includes Patient Name, MRN (Medical Record Number), and Date of Birth. Critically evaluate this approach from security, privacy, and architectural perspectives. What risks does a URL action introduce? How would you redesign this interaction to satisfy HIPAA compliance while preserving the user experience?
Show answer
This scenario raises several critical concerns. First, URL actions embed field values in the URL string, which means Protected Health Information (PHI) like the MRN, patient name, and date of birth would appear in the browser's address bar, browsing history, and potentially in proxy server logs—all of which constitute unauthorized disclosure under HIPAA. Second, even if the target EHR system requires authentication, the URL itself is constructed and visible before the user authenticates at the destination, creating a data leak vector. Third, browser history persistence means PHI could remain on shared workstations long after the session ends. A redesigned approach would involve several mitigations: (1) use only an opaque, non-PHI identifier (a hashed patient token or UUID) in the URL, not the MRN or name; (2) route the URL action through an authenticated middleware service that validates the user's session, checks their authorization to view that patient's record, and then issues a time-limited redirect to the EHR deep link; (3) ensure HTTPS is enforced end-to-end; and (4) consider using the Tableau Extensions API instead of a URL action, which would allow the interaction to occur via JavaScript without exposing data in the URL at all. The extension could call the EHR's API directly within a secure iframe sandboxed by the extension framework.

SUMMARY

Summary — URL Actions in Tableau

Summary

A URL action is a dashboard action in Tableau that constructs a URL dynamically by injecting field values from the selected mark into a template URL using angle-bracket placeholders. The action can be triggered by hover, select, or menu click, and the resolved URL can open in a new browser tab, a Web Page dashboard object (for in-context viewing), or the system's default browser. Tableau automatically applies percent-encoding to injected values, ensuring well-formed URLs even when data contains spaces or reserved characters.

Common integration targets include Google Maps for geospatial lookups, issue trackers like Jira and GitHub, CRM systems like Salesforce, and even other Tableau Server workbooks with filter parameters passed via URL query strings. URL actions are unidirectional—they send data outward but receive no response—which distinguishes them from the bidirectional capabilities of Dashboard Extensions and the Embedding API. Always consider security implications when passing data through URLs, especially regarding PII exposure in browser history and server logs.

Varsity Tutors • Tableau • URL Actions — Use URL actions to link to external resources