A comprehensive web application suite for managing Tableau Pulse with fourteen powerful utilities, built with Python Flask and featuring a modern, responsive UI.
Transfer Tableau Pulse definitions between different sites
- Copy individual definitions by ID or all definitions from a datasource
- Cross-site copying with full authentication support
- Preserves all definition metadata and configurations
Add or remove followers from Pulse metrics using email addresses
- Bulk operations on multiple metrics simultaneously
- Email-based user identification (converts emails to user IDs automatically)
- Support for both adding and removing followers
Copy definitions with new datasources and migrate all metrics + followers
- Creates new definitions with different datasources
- Migrates all associated metrics and their followers
- Optional cleanup of old metric followers
Update Tableau Pulse user preferences for single or multiple users
- Configure cadence settings (daily, weekly, monthly)
- Manage email and Slack channel preferences
- Set metric grouping and sorting options
- Bulk update preferences for multiple users
View all certified metrics and optionally remove certifications from unauthorized users
- List all metric definitions with certification status
- Filter by group name (automatic group ID lookup)
- Automatically remove certifications from non-group members
- Comprehensive reporting with certification details
Create multiple scoped metrics from a source metric with CSV upload support for advanced features
- π CSV Upload Mode: Upload a CSV file with dimension name, filter values, and follower emails
- Column 1: Dimension name (e.g., "Region")
- Column 2: Comma-separated filter values (e.g., "East, West" creates a metric with BOTH values)
- Column 3: Comma-separated follower emails (optional)
- βοΈ Manual Entry Mode: Simple text input for single filter value per metric
- π₯ Auto-assign Followers: Automatically add followers by email when creating metrics
- π Multiple Filters: Create metrics with multiple dimension values in a single filter
- Each new metric includes all filters from the source plus the new dimension filter(s)
Get comprehensive insights and analytics about Pulse metric usage across your site
- π Overall Statistics: Total definitions, metrics, subscriptions, and unique followers
- π Top Metrics: See which individual metrics have the most followers
- π Top Definitions: Discover which metric definitions are most popular across all their metrics
- ποΈ Datasource Usage: Understand which datasources are driving the most engagement
- β Certification Insights: Track how many definitions are certified
- Interactive Dashboard: Visual cards and sortable tables for easy analysis
Download and view activity logs from Tableau Cloud Manager for your site
- π₯ Download activity logs: Fetch raw logs from TCM for a configurable date range
- π Date range: Last 14 days by default; customize start and end dates
- π Combined log view: View combined logs in the browser
- π₯ CSV export: Export subscription/activity events to CSV for analysis
- π Enriched events: Optional Tableau authentication to resolve user and metric names in the export
Find metrics within a definition that have no followers
- π Analyze by Definition: Enter a Pulse definition ID to analyze all its metrics
- π« Identify Unused Metrics: Find metrics with zero followers (both default and scoped)
- ποΈ Optional Deletion: Automatically delete non-default metrics with zero followers
- π Detailed Reporting: View metrics with zero followers and metrics with followers side-by-side
β οΈ Safe Deletion: Default metrics cannot be deleted and are automatically skipped
Remove all followers from all non-default (scoped) metrics for a given definition
- π By definition ID: Enter a Pulse definition ID to process all its metrics
- βοΈ Default metric unchanged: The default metric is never modified
- π§Ή Scoped metrics cleared: Every follower is removed from each non-default metric under the definition
Export all Pulse metric definitions to CSV for documentation or analysis
- π Basic Mode: Export essential fields - Name, Measure, Time Dimension, Definitional Filters, Datasource Name
- π Verbose Mode: Export all configuration details including extension options, comparisons, certification status, and more
- π¨ Viz State Support: Handles Viz State definitions appropriately (marks measure/filters as embedded)
- π₯ Download CSV: Tab-delimited CSV file with one row per definition
- ποΈ Datasource Names: Automatically resolves datasource IDs to names
Back up a datasource and all its associated Pulse metric definitions to a ZIP file, and restore them to the same or a different Tableau Cloud site
- πΎ Backup: Downloads the datasource file (.tdsx) and all linked Pulse definitions into a single ZIP archive
- β»οΈ Restore: Publishes the datasource to the target site and recreates all definitions, including allowed dimensions, granularities, representation options, and insight settings
- π Correlation remapping: Cross-definition correlation references are automatically remapped to the new definition IDs after restore
- π Project handling: Restores to the original project if it exists; creates it automatically if not, or falls back to a timestamped
Restored_<YYYYMMDD_HHMMSS>folder - π Flexible datasource identification: Accepts datasource name or LUID (UUID from the Tableau Cloud info panel) β use the LUID to avoid ambiguity when multiple datasources share the same name
Note: Tested with Personal Access Token (PAT) authentication and LUID-based datasource identification only.
Validate a Tableau Pulse custom calendar CSV file against all Pulse custom calendar rules before uploading
- π CSV upload: Drag and drop or browse for any CSV file
- ποΈ Auto-detected columns: Headers are read from the file and presented as dropdowns β no manual column name entry required; common default names are auto-selected
- π Comprehensive validation: Checks every rule enforced by the Pulse backend, including:
- All required columns present
- No gaps in Gregorian dates, no duplicate dates
- DayOfYear increments by exactly 1 (resets to 1 at new year)
- WeekOfYear increments by 1 and all non-final weeks are exactly 7 days
- MonthOfYear increments by 1
- QuarterOfYear is 1β4, only changes when a new month starts, increments by 1
- New year must start with all period fields (DOY/WOY/MOY/QOY) = 1; prior year must end at Q4
- Month names are non-empty, consistent within each month, and unique across months
- Calendar must not end mid-year (final year must reach Q4)
- Calendar must extend through today's date
- π Detailed error report: Every violation is reported with the row number and exact date so issues are easy to locate and fix
Get a list of metrics marked as favorites by the authenticated user
- Calls the same
followedMetricsGroupsendpoint used by the Tableau Pulse UI - Filters followed metrics to only those tagged as favorites
- Displays definition name, datasource, metric type, and applied filters
- Exports results to CSV
- π Multiple Authentication: Supports both username/password and Personal Access Token (PAT) authentication
- π Modern UI: Beautiful, gradient interface with glass morphism effects and animations
- π Real-time Progress: Live updates during operations
- π± Responsive Design: Works seamlessly on desktop and mobile devices
- β¨ Error Handling: Comprehensive error reporting and validation
- π Utility Selector: Easy-to-use front page for choosing which tool to use
hello-world-app/
βββ app.py # Flask application with Pulse API integration
βββ requirements.txt # Python dependencies (Flask, requests)
βββ README.md # This file
βββ templates/
βββ index.html # Web UI with form and progress tracking
- Python 3.7+ installed on your system
- pip (Python package installer)
-
Navigate to the project directory:
cd hello-world-app -
Create a virtual environment (recommended):
python -m venv venv
-
Activate the virtual environment:
- On macOS/Linux:
source venv/bin/activate - On Windows:
venv\Scripts\activate
- On macOS/Linux:
-
Install dependencies:
pip install -r requirements.txt
-
Start the Flask server:
python app.py
-
Open your web browser and visit:
http://localhost:3000 -
You'll see the Pulse Definition Copier interface with:
- Welcome tab with overview and features
- Copy Definitions tab with the main form
- Real-time progress tracking during operations
- Start the application and visit
http://localhost:3000 - Choose one of the twelve available utilities from the home page
- Fill in the required connection and configuration details
- Monitor real-time progress and results
-
Source Site Configuration:
- Enter source Tableau Server URL
- Provide site content URL and authentication credentials
- Specify the source datasource name
-
Destination Site Configuration:
- Enter destination Tableau Server URL
- Provide destination site details and credentials
- Specify the destination datasource name
-
Definition Selection:
- Enter specific definition IDs (comma-separated) or "all" for all definitions
-
Execute: Click "π Start Copying" and monitor progress
-
Site Connection:
- Enter Tableau Server URL and site content URL
- Choose authentication method and provide credentials
-
Action Configuration:
- Select action: "Add Followers" or "Remove Followers"
- Enter metric IDs (comma-separated)
- Enter user email addresses (comma-separated or one per line)
-
Execute: Click "π₯ Manage Followers" and monitor progress
-
Site Connection:
- Enter Tableau Server URL and site content URL
- Provide authentication credentials
-
Copy Configuration:
- Enter the Pulse Definition ID to copy
- Enter the new Datasource LUID to use
-
Cleanup Options:
- Optionally remove followers from old metrics after copying
-
Execute: Click "π Swap Datasources" and monitor progress
-
Server Connection:
- Enter Tableau Server URL and API version
- Provide site content URL and authentication credentials
-
Users Configuration:
- Enter user email addresses (comma-separated or one per line)
-
Pulse Preferences:
- Set cadence (daily, weekly, monthly)
- Configure email and Slack channel delivery
- Set metric grouping and sort order preferences
-
Execute: Click "βοΈ Update User Preferences" and monitor progress
-
Server Connection:
- Enter Tableau Server URL and API version
- Provide site content URL and authentication credentials
-
Group Configuration (Optional):
- Enter a Group Name to filter certifications by group membership
- The tool will automatically look up the group ID from the name
- Leave empty to view all certified metrics without filtering
-
Certification Removal (Optional):
- Check the box to automatically remove certifications from metrics certified by non-group members
- Requires a Group Name to be specified
-
Execute: Click "β Check Certified Metrics" and view the results
The tool will:
- List all metric definitions with certification status
- Show which metrics were certified by group members vs. non-members (if group specified)
- Display certifier information and certification dates
- Optionally remove certifications from unauthorized users
-
Server Connection:
- Enter Tableau Server URL and API version
- Provide site content URL and authentication credentials
-
Source Metric Configuration:
- Enter the Source Metric ID (the existing scoped metric to use as a template)
-
Input Mode Selection:
- CSV Upload (Recommended):
- Upload a CSV file with 3 columns:
- Column 1: Dimension name (e.g., "Region")
- Column 2: Comma-separated filter values (e.g., "East, West")
- Column 3: Comma-separated follower emails (optional)
- Example CSV:
Region,East,user1@example.com Region,"East, West",user2@example.com Department,Sales,"user3@example.com, user4@example.com"
- Upload a CSV file with 3 columns:
- Manual Entry:
- Enter Dimension Name (e.g., "Region", "Category")
- Enter dimension values (comma-separated)
- Creates one metric per value (no follower assignment)
- CSV Upload (Recommended):
-
Execute: Click "π Create Scoped Metrics" and monitor progress
The tool will:
- Retrieve the source metric and its specification
- Create a new scoped metric for each CSV row (or dimension value in manual mode)
- Each new metric will have all filters from the source metric plus new filter(s) for the dimension value(s)
- Automatically add followers by email (CSV mode only)
- Display success/failure for each created metric and follower addition
Example: If you start with metric X that shows "Total Sales", choose dimension "Region", and provide values "East, West, North, South", the tool will create 4 new scoped metrics:
- Total Sales (Region=East)
- Total Sales (Region=West)
- Total Sales (Region=North)
- Total Sales (Region=South)
-
Server Connection:
- Enter Tableau Server URL and API version
- Provide site content URL and authentication credentials
-
Generate Analytics: Click "π Generate Analytics" and wait for data collection
The tool will:
- Retrieve all metric definitions on the site
- Collect all subscriptions/followers data
- Gather metrics for each definition
- Analyze datasource usage patterns
- Calculate statistics and rankings
-
View Results: The analytics dashboard displays:
- Summary Cards: Quick overview of total definitions, metrics, subscriptions, unique followers, certified definitions, and unique datasources
- Top 10 Most Followed Metrics: Individual metrics ranked by follower count
- Top 10 Definitions by Total Followers: Metric definitions ranked by aggregate follower count across all their metrics
- Top 10 Datasources by Usage: Datasources ranked by total followers, showing definition count and metric count
Use Cases:
- Understand which metrics and definitions are getting the most adoption
- Identify underutilized datasources or definitions
- Track certification progress across your organization
- Make data-driven decisions about which metrics to promote or retire
-
Server Connection:
- Enter Tableau Server URL and site content URL
- Provide authentication credentials (username/password or PAT)
-
Definition Selection:
- Enter the Pulse Definition ID to analyze
- The tool will retrieve all metrics within this definition
-
Deletion Options (Optional):
- Check the box to automatically delete metrics with zero followers
β οΈ WARNING: This will permanently delete all non-default metrics that have zero followers- Default metrics cannot be deleted and will be automatically skipped
-
Execute: Click "π Find Zero Follower Metrics" and view the results
The tool will:
- List all metrics within the definition
- Identify which metrics have zero followers
- Separate default metrics from scoped metrics
- Show metrics with followers for comparison
- Optionally delete non-default metrics with zero followers
- Display deletion statistics (deleted, failed, skipped)
Use Cases:
- Clean up unused scoped metrics that were created but never followed
- Identify metrics that may need promotion or removal
- Understand metric adoption patterns within a definition
- Reduce clutter by removing metrics with no engagement
-
Server Connection:
- Enter Tableau Server URL and site content URL
- Provide authentication credentials (username/password or PAT)
-
Execute: Click "β Get My Favorite Metrics"
The tool will:
- Authenticate and retrieve the current user's followed metrics via the
followedMetricsGroupsAPI - Filter for metrics where the
tagsarray contains"favorite" - Look up the definition name for each favorite metric
- Display results in a table with Definition Name, Datasource, Type, Filters, Metric ID, and Definition ID
- Provide a CSV download of the full results
Use Cases:
- Audit which metrics a specific user has favorited
- Export a user's favorites list for documentation or migration
- Verify favorites are set correctly after onboarding
- Authenticate and retrieve the current user's followed metrics via the
-
Upload your CSV: Click the file input and select your custom calendar CSV file
-
Map columns: Column dropdowns appear automatically, pre-selecting any columns whose names match the Pulse defaults (
Date,Day of Year,Week of Year,Month of Year,Month Name,Quarter,Year). If your CSV uses different names (e.g.JDATE,JWEEK), select the correct column from each dropdown. -
Validate: Click "π Validate Calendar"
The tool will:
- Parse every row and check all field types
- Validate sequential consistency across all rows (dates, day/week/month/quarter/year increments)
- Check month name uniqueness and consistency
- Verify the calendar covers a complete final year (ends at Q4)
- Verify the calendar extends through today's date
- Report every error with its row number and Gregorian date
Column mapping defaults (used when no column is explicitly selected):
Field Default column name Reference Date DateDay of Year Day of YearWeek of Year Week of YearMonth of Year Month of YearMonth Name Month NameQuarter of Year QuarterYear YearSupported date formats:
YYYY-MM-DD,M/D/YYYY,M/D/YY
-
Site Connection:
- Enter Tableau Server URL and site name
- Choose authentication method (PAT recommended)
-
Datasource Identification:
- Enter the datasource name, or its LUID (UUID)
- To find the LUID: open the datasource in Tableau Cloud β click the β info icon β copy the ID field
- Use the LUID if multiple datasources share the same name
-
Execute: Click "πΎ Create Backup"
The tool will:
- Look up the datasource and download it as a
.tdsxfile - Fetch all Pulse metric definitions linked to that datasource
- Package everything into a ZIP file for download
- Look up the datasource and download it as a
-
Site Connection:
- Enter the destination Tableau Server URL and site name
- Provide authentication credentials
-
Target Project (Optional):
- Enter a project name to restore into β it will be created if it does not exist
- Leave blank to auto-create a
Restored_<YYYYMMDD_HHMMSS>project
-
Upload: Select the backup ZIP file and click "β»οΈ Restore Backup"
The tool will:
- Publish the datasource to the target project
- Recreate all Pulse definitions with full configuration (dimensions, granularities, insights, representation options)
- Remap cross-definition correlation references to the new definition IDs
- Display a link to the restored datasource
Note: Followers (metric subscriptions) are not included in the backup and must be re-added manually after restore.
-
Server Connection:
- Enter Tableau Server URL and API version
- Provide site content URL and authentication credentials
-
Export Mode Selection:
- Basic Mode: Exports essential fields only
- Name, Measure, Time Dimension, Definitional Filters, Type, Definition ID, Datasource Name
- Verbose Mode: Exports all configuration details including:
- All basic fields plus Description, Datasource info, Running Total setting
- Extension options (Allowed Dimensions, Granularities, Offset settings)
- Representation options (Number Format, Sentiment Type, Units)
- Insights settings, Comparisons, Certification status
- Related Links count, Goals count, Created/Modified timestamps
- Basic Mode: Exports essential fields only
-
Execute: Click "π Export Definitions" and wait for processing
-
View & Download Results:
- Preview the first 50 definitions in an interactive table
- Click "π₯ Download CSV" to get the complete tab-delimited file
- File is also automatically saved to the server directory
Note on Viz State Definitions:
- Definitions created from existing visualizations show "(Viz State)" for Measure, Time Dimension, and Filters
- These values are embedded in the visualization and cannot be extracted separately
- All other fields (verbose mode) are exported normally
GET /- Main utilities selection interfaceGET /api/hello- Test API connection endpointPOST /copy-definitions- Copy pulse definitions between sitesPOST /manage-followers- Bulk add/remove followers from metricsPOST /swap-datasources- Copy definitions with new datasourcesPOST /update-preferences- Update user preferences for PulsePOST /check-certified-metrics- Check certified metrics and remove unauthorized certificationsPOST /bulk-create-scoped-metrics- Create multiple scoped metrics from a source metricPOST /pulse-analytics- Generate comprehensive analytics about Pulse usagePOST /zero-follower-metrics- Find and optionally delete metrics with zero followersPOST /export-definitions- Export all metric definitions to CSVPOST /favorite-metrics- Get the authenticated user's favorited metricsPOST /backup- Back up a datasource and its Pulse definitions to a ZIP filePOST /restore- Restore a backup ZIP to a Tableau sitePOST /validate-custom-calendar- Validate a custom calendar CSV against all Pulse custom calendar rules
- Modify the UI: Edit
templates/index.htmlto change the interface or styling - Update CSS: Modify the styles in the
<style>section for custom themes - Add new API endpoints: Extend
app.pywith additional@app.route()functions - Change server configuration: Modify the
port=3000parameter inapp.run()inapp.py - Adjust API version: Update the
API_VERSIONconstant inapp.pyif needed
- The app runs in debug mode by default, so changes to Python files will automatically reload the server
- For production deployment, set
debug=Falseinapp.run() - All sensitive credentials are handled securely and not stored permanently
- Press
Ctrl+Cin the terminal where the server is running - To deactivate the virtual environment:
deactivate
- Port already in use: Change the port in
app.pyor kill the process using port 3000 - Module not found: Make sure you've activated the virtual environment and installed requirements
- Permission errors: Ensure you have proper permissions in the project directory
- Authentication failed: Verify your credentials and ensure the server URLs are correct
- Datasource not found: Check that the datasource name exists on the specified site
- Definition copy failed: Ensure you have appropriate permissions on both source and destination sites
- Network timeout: Check network connectivity to the Tableau servers
- Never commit credentials to version control
- Use environment variables for production deployments
- Ensure HTTPS is used for production Tableau Server connections
- Personal Access Tokens are recommended over username/password authentication
This application suite includes twelve powerful utilities for managing Tableau Pulse:
- Pulse Definition Copier - Copy definitions between sites
- Bulk Manage Followers - Add/remove followers from metrics
- Swap Datasources - Copy definitions with new datasources
- Update User Preferences - Update Pulse user preferences
- Check Certified Metrics - View and manage metric certifications
- Bulk Create Scoped Metrics - Create multiple scoped metrics with dimension filters
- Pulse Analytics - Get comprehensive insights into metric usage and follower engagement
- TCM Activity Logs - Download and view activity logs from Tableau Cloud Manager (with CSV export)
- Zero Follower Metrics - Find and optionally delete metrics with no followers
- Remove All Followers - Remove all followers from non-default metrics for a definition
- Export Definitions - Export all metric definitions to CSV for documentation
- Favorite Metrics - Get a list of metrics favorited by the authenticated user
- Backup & Restore - Back up a datasource and all its Pulse definitions to a ZIP, restore to any site
- Custom Calendar Validator - Validate a custom calendar CSV against all Pulse backend rules before uploading
- π No CLI Required: Everything runs through the web browser
- ποΈ Better UX: Visual progress tracking and comprehensive error reporting
- β Validation: Form validation ensures all required fields are completed
- π Security: Credentials are handled securely without persistent storage
- π Enhanced Functionality: Same power as the original CLI scripts with improved usability
- π± Accessibility: Works on any device with a web browser
- π Unified Interface: All fourteen utilities in one convenient location
- Modern Flask web framework
- RESTful API design
- Real-time progress updates via JSON responses
- Comprehensive error handling and logging
- Beautiful, responsive UI with animations
- Support for both JSON and XML API authentication methods
Transform your Tableau Pulse management workflow with this powerful web application suite! πππ₯πβοΈβ ππππβπΎπ