ml-connector
PlexTableau

Plex and Tableau integration

Plex runs manufacturing, supply chain, and finance in discrete manufacturing operations. Tableau turns that data into dashboards and analytics. Connecting the two keeps Tableau dashboards current with your Plex inventory, purchase orders, supplier performance, and financial metrics without manual data export. Manufacturing teams get real-time visibility into production and supply chain status, while finance and procurement teams access the latest inventory and cost data in dashboards tied to their Plex operations.

How Plex works

Plex exposes financial, manufacturing, and supply chain data through REST JSON APIs authenticated with OAuth2 client credentials, and through legacy SOAP Web Services with Basic auth using a username, password, and company code (PCN). Key entities include suppliers, purchase orders, invoices, customers, sales orders, parts, inventory, containers, and GL accounts. Plex does not offer native webhooks, so data must be polled on a configurable interval using filters on modified_date or created_date. API rate limits are not publicly documented and require exponential backoff on HTTP 429 responses. Role-based permissions are enforced, and API calls return 403 or empty results if the integration user lacks the correct Plex role for the requested data.

How Tableau works

Tableau is a business intelligence platform available as a Cloud (SaaS) or Server (self-hosted) deployment. It exposes workbooks, data sources, views, projects, users, and schedules through a REST API. Authentication uses a Personal Access Token (PAT) exchanged for a session token valid for 240 minutes by default, or Connected Apps with JWT. Tableau supports webhooks for 24 event types including datasource-refresh-started and datasource-refresh-succeeded, sent as JSON to a configured HTTPS endpoint without signature verification. Views are read-only derived objects and cannot be written to directly. Data sources can be updated to trigger dashboard refreshes, and exports are available as CSV, image, or PDF.

What moves between them

Manufacturing and financial data flows from Plex into Tableau. ml-connector polls Plex on a configurable schedule (typically every 5-15 minutes) for purchase orders, purchase order releases, invoices, supplier records, inventory balances, parts, containers, and GL accounts, filtered by modified_date to capture only recent changes. The polled data is ingested into Tableau data sources via the REST API, triggering automatic dashboard refreshes on a schedule or on-demand. Reference data such as suppliers and GL accounts are synced in both directions to keep master data aligned. Tableau's webhook events for datasource refresh completion and failures are logged for audit purposes but do not trigger back-writes to Plex.

How ml-connector handles it

ml-connector uses Plex OAuth2 credentials to obtain and refresh access tokens on each poll cycle, and validates that the integration user has the required role to access the requested entity types. On HTTP 429 rate-limit responses, it implements exponential backoff and retries. The integration accepts Plex's base URL and company code (PCN) per customer, since Plex is a multi-tenant cloud platform. ml-connector polls Plex's REST API at a configurable interval (default 5-15 minutes) using modified_date filters to pull only changed records. The polled data is transformed into Tableau data source format and uploaded via Tableau's REST API using the Personal Access Token. ml-connector manages Tableau session token expiry (240 minutes by default) by refreshing on each data push. Because Plex has no native webhooks, polling-based synchronization is required; Tableau webhooks for datasource refresh success and failure are received and logged but do not drive back-syncs. Every poll and upload is audited, and if a Tableau datasource update fails, the job is retried with exponential backoff before surfacing an alert.

A real-world example

A mid-sized automotive parts supplier runs Plex for manufacturing, inventory, and procurement across three plants. The supply chain team uses Tableau dashboards to monitor inventory levels, purchase order aging, and supplier delivery performance. Before the integration, the team exported supplier invoices and inventory snapshots from Plex weekly and uploaded them to Tableau manually, which meant dashboards lagged behind actual operations by days and changes were not captured until the next scheduled export. With Plex and Tableau connected, purchase orders, invoices, and inventory levels sync every 10 minutes, so the procurement dashboard reflects current supplier commitments and delivery status. The supply chain manager can now see exactly which POs are aging, which suppliers are behind on delivery, and where inventory is running low, all in real-time. Week-end inventory reconciliation is faster because the dashboard already reflects the latest Plex counts.

What you can do

  • Poll Plex purchase orders, invoices, suppliers, and inventory on a configurable interval and sync to Tableau data sources.
  • Keep Tableau dashboards current with Plex financial data, GL accounts, cost centers, and supplier master records.
  • Handle Plex OAuth2 token refresh and role-based permission validation across poll cycles.
  • Manage Tableau Personal Access Token expiry and session token lifecycle automatically.
  • Detect Tableau datasource refresh failures via webhooks and retry with exponential backoff until success or alert.

Questions

How does ml-connector handle Plex's lack of webhooks?
Plex does not offer native webhooks, so ml-connector uses polling on a configurable interval, typically 5 to 15 minutes. Each poll filters by modified_date to capture only recently changed records, reducing API load. The interval is set per customer based on their tolerance for dashboard latency and Plex API rate limits.
What happens when Plex rate limits or Tableau token expires during a sync?
ml-connector implements exponential backoff on HTTP 429 responses from Plex and retries automatically. Tableau session tokens are refreshed before each datasource upload, so expiry does not interrupt the sync. If a token refresh fails, the job is retried; if the failure persists, an alert is raised to the operations team.
Which direction does data move between Plex and Tableau?
The main flow is Plex into Tableau. Manufacturing records, purchase orders, invoices, inventory levels, and supplier data flow from Plex into Tableau data sources, where they trigger dashboard refreshes. Reference data such as GL accounts and suppliers can be aligned in both directions, but Tableau views are read-only and no data flows back from Tableau to Plex.

Related integrations

Connect Plex and Tableau

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started