MetricSign
Start free
7 min read·

Why Tableau Cloud Extract Refresh Fails Silently — And How to Detect It

Tableau Cloud extract refresh failures are often invisible

When a Tableau Cloud extract refresh fails, most users never know it happened. The workbook does not show an error — it loads normally, displaying whatever data was in the extract from the last successful refresh. If that refresh ran three days ago, users are looking at three-day-old numbers with no visual indication that anything is wrong.

There are four structural reasons why extract refresh failures go unnoticed:

Email goes to the workbook owner only. Tableau Cloud sends a failure notification to the workbook owner's registered email address. If the workbook owner has left the organisation, changed their email, or simply ignores automated emails, no one gets the notification.

Tableau Server Admin doesn't see them by default. The Tableau Cloud admin UI does not surface a real-time list of failing extract refreshes on any dashboard. You can find them in the Jobs view, but only if you think to look.

The workbook still loads. Unlike a broken URL or a server error, a stale extract silently serves old data. Users who don't know the expected refresh cadence have no way to detect that the data they're looking at is out of date.

No fleet-level extract health view. There is no native Tableau Cloud dashboard that shows the refresh success rate across all workbooks and data sources in your site. Monitoring extract health requires either the REST API or a third-party tool.

The result is a class of failure that is invisible until a stakeholder asks why a number doesn't match another system — at which point the root cause is already hours or days old.

Common reasons Tableau Cloud extract refreshes fail

Extract refresh failures in Tableau Cloud fall into a small number of categories:

Credential expiry — the most frequent cause. If the data source connection was set up with a username and password (rather than OAuth), and the database password changes, every extract refresh that uses that credential will fail silently. Tableau Cloud stores the credential at the time of connection setup; it does not receive password change notifications from the source system.

Source system unavailability — the database or warehouse that backs the extract is offline, in maintenance, or has hit a connection limit. Snowflake warehouses that auto-suspend and take longer than the query timeout to resume are a common example. Tableau Cloud retries a limited number of times and then marks the job as failed.

Permission changes — the service account or user whose credentials Tableau Cloud uses to connect to the source loses access. A role change, a schema permission revocation, or a data source user being deactivated will cause every extract refresh that depends on that account to fail.

Extract size limits — Tableau Cloud enforces a 15 GB limit per extract file. Data sources that grow beyond this limit will start failing extract refreshes without any prior warning. The error message in the job log references the size limit.

Network timeout — connections from Tableau Cloud to on-premises sources (via Tableau Bridge) or cloud sources with strict network controls can time out if the connection takes longer than the configured threshold.

Prep Flow failures upstream of the extract — if a Tableau Prep Flow produces the data that an extract consumes, and the Flow fails, the extract may not run at all. The failure is in the Flow, but the symptom looks like an extract refresh that didn't run — which is a different admin view entirely.

How Tableau Cloud notifies you (and why it's not enough)

Tableau Cloud's built-in notification system for extract refresh failures has several significant gaps:

Email only, no webhook or Slack integration. There is no native way to route Tableau Cloud extract failure notifications to a Slack channel, a Teams channel, or a PagerDuty incident. The only built-in channel is email to the workbook owner.

No admin-level subscription to failures. A Tableau Cloud site admin cannot subscribe to receive notifications for all extract refresh failures across the site. You can only receive notifications for workbooks you own.

The REST API requires polling. Tableau Cloud exposes extract refresh job history via the REST API, but it is pull-based — you have to query it periodically to check for failures. There is no push notification or webhook mechanism. This means monitoring requires building and operating a polling service.

No cross-workbook extract health summary in the UI. The Tableau Cloud admin UI's Jobs view shows individual job statuses, but there is no aggregated view showing the percentage of extract refreshes that succeeded or failed in the last 24 hours across all workbooks on a site.

For small Tableau deployments with a single admin who checks the Jobs view manually, this is workable. For organisations with dozens or hundreds of workbooks, it is not.

Finding failed extract refreshes in Tableau Cloud

The most reliable way to programmatically find failed extract refreshes is the Tableau Cloud REST API. The Jobs endpoint returns the status of background jobs including extract refresh tasks:

# Authenticate and get a token
curl -X POST https://{server}/api/{api-version}/auth/signin \
  -H "Content-Type: application/json" \
  -d '{"credentials":{"personalAccessTokenName":"your-token-name",
       "personalAccessTokenSecret":"your-token-secret",
       "site":{"contentUrl":"your-site-name"}}}'

# Query recent jobs for failed extract refreshes
curl -X GET \
  "https://{server}/api/{api-version}/sites/{site-id}/jobs?filter=status:eq:Failed,jobType:eq:RefreshExtract" \
  -H "x-tableau-auth: {token}"

The response includes the job ID, the data source or workbook the job belongs to, the failure time, and an error message. The notes field in a failed job typically contains the specific database error that caused the failure — the credential error, the timeout message, or the permission denial.

In the Tableau Cloud admin UI, go to Admin > Jobs and filter by status Failed and type Extract Refresh. This gives you the same list as the API, visible without writing code. The limitation is that it is not monitored automatically — you have to remember to check it.

For Tableau Prep Flows, the admin view is separate: Admin > Flow Runs. A failed Flow that feeds an extract will not show up in the extract refresh job list — only in the Flow Runs list.

When an extract refresh fails upstream

The most confusing class of Tableau Cloud extract failure is the one that does not appear in the extract refresh job list at all.

When a Tableau Prep Flow is configured as the input to a published data source, the Flow must run successfully before the extract refresh can execute. If the Flow fails, Tableau Cloud may not even attempt the extract refresh — or it may attempt it and fail immediately because the Flow's output is not available.

The failure is visible in the Flow Runs admin view, not the Jobs view. A team monitoring only extract refresh failures will see an extract that never ran and has no failure entry — which looks like a scheduling gap rather than a failure. The root cause is invisible unless you check both admin views.

This two-view problem is a structural limitation of Tableau Cloud's admin UI. Flow errors and extract errors are managed in separate parts of the interface, with no linking between them. If a Flow fails at 2:00am and the extract is scheduled for 3:00am, the extract simply does not appear in the Jobs list for that morning — which is easy to miss if you are only checking for active failure entries.

The correct mental model is to treat Prep Flows as part of the pipeline that feeds extracts, not as a separate concern. Monitoring extract freshness requires checking both Flow runs and extract refresh jobs.

Monitoring Tableau Cloud extract refresh at scale

For organisations managing more than a handful of Tableau workbooks, manual monitoring of the Jobs view is not sustainable. The steps required — authenticate to the REST API or log into the admin UI, filter by failed status, cross-reference with Flow Runs, identify the affected workbooks, notify the relevant team — take time that most data teams do not have before stakeholders start noticing stale data.

MetricSign connects to Tableau Cloud via the REST API and polls for extract refresh failures and Prep Flow failures automatically. When a refresh fails, MetricSign creates an incident and routes the alert to your team's Slack channel, Teams channel, or email — without requiring any code changes or polling infrastructure on your end.

MetricSign also links Prep Flow failures to the extract refreshes that depend on them, so you see the full picture in one alert: Prep Flow Sales ETL failed at 2:14am. Downstream extract refresh for data source Sales Summary did not run. Affected workbooks: Sales Dashboard, Monthly Pipeline Review.

Setup takes 15 minutes via OAuth — no agents, no SDKs. MetricSign monitors Tableau Cloud alongside your other data tools: Snowflake, dbt, Power BI, ADF, Databricks, Airflow, and Qlik Cloud. The €299/month flat price covers unlimited workspaces and users, and includes a 45-day trial with no credit card required.

Frequently asked questions

Why do Tableau extract refresh failures go unnoticed?+
Three reasons: the failure email goes only to the workbook owner (who may have left or ignore automated alerts), the workbook still loads normally showing stale data instead of an error, and there is no fleet-level Tableau Cloud dashboard showing which extract refreshes failed across your site. Unless someone actively checks the Admin > Jobs view or queries the REST API, failures are invisible until a stakeholder notices outdated numbers.
How do I see all failed extract refreshes in Tableau Cloud?+
In the Tableau Cloud admin UI, go to Admin > Jobs, filter by Status: Failed and Type: Extract Refresh. For programmatic access, query the REST API: `GET /api/{api-version}/sites/{site-id}/jobs?filter=status:eq:Failed,jobType:eq:RefreshExtract`. The API response includes the error message in the `notes` field of each failed job, which typically identifies the root cause.
What's the difference between a Prep Flow failure and an extract refresh failure?+
A Prep Flow failure means the Tableau Prep pipeline that produces data failed before the extract refresh ran. An extract refresh failure means the refresh job itself ran but could not complete (credential error, source unavailable, size limit). These appear in separate admin views: Prep Flow failures in Admin > Flow Runs, extract failures in Admin > Jobs. If a Flow fails, the dependent extract refresh may not appear in the Jobs view at all — which can look like a missed schedule rather than a failure.
How do I get Slack alerts for Tableau extract refresh failures?+
Tableau Cloud has no built-in Slack or Teams integration for extract failures. The options are: (1) build a polling service that queries the Tableau Cloud REST API on a schedule and posts to a Slack webhook when failures are found, or (2) use a monitoring tool like MetricSign that connects to Tableau Cloud via OAuth, detects extract and Flow failures automatically, and routes alerts to Slack or Teams without requiring custom code.
What causes Tableau Cloud extract refresh credential errors?+
Credential errors occur when Tableau Cloud's stored connection credentials are no longer valid. The most common cause is a database password change — Tableau Cloud stores the password at connection setup time and has no way to detect when the source system password changes. Other causes include the data source user account being deactivated, OAuth tokens expiring, or permission revocations on the database role. Fix by re-entering the credentials in the data source connection settings in Tableau Cloud.

Related integrations

How we compare