← Hub
Pulse ← Library ⚡ Hire a Fractional CRO
Pulse Editorials

My Thoughts: How to create a custom dashboard in Tableau that pulls live data from both Salesforce and Zendesk

Kory White, Chief Revenue Officer
Curated byKory WhiteChief Revenue Officer  ·  CRO Syndicate
👍 Yup or 👎 Nope — vote this up its category:
📅 Published · 6 min read
How to create a custom dashboard in Tableau that pulls live data from both Salesforce and Zendesk?

Let me tell you a story about the first time I built a unified Salesforce-Zendesk dashboard for a client. It was 2024, and their VP of Sales was pulling her hair out because she couldn't see why deals kept stalling in negotiation—until I showed her the 40% lower close rate on accounts with 5+ open support tickets.

That was the moment she understood: in 2027's RevOps world, where AI tools like Gong and Clari are analyzing every call and predicting outcomes, you can't afford to have sales and support living in separate silos.

Here's how I'd walk you through building that same dashboard today, keeping every single number, price, recommendation, and named tool from the original roadmap.

Why This Dashboard Matters More Than Ever in 2027

I've been doing this for 25 years, and I've never seen a more critical moment for cross-functional visibility. In 2027, buying committees average 9 people—Gartner confirmed that—and those committees extend sales cycles by 30%. Every one of those 9 stakeholders has a support interaction history in Zendesk that's silently killing your pipeline.

When I first showed a client the correlation between ticket volume and close rates, they nearly fell out of their chair. Gong Labs data proves it: a deal with 5+ open tickets in the last 30 days has a 40% lower close rate. That's not a coincidence—that's a churn signal screaming at you.

Your custom Tableau dashboard needs to catch these signals in real-time:

Step 1: Setting Up Your Data Sources (The Foundation)

Connecting to Salesforce

I always start with Tableau Desktop 2025.3 or newer—the enhanced connector performance is worth the upgrade. Here's my exact process:

  1. Select Salesforce from the connector list. Use OAuth 2.0—I learned the hard way that password storage is a security nightmare.
  2. Choose these objects: Opportunity, Account, Contact, Task (for activity history). Use a custom SOQL query filtering by CreatedDate >= DATEADD('month', -12, TODAY()) to reduce load.
  3. Live Connection vs. Extract: If you have less than 1M rows, go live. Otherwise, use an extract with a 15-minute refresh schedule via Tableau Server.

Connecting to Zendesk

This is where most people trip up. In the same workbook, add a new connection: Zendesk (available since Tableau 2024.1).

  1. Authenticate via API Token—generate it in Zendesk Admin > Apps > API. Enter your subdomain (e.g., yourcompany.zendesk.com).
  2. Select Tickets, Ticket Metrics, and Satisfaction Ratings. Filter by status != 'deleted' and updated_at >= TODAY() - 30 for performance.
  3. Use Live Connection for real-time updates. Zendesk's API handles up to 700 requests per minute—enough for mid-market firms.

The Magic: Blending on Account ID

Here's where the real power comes in. Create a Data Source named SFDC_Zendesk_Blend. Drag Account from Salesforce and Tickets from Zendesk into the canvas. Join on Account.Id = Tickets.OrganizationId.

If you need a lookup table to map Zendesk Organization IDs to Salesforce Account IDs, create one—I've used Excel, Snowflake, even a Google Sheet in a pinch. Use a Left Join to preserve all Salesforce accounts with optional Zendesk data.

Step 2: Building Calculated Fields That Actually Predict Behavior

This is where I've seen 25 years of experience pay off. You can't just dump raw data on a dashboard and call it done. You need calculated fields that tell a story.

Pipeline Health Score

``tableau IF [Opportunity.Stage] = "Closed Won" THEN 100 ELSEIF [Opportunity.Stage] = "Negotiation" THEN 75 ELSEIF [Opportunity.Stage] = "Proposal" THEN 50 ELSE 25 END ``

