ml-connector
PlexProcore

Plex and Procore integration

Plex runs manufacturing operations and finance; Procore tracks construction projects and their budgets. Connecting them keeps your supplier data and purchase commitments aligned across ERP and field operations. Purchase orders created in Plex flow into Procore as commitments and requisitions, allocated to the correct projects and cost codes, and invoice receipt and payment milestones flow back to Plex for finance reconciliation. ml-connector manages the very different authentication models and makes the data move on the schedule you control.

How Plex works

Plex is a cloud manufacturing ERP by Rockwell Automation that exposes suppliers, purchase orders, invoices, GL accounts, and cost centers through REST APIs authenticated via OAuth2 bearer token, and legacy SOAP endpoints authenticated with Basic auth and a company code (PCN). The REST API is documented in an OpenAPI spec available to authenticated developers at https://developers.plex.com. Plex has no native webhooks, so finance records and purchase orders are read by polling the REST API on a configurable interval, typically 5 to 15 minutes, filtering by modified_date or created_date. SOAP datasources offer scheduled extracts and bulk historical loads.

How Procore works

Procore is a cloud construction management platform that exposes vendors, purchase order contracts, requisitions, invoices, budget line items, and cost codes through REST APIs authenticated via OAuth2 client credentials. Procore tokens expire in 5400 seconds and require refresh on each new request session. The platform supports real-time webhooks for vendors, commitments, requisitions, direct costs, budget changes, and contract change orders, with a custom authorization header in the webhook destination and a 5-second return window. All project-scoped endpoints require both company_id and project_id parameters. Procore also offers a sandbox environment for testing.

What moves between them

The main flow is Plex into Procore. Purchase orders and suppliers created or updated in Plex poll to Procore as new commitments and vendors, with line items allocated to cost codes matching the Plex GL accounts. When Procore marks an invoice received or approved, the payment milestone flows back to Plex for posting to the supplier ledger. Cost and budget data from Procore can also push back to Plex cost centers for financial reporting and month-end close. Procore webhooks accelerate the return flow when enabled.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Plex side it handles OAuth2 token refresh and validates the integration user's role permissions, since Plex enforces role-based access and returns 403 or empty results if the integration user lacks the right role. It polls the Plex REST API on a configurable schedule, filtering by modified_date to catch updates, and uses unique external reference fields to detect duplicate submissions. On the Procore side it authenticates with OAuth2 client credentials, manages token expiry (1.5 hour window), and routes all requests with the required company_id and project_id parameters. It receives Procore webhook events in real-time where webhooks are enabled, validates the custom authorization header, and falls back to polling if webhooks are disabled. Purchase order lines are mapped to Procore cost codes that match Plex GL account structure. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-sized discrete manufacturer with multiple plants runs Plex for purchasing and finance, and uses Procore to track capital equipment and infrastructure projects. Before the integration, the procurement team purchased materials and equipment in Plex, but project managers in Procore had to manually create matching purchase order contracts and requisitions, often working from email forwarded PDFs or spreadsheets. Invoice receipt and payment milestones in Procore never flowed back to Plex, so finance could not reconcile supplier balances without manual review. With Plex and Procore connected, purchase orders created in Plex flow into Procore automatically as commitments, allocated to the correct projects and cost codes, and invoice milestones sync back to Plex to keep supplier ledgers current. The procurement team no longer duplicates data entry, and finance has a clear audit trail from PO to receipt to payment across both systems.

What you can do

  • Sync purchase orders from Plex into Procore as commitments and requisitions, allocated to the correct projects and cost codes.
  • Keep vendor records aligned between Plex suppliers and Procore vendors, mapping fields to match each platform's requirements.
  • Post invoice receipt and payment milestones from Procore back to Plex for supplier ledger and GL account reconciliation.
  • Authenticate Plex with OAuth2 and role validation, and Procore with OAuth2 client credentials and token refresh.
  • Poll Plex on a configurable schedule and receive Procore webhooks in real-time, with retries and a full audit trail on every record.

Questions

Which direction does data move between Plex and Procore?
The main flow is Plex into Procore. Purchase orders and suppliers from Plex create commitments and vendors in Procore, allocated to projects and cost codes. Procore invoice milestones and cost approvals flow back to Plex so the supplier ledger and GL accounts stay in agreement. The two platforms act as a single source of truth for procurement and project finance.
How does the integration handle Plex's lack of webhooks?
ml-connector polls the Plex REST API on a configurable schedule, typically every 5 to 15 minutes, filtering by modified_date to find new and updated purchase orders. It uses unique external reference fields to detect and skip duplicate submissions. Procore can push webhooks in real-time where they are enabled, speeding the return flow of invoice and payment milestones.
What happens when Plex role permissions are missing or Procore tokens expire?
ml-connector validates the Plex integration user's roles before each request and returns an error if permissions are missing; you can add the role in Plex and retry. For Procore, tokens expire every 1.5 hours, so ml-connector refreshes on each new request session and handles 401 responses with a re-authentication call. Both systems are checked at deployment health check.

Related integrations

Connect Plex and Procore

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

Get started