A comprehensive web application suite for managing Tableau Pulse with eight 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
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
- π 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 three 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,[email protected] Region,"East, West",[email protected] Department,Sales,"[email protected], [email protected]"
- 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 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 /export-definitions- Export all metric definitions to CSV
- 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 eight 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
- Export Definitions - Export all metric definitions to CSV for documentation
- π 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 eight 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! πππ₯πβοΈβ πππ