ml-connector
PlexRippling

Plex and Rippling integration

Plex runs discrete manufacturing and finance. Rippling runs payroll and HR. Connecting the two keeps your workforce aligned with your manufacturing cost centers and GL accounts. New hires and department changes in Rippling flow into Plex, and payroll cost allocations land on valid Plex GL accounts. ml-connector handles the different APIs on each side and moves the data on a schedule you control.

How Plex works

Plex Plex is a cloud-native ERP and MES platform providing REST JSON APIs at https://cloud.plex.com/api and legacy SOAP Web Services at https://api.plex.com/api/datasources. It authenticates with OAuth 2.0 client credentials (token endpoint https://accounts.plex.com/oauth2/token, Bearer token header) for REST, or Basic auth with username, password, and company code (PCN) for SOAP. Key entities include Supplier, Purchase_Order, Customer, Sales_Order, Part, Inventory, GL_Account, and Payment. Plex does not offer native webhooks, so integrations must poll via modified_date or created_date filters on a configurable interval, or use scheduled SFTP DataSources extracts for bulk loads. Role-based permissions are enforced, and the integration user must have the correct Plex role assigned or API calls return 403 or empty results.

How Rippling works

Rippling is a workforce platform exposing employees, departments, legal entities, accounting dimensions, compensation, payroll runs, and time entries through REST APIs at https://api.rippling.com/platform/api and https://rest.ripplingapis.com. It authenticates with OAuth2 Authorization Code (for App Shop integrations) or API Key / Bearer Token (for server-to-server integrations), with token URL https://api.rippling.com/auth/oauth2/token. Rippling supports webhooks for employee lifecycle events (created, updated, terminated, rehired, department_changed, manager_changed) for App Shop integrations only, and offers a polling alternative via GET /platform/api/employees with updated_at filter. Employees are read-only via the base API; create and update require App Shop OAuth with employees:write scope. Compensation data on workers may be redacted due to entitlement restrictions.

What moves between them

Employee and department data flow from Rippling into Plex. New hires, terminations, and department changes in Rippling are read by ml-connector on a schedule tied to your payroll calendar and written into Plex's employee dimension tables. GL account and cost center mappings flow in both directions, so Rippling accounting dimensions align with Plex GL accounts. Payroll cost allocations reference GL accounts and cost centers that already exist in Plex, preventing posting errors. The cadence is configurable (typically 1-2 times per pay period) and can be webhook-driven if using Rippling's App Shop OAuth, or polling-based for server-to-server API Key flows.

How ml-connector handles it

ml-connector stores both OAuth2 credential sets encrypted and refreshes bearer tokens when they expire. For Plex, it accepts the OAuth2 tenant client ID and secret, and authenticates to https://accounts.plex.com/oauth2/token. For Rippling, it uses either OAuth2 Authorization Code flow (if App Shop) or API Key (if server-to-server), routing to the appropriate base URL (v1 platform or v2 REST). On the Plex side, it uses the Supplier and GL_Account entities via polling with created_date and modified_date filters, since Plex offers no webhooks. On the Rippling side, it can receive webhooks for employee lifecycle events if integrated as an App Shop integration, or poll the GET /platform/api/employees endpoint with updated_at filtering for direct API Key flows. The integration maps Rippling departments and accounting_dimensions to Plex GL_Account and cost center dimensions, using external reference fields or company-specific stored procedures to detect duplicates. Payroll cost lines reference valid Plex GL accounts, validated before posting. Every record carries a trace timestamp and source system ID for audit and replay.

A real-world example

A mid-sized discrete manufacturer runs Plex for production, purchasing, and finance across two plants. The company uses Rippling for payroll and HR to manage about 150 employees, with separate departments and cost centers per plant. Before the integration, the payroll team sent employee rosters and department changes to finance manually each month, and finance re-keyed the payroll cost allocations into Plex cost center journals by hand. Reconciliation at month-end was slow because employee counts in Rippling did not always match Plex headcount, and misaligned cost centers caused payroll GL postings to fail. With Plex and Rippling connected, new hires, transfers, and terminations flow into Plex automatically on a weekly schedule, and payroll cost allocations land on the correct GL accounts and cost centers tied to each plant. Month-end close now starts with employee counts and cost centers already reconciled.

What you can do

  • Sync Rippling employees and department changes into Plex on a schedule tied to your payroll calendar.
  • Map Rippling accounting dimensions and departments to Plex GL accounts and cost centers so payroll allocations land on valid accounts.
  • Authenticate Rippling with OAuth2 (App Shop) or API Key, and Plex with OAuth2 client credentials.
  • Support both webhook delivery (App Shop Rippling) and polling (server-to-server API Key Rippling) for flexibility.
  • Track every employee and department record with full audit trail and replay capability on sync failures.

Questions

Which direction does data move between Plex and Rippling?
The main flow is Rippling into Plex. Employee records, department changes, and accounting dimensions move from Rippling into Plex so that headcount and cost center allocations stay aligned. GL account and cost center reference data is validated in both directions to ensure payroll postings land on valid Plex accounts.
Can the integration use Rippling webhooks or does it have to poll?
It depends on your Rippling integration type. If you use Rippling's App Shop integration, ml-connector can receive webhooks for employee lifecycle events (hired, terminated, department_changed). If you use server-to-server API Key authentication, the integration polls GET /platform/api/employees with updated_at filtering on a schedule you define.
How does the integration handle Plex's lack of webhooks and role-based permissions?
ml-connector polls Plex's REST API on a configurable interval using created_date and modified_date filters, since Plex does not offer webhooks. The integration user must have the correct Plex role assigned, or API calls will return 403 or empty results. ml-connector validates the integration user's role at connection time and logs any permission errors.

Related integrations

Connect Plex and Rippling

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

Get started