Welcome to the Beginner DataDevQuest challenge for September 2025! This month we’re focusing on harnessing the power of the Tableau Embedding API (formerly, the JavaScript API), which allows you to make your Tableau content live seamlessly within your external application.
An understanding of JavaScript basics will be very helpful in these challenges, but certainly isn’t required.
Note: We’re focusing on embedding content with the full API here, but there are certainly use cases where iframe embedding will be perfectly sufficient. Just know that this method will result in the loss of bi-directional interactivity.
Challenge Overview
Objective:
Familiarize yourself with the Embedding API v3 while adding a Tableau dashboard or view to a basic webpage. The page should add an JavaScript event listener that will perform an action once the embedded viz becomes interactive.
Why this challenge?
Embedding Tableau content in your application or website is a great way to harness the power of the tool, while also creating custom/bespoke experiences for your users. Imagine you have a central portal that allows users to perform several actions related to their duties, but you also want your Tableau insights to be front and center!
For the beginner challenge, we want our page/application to do something to inform the user that the embedded content has full loaded and is ready for them to interact with, e.g.:
Learning Goals
- Familiarize yourself with the Embedding API capabilities
- Embed a Tableau View or Dashboard
- Using a JavaScript event listener, perform an action once the viz is interactive
Submission Guidelines
- Source Code: Publish your project publicly in your GitHub profile
- Add README: Include any setup instructions and describe how to run the program.
- Video of Solution: Include a video of your solution in the README file. You can publish it on YouTube and embed the iframe, or save the video file in the repository’s root directory
- Comments: Ensure your code is well-commented
- Submission: Submit your challenge in the following forms
Additional Resources
- Tableau Embedding API Official Documentation
- Embedding API Reference
- Salesforce Tableau Embedding API Playground (start here if you’re new!)
Getting Started
The first thing you’ll need to get started is a webpage/application where you can embed content. Here’s an example you can start with:
<!DOCTYPE html>
<html lang="en" data-bs-theme="dark" class="html-height">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Custom CSS -->
<link rel="stylesheet" href="styles.css">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
<!-- Bootstrap Icons -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css">
<title>DataDevQuest - DDQ2025-09 - Embedding: Beginner</title>
</head>
<body class="body-height">
<nav class="navbar bg-body-secondary">
<div class="container-fluid">
<a class="navbar-brand"><i class="bi bi-globe-americas-fill pe-3"></i>My Application or Website </a>
<div id="loadingSpinner">
<div class="spinner-border spinner-border-sm loading-text" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<span class="ms-2 loading-text">Tableau content is loading...</span>
</div>
<div class="d-flex align-items-center">
