ml-connector
SYSPROGoogle Sheets

SYSPRO and Google Sheets integration

SYSPRO runs your manufacturing ERP. Google Sheets is where your team collaborates on data and analysis. Connecting them lets you replicate SYSPRO's financial records, vendor master, and inventory data into Sheets without manual export and import. You define the column headers and layout in Sheets, and ml-connector keeps them refreshed with the latest SYSPRO records on the cadence you choose.

How SYSPRO works

SYSPRO Adaptive ERP exposes suppliers, AP invoices, POs, GL accounts, GL balances, items, and inventory through two API layers: e.net Business Objects (REST/SOAP, read and write) and OData (REST, read-only). Authentication uses either a session token obtained by logging in to Utilities/Logon (returns a UserId GUID for all subsequent calls) or HTTP Basic Auth with operator code and OData password. SYSPRO has no outbound webhooks, so data is read by polling OData tables using timestamp filters on fields like PostDate and InvoiceDate. Polling every 5-15 minutes is typical for financial records.

How Google Sheets works

Google Sheets provides a cloud-based spreadsheet API (v4) that reads, writes, and formats cell data. It uses OAuth 2.0 Authorization Code flow for user-delegated access or Service Account credentials for server-to-server calls. There are no predefined ERP entities; instead, you define your schema through sheet tabs and column headers, and ml-connector writes values into A1 notation ranges or named ranges. Google Drive watch channels can push notifications when the spreadsheet changes, but they expire hourly and require manual renewal, so polling remains the most reliable method.

What moves between them

The flow is one-way from SYSPRO into Google Sheets. ml-connector polls SYSPRO's OData endpoints for AP invoices, purchase order headers and details, GL account masters, GL balances, suppliers, and inventory records on a schedule you define (typically every 5-15 minutes for financial accuracy). Each record is transformed into a row and appended or updated in its corresponding Google Sheet tab based on the column headers you define. SYSPRO data remains the source of truth; Sheets receives fresh snapshots at each polling interval.

How ml-connector handles it

ml-connector handles SYSPRO's session token lifecycle, logging in once and refreshing the token before expiry to avoid interruption. It polls OData tables using $filter parameters on timestamp fields (PostDate, InvoiceDate, etc.) to capture only new and changed records since the last poll. You supply the SYSPRO server URL and OData credentials (operator code and OData password). For Google Sheets, ml-connector uses OAuth 2.0 or Service Account credentials to authenticate, locates the target spreadsheet by ID, and writes values into the sheet tabs and ranges you have configured. Each record carries metadata (poll timestamp, SYSPRO entity type, source record ID) so you can audit the sync and trace any discrepancy back to SYSPRO. Retries with exponential backoff handle transient failures on both sides.

A real-world example

A mid-sized industrial equipment distributor runs SYSPRO for procurement, manufacturing, and finance. The finance team needs to monitor AP aging weekly and GL account balances daily, and the sales team tracks inventory movements to forecast stock. Before the integration, they exported SYSPRO data to CSV files twice daily and loaded them into shared Sheets for analysis and reporting. With SYSPRO and Google Sheets connected, AP invoices, purchase orders, and GL balances flow into designated sheets every 15 minutes. Finance can build pivot tables and charts directly in Sheets, sales has real-time inventory visibility, and the manual export step is eliminated.

What you can do

  • Replicate SYSPRO AP invoices and POs into Google Sheets tabs with full detail (vendor, amount, date, GL account).
  • Sync SYSPRO GL account masters and balances so your finance team has real-time balance visibility without exporting.
  • Map SYSPRO supplier records and inventory data into custom Sheets columns you define, refreshed on a schedule.
  • Refresh SYSPRO session tokens automatically before expiry and retry failed rows without manual intervention.
  • Audit every sync with record-level metadata (timestamp, source ID, entity type) for reconciliation and troubleshooting.

Questions

Can I write data from Google Sheets back into SYSPRO?
No. This integration is read-only from SYSPRO into Sheets. SYSPRO remains the system of record. If you need to send data back to SYSPRO, that requires a separate flow using SYSPRO's e.net Business Objects API (REST/SOAP with write permission).
How do I define which SYSPRO records go into which sheet tabs?
You create sheet tabs in your Google Sheet and name them to match the data you want (e.g., 'AP_Invoices', 'POs', 'GL_Balances'). Then you define column headers in row 1 of each tab. ml-connector maps SYSPRO fields (ApInvoice.InvoiceNo, ApInvoice.InvoiceAmount, etc.) to your column names, and each polling cycle appends or updates rows based on the SYSPRO record ID.
What happens if the SYSPRO session token expires or Google Sheets returns an error?
ml-connector refreshes SYSPRO session tokens automatically before expiry, so timeouts do not interrupt polling. If a Sheets write fails, ml-connector logs the error with the SYSPRO record ID and timestamp so you can debug and retry. Failed records are not lost; they are captured in the audit trail for manual recovery if needed.

Related integrations

Connect SYSPRO and Google Sheets

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

Get started