ml-connector
SYSPROTwilio

SYSPRO and Twilio integration

SYSPRO runs your manufacturing, distribution, and finance. Twilio delivers SMS alerts across your mobile team. Connecting the two keeps operations informed in real time. New approved purchase orders trigger SMS notifications to procurement teams, supplier payment confirmations reach your accounts payable staff, and invoice submissions alert the finance team on their phones. ml-connector bridges the two systems and ensures every notification is logged and can be replayed if it fails.

How SYSPRO works

SYSPRO Adaptive ERP exposes suppliers, invoices, purchase orders, general ledger accounts, cost centers, and warehousing through e.net Business Objects (REST and SOAP) and OData (read-only REST). The e.net layer authenticates with a session token obtained by login to the Utilities/Logon endpoint and passing a UserId GUID on all calls. OData authenticates with HTTP Basic Auth using auto-generated SQL credentials (operator code and password). SYSPRO has no native outbound webhook system for cloud connectors, so records are read by polling OData tables with timestamp filters on PostDate and InvoiceDate at intervals you set (typically 5 to 15 minutes for financial data).

How Twilio works

Twilio exposes SMS and voice messaging, incoming phone management, message and call status, usage tracking, and two-factor identity verification through REST APIs at multiple base URLs. It authenticates with HTTP Basic Auth using either Account SID and Auth Token or API Key SID and API Secret, with no OAuth2 support. Twilio can push real-time webhook notifications for incoming messages, message status changes (queued, sent, delivered, failed, read), incoming calls, and call status updates, but it is not an ERP system and has no invoices, purchase orders, general ledger accounts, or vendors.

What moves between them

The flow runs from SYSPRO into Twilio. ml-connector polls SYSPRO's PorMasterHdr (purchase orders) and ApInvoice tables at a cadence you control, typically every 5 to 15 minutes. When a purchase order approval status changes, ml-connector compiles the order summary (supplier, total amount, line items) and sends an SMS via Twilio to a configured phone number (often a procurement team lead or shared alert group). When an invoice is posted to the general ledger (detected by changes in GenMaster or ApPosting), ml-connector sends a summary SMS to accounts payable. The integration is unidirectional: SYSPRO data flows outbound to Twilio alerts, and Twilio does not write back into SYSPRO.

How ml-connector handles it

ml-connector authenticates to SYSPRO using either the session token (e.net) or HTTP Basic Auth (OData), polls the configured tables with timestamp filters on PostDate and InvoiceDate, and caches the session token to avoid login overhead on every call. For each new or changed record, ml-connector constructs a plain-text SMS body from the ERP data (order number, supplier, amount, line count) and calls Twilio's Messages endpoint with the Account SID and Auth Token using HTTP Basic Auth. Twilio returns a MessageSid in the response, which ml-connector logs in its audit table along with the SYSPRO source record, the SMS destination phone, and the timestamp. If Twilio returns an error (invalid phone, carrier rejection, or rate limiting), ml-connector retries with exponential backoff and surfaces the failure in the audit log so you can replay the message manually. SYSPRO session tokens expire on timeout or logoff, so ml-connector monitors the token and re-authenticates proactively before expiry. Message content and phone numbers are stored encrypted at rest.

A real-world example

A mid-sized distributor runs SYSPRO for procurement, inventory, and finance across three regional warehouses. The procurement team works on the warehouse floor and in the office, and approval authority is split across two staff members who are often away from their desks. Before Twilio integration, new purchase orders had to be approved through an email chain, and the team did not know they had arrived until they checked email. With SYSPRO and Twilio connected, each time a purchase order is submitted for approval, an SMS alert reaches the designated approval owner immediately with the supplier name, order amount, and line count. Once approved, the procurement team gets a confirmation SMS, and accounts payable sees an SMS when the supplier invoice posts to the general ledger. The approval chain is now synchronous, and the team has full visibility into the order flow without leaving the warehouse floor.

What you can do

  • Send SMS alerts from SYSPRO when purchase orders change approval status, with supplier and total amount details.
  • Notify accounts payable via SMS when supplier invoices post to SYSPRO's general ledger.
  • Authenticate SYSPRO using its session token or HTTP Basic Auth, and Twilio using Account SID and Auth Token, each independently.
  • Poll SYSPRO financial tables at a cadence you control (typically 5 to 15 minutes), with retries and exponential backoff on Twilio delivery failures.
  • Log every alert sent and received in a complete audit trail, with the ability to replay failed messages.

Questions

Can the integration send alerts for any SYSPRO table, or only purchase orders and invoices?
The integration is designed around the highest-value notifications: purchase order approvals and invoice postings. You can extend it to other SYSPRO tables (such as purchase requisitions or general journal entries) by adding new polling rules and SMS templates, but the core implementation focuses on the ERP events that most often require immediate team attention.
What happens if Twilio delivery fails or the phone number is invalid?
ml-connector retries failed deliveries with exponential backoff (up to a configurable limit) and logs each attempt in the audit table with the error from Twilio. If delivery fails after all retries, the alert is marked failed in the audit log and you can review and replay it manually through the ml-connector dashboard or API.
Does SYSPRO's session token expiry or Twilio rate limits cause outages?
ml-connector monitors SYSPRO session token expiry and re-authenticates proactively before timeout, so token expiry does not interrupt polling. Twilio rate limits are handled with exponential backoff and jitter on retries. If Twilio is temporarily unavailable or rate-limiting, alerts are queued and retried automatically, with full visibility in the audit log.

Related integrations

Connect SYSPRO and Twilio

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

Get started