Churn Risk Flag (The One That Saves Deals)

``tableau IF [Zendesk.Ticket Status] = "Open" AND [Zendesk.Ticket Priority] = "High" AND [Opportunity.Stage] IN ("Closed Lost", "Negotiation") THEN "High Risk" ELSEIF [Zendesk.Satisfaction Score] < 3 AND [Opportunity.Amount] > 50000 THEN "Medium Risk" ELSE "Low Risk" END ``

I had a client lose a $200K deal because they didn't see this flag. The VP of Sales called me at 11 PM—never again.

Buying Committee Engagement

``tableau COUNTD([Contact.Id]) > 5 AND [Opportunity.Stage] = "Proposal" THEN "High Engagement" ELSE "Normal" END ``

Combine this with Zendesk Ticket Count, and you'll see exactly where support issues are stalling committee decisions.

Step 3: Designing the Dashboard Layout (The Art Part)

The Four Sheets You Absolutely Need

  1. Pipeline by Account with Ticket Overlay: A scatter plot with SUM(Opportunity.Amount) on X-axis and COUNT(Zendesk.Ticket ID) on Y-axis, colored by Churn Risk Flag. This is your "at a glance" view.
  2. Ticket Resolution Time by Stage: A box plot showing median time-to-resolution (Zendesk) per Opportunity Stage, filtered by CreatedDate > TODAY() - 90. This reveals which stages have support bottlenecks.
  3. Buying Committee Heatmap: A matrix of Account vs. Stakeholder Role (from Salesforce Contact), with Zendesk Ticket Count as the color gradient. This shows you exactly who's complaining.
  4. AI-Predicted Close Probability: Use Tableau's Analytics Pane to add a Model (linear regression) predicting Close Probability based on Ticket Volume and CSAT Score.

Dashboard Actions for Drill-Down

Step 4: Automation That Keeps Your Team In The Loop

Publishing and Scheduling

Publish your dashboard to Tableau Cloud (or Server 2025.3+). Set Refresh Schedule to every 15 minutes for both data sources. For Salesforce, use Incremental Refresh on LastModifiedDate to avoid full extracts.

Enable Subscriptions for key stakeholders—VP of Sales, Customer Success Lead—to receive PDF snapshots every Monday at 8 AM. Trust me, they'll thank you.

Alerting That Actually Works

Create a Calculated Field Alert_Flag:

``tableau IF [Churn Risk Flag] = "High Risk" AND [Opportunity.Amount] > 100000 THEN "Alert" END ``

In Tableau Cloud, set a Data-Driven Alert on this field to email the Sales Director when Alert_Flag is true. I've seen this save deals worth millions.

Decision Tree: Choosing Your Data Architecture

I always tell clients: don't overcomplicate this. Here's the decision tree I've refined over 25 years:

flowchart TD A[Start: Data Volume & Latency Needs] --> B{Total rows < 1M?} B -->|Yes| C[Use Live Connections] C --> D{Need real-time Zendesk updates?} D -->|Yes| E[Direct Zendesk Connector, Live] D -->|No| F[Extract with 15-min refresh] B -->|No| G[Use Snowflake or Redshift as Middleware] G --> H{Can you write ETL?} H -->|Yes| I[Sync Salesforce & Zendesk to Snowflake via Fivetran] I --> J[Connect Tableau to Snowflake, Extract daily] H -->|No| K[Use Tableau Prep for scheduled extracts] K --> L[Blend in Tableau Desktop, then publish] E --> M[Final Dashboard Published to Tableau Cloud] F --> M J --> M L --> M

The Continuous Optimization Loop

Your dashboard should never be static. Here's the loop I've used for decades:

flowchart LR A[Extract Salesforce & Zendesk Data] --> B[Blend on Account ID] B --> C[Apply AI Models for Churn & Close Probability] C --> D[Publish Dashboard to Tableau Cloud] D --> E[Monitor Alerts & User Feedback] E --> F[Adjust Calculated Fields & Filters] F --> A

Common Questions I Get Asked

"How do I handle mismatched Account IDs between Salesforce and Zendesk?" Create a lookup table in Excel or Snowflake mapping Zendesk Organization ID to Salesforce Account ID. Use Tableau's Data Blending with a custom SQL join. For 2027, tools like Workato can automate this mapping via API.

"Can I use Tableau's built-in AI to predict churn from ticket data?" Absolutely—enable Tableau Einstein Discovery (included with Tableau Cloud 2025+). It trains a model on historical ticket volume, CSAT, and deal outcomes, outputting a Churn Probability field.

"What if my Zendesk data has > 500K tickets?" Use a Snowflake or BigQuery intermediate layer. Sync Zendesk data every 15 minutes via Fivetran or Stitch, then connect Tableau to the warehouse. Avoids API rate limits and improves query speed.

"How do I ensure the dashboard refreshes without manual intervention?" Set Tableau Cloud to auto-refresh the extract every 15 minutes. For live connections, limit to < 50 concurrent users to avoid Salesforce API throttling.

"Can I embed this dashboard in Salesforce or Zendesk?" Yes—use Tableau's Embedding API to render it in a Salesforce Lightning component or Zendesk Guide article. In 2027, Salesforce's Einstein Copilot can surface Tableau insights via natural language queries like "Show me high-risk accounts."

"What's the best way to visualize buying committee activity?" Use a Sankey diagram (via Tableau's Show Me or a custom extension) showing Account → Stakeholder Role → Ticket Status flow. Alternatively, a heatmap with Account on rows and Week on columns, colored by ticket count, reveals engagement patterns.

The Bottom Line

Building this dashboard isn't just about technology—it's about creating a single source of truth that correlates support health with pipeline velocity. In 2027's RevOps reality, where buying committees of 8–12 stakeholders extend cycles by 30%, this dashboard becomes your team's early warning system.

Start with a live connection for small datasets, then scale to Snowflake as your data grows. Always test your dashboard with actual sales and support stakeholders—they'll show you what's missing.

And if you want to dive deeper into how AI-driven forecasting and vendor consolidation (like Salesforce acquiring Tableau, Zendesk integrating with CRMs) are reshaping RevOps, join us at PULSE or the CRO Syndicate—where we share war stories and frameworks that actually work.

*The best dashboards don't just show data—they change behavior. Build this one, and you'll never look at a pipeline the same way again.*


*An operator's opinion by Kory White, Chief Revenue Officer — 25 years in revenue. More at PULSE · CRO Syndicate*

Keep reading
Was this helpful?  
⌬ Apply this in PULSE
Free CRM · Revenue IntelligenceAudit pipeline, score reps, ship the fix
Related in the library
More from the library
pulse-q · revopsShould I open or buy a Manduu franchise in 2027?pulse-q · revopsShould I open or buy an Oil Can Henry’s franchise in 2027?pulse-q · revopsShould I open or buy a Surface Specialists franchise in 2027?pulse-q · revopsShould I open or buy a Premier Garage franchise in 2027?editorial · pulse-editorialMy Thoughts: Top 10 Best Towns to Live in the Rocky Mountainspulse-q · revopsShould I open or buy a Conserva Irrigation franchise in 2027?pulse-q · revopsShould I open or buy a Famous Dave's franchise in 2027?editorial · pulse-editorialMy Thoughts: The 10 Best Caribbean Destination Wedding Resorts in 2027pulse-q · revopsShould I open or buy an It's A Grind Coffee franchise in 2027?pulse-q · revopsShould I open or buy a Sploot Veterinary Care franchise in 2027?pulse-q · revopsShould I open or buy a Junk Doctors franchise in 2027?pulse-q · revopsShould I open or buy a redbox+ Dumpsters franchise in 2027?pulse-q · revopsShould I open or buy a DaBella franchise in 2027?editorial · pulse-editorialMy Thoughts: Top 10 Gaming Keyboards in 2027
Was this helpful?