ml-connector
Sage 50Tableau

Sage 50 and Tableau integration

Sage 50 runs accounting on the desktop. Tableau runs business intelligence in the cloud or on your own server. Connecting them lets you build dashboards and reports on live accounting data without manual exports. Invoice aging, customer profitability, vendor spend, and cash flow analysis all become real-time. ml-connector handles the local SDK polling, respects exclusive-access locks, and keeps your Tableau data sources refreshed on the schedule that matches your accounting cycle.

How Sage 50 works

Sage 50 is available in US and UK regional editions and stores all data in local company files on the same machine where it is installed. The US edition exposes data through a .NET SDK or legacy COM/ODBC layer; the UK edition uses Sage Data Objects (SDO) COM DLLs. Access requires Windows local credentials and the full path to the company data folder. Sage 50 has no webhooks, API keys, or cloud REST interface; the only way to integrate is through the local SDK or legacy query layer. It supports polling by querying modified records by LastModifiedDate or TransactionDate. The integration user must not be logged into Sage 50 interactively while the SDK session is open because the application enforces exclusive access to the data files.

How Tableau works

Tableau operates as a SaaS cloud platform (Tableau Cloud) or self-hosted (Tableau Server) and exposes workbooks, data sources, views, projects, and users through a REST API. Authentication uses Personal Access Tokens (PAT) exchanged for session tokens, or Connected App JWT. Tableau can receive webhooks from external systems on 24 event types including datasource-refresh-succeeded and workbook-created, though webhooks do not include HMAC signatures. Tableau Cloud and Server have different refresh models and session-token expiry rules. Views in Tableau are read-only derived objects; only data sources and workbooks can be updated.

What moves between them

Data flows from Sage 50 into Tableau. Customers, vendors, purchase invoices, sales invoices, and general ledger accounts are polled from Sage 50 on a schedule you define (typically daily or per-week-end), and loaded into Tableau as new or updated records in data sources that feed your workbooks. Dimensions such as vendor name, customer address, and GL account category are refreshed together with transaction detail so dashboards and reports always reflect current accounting state. The flow is one-way; Tableau views are read-only and no changes flow back into Sage 50.

How ml-connector handles it

ml-connector uses the Sage 50 .NET SDK (US edition) or Sage Data Objects COM layer (UK edition) with the company folder path, username, and Windows password you provide, encrypted and cached for each polling cycle. Because Sage 50 enforces exclusive file access, ml-connector uses a dedicated polling window when no one is logged into Sage 50 interactively, and retries if the data files are locked. Sage 50 has no API version field or tenant URL; the integration is tied to the single installation and the company folder path you specify. On each poll, ml-connector queries records modified since the last successful run, using the SDK's LastModifiedDate or AuditTrail API depending on edition, and uploads the batch to Tableau as a CSV or extract. The Personal Access Token you provide to Tableau is used to authenticate, exchanged for a session token, and ml-connector triggers a datasource refresh after each upload so workbooks reflect the new data. Rate limits and session timeouts are handled per Tableau's documented constraints; PAT tokens expire after 15 days of non-use on Cloud, so ml-connector monitors expiry and prompts for renewal before it causes a refresh failure.

A real-world example

A mid-sized accounting firm manages ledgers and financial records for multiple small manufacturers and distributors using Sage 50 on desktops in each office. The firm needs to monitor client health across months: aging receivables, days-payable outstanding, vendor spend trends, and cash position. Before the integration, the firm exported general ledger and invoice data from each Sage 50 instance each week, consolidated the exports in Excel, and rebuilt dashboards manually. This process was manual, error-prone, and lagged behind the actual state of client books. With Sage 50 and Tableau connected, each Sage 50 installation polls on a weekly schedule, loads invoices, customers, vendors, and GL entries into Tableau data sources, and the dashboards refresh automatically. The firm now reviews current client financial state in Tableau without manual exports or consolidation.

What you can do

  • Poll Sage 50 for new and modified customers, vendors, purchase invoices, sales invoices, and GL accounts on a schedule tied to your close calendar.
  • Load Sage 50 accounting data into Tableau data sources so invoices and account balances feed workbooks and reports without manual export.
  • Refresh Tableau workbooks automatically after each Sage 50 poll so dashboards reflect live accounting state.
  • Handle the exclusive-access requirements of Sage 50 SDK and retry if data files are locked during the polling window.
  • Refresh Tableau Personal Access Tokens before expiry and manage session timeouts across Tableau Cloud and Server instances.

Questions

Can I run this integration without a dedicated Windows machine running Sage 50?
The Sage 50 SDK requires direct access to company data files on the same machine where Sage 50 is installed, so ml-connector must run on a Windows machine with Sage 50 installed or accessible over LAN with the SDK configured. If Sage 50 is accessed by multiple users simultaneously, ml-connector needs a polling window when the integration user is not logged in interactively, because Sage 50 enforces exclusive access to data files.
Which Sage 50 edition does the integration support?
ml-connector works with both Sage 50 US (using the .NET SDK) and Sage 50 UK (using Sage Data Objects COM layer). The configuration differs slightly between editions; the US edition requires ApplicationID and CompanyPath, while the UK edition requires DataPath. Both editions poll using LastModifiedDate or AuditTrail API calls, and both expose the same accounting entities: customers, vendors, invoices, orders, and GL accounts.
Does Tableau Cloud differ from Tableau Server in how this integration works?
Yes. Both use the same REST API for data source refresh, but Tableau Cloud and Server have different session-token expiry times and refresh scheduling models. ml-connector handles both using Personal Access Tokens, which expire after 15 days of non-use on Cloud and up to 1 year on Server. Refresh schedules are managed through Tableau's REST API, and ml-connector respects the settings you configure in your Tableau site.

Related integrations

Connect Sage 50 and Tableau

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

Get started