ml-connector
PlexShipStation

Plex and ShipStation integration

Plex runs manufacturing and finance for discrete manufacturers. ShipStation coordinates order fulfillment and shipping across multiple sales channels. Connecting them keeps your warehouse and your sales orders in sync. Sales orders from Plex are available in ShipStation so fulfillment teams see what to ship, inventory levels in Plex update when ShipStation processes orders, and shipment tracking flows back into Plex so production knows which orders shipped and when. ml-connector handles the different APIs and bridges the two platforms on a schedule you control.

How Plex works

Plex Adaptive ERP exposes sales orders, inventory, customers, parts, and GL accounts through REST JSON APIs and legacy SOAP Web Services. The cloud product authenticates with OAuth2 client credentials against a shared cloud.plex.com endpoint, routing to the customer's tenant via the company code (PCN) or through customer-specific URLs. Plex has no native webhooks, so orders and inventory are read by polling on a configurable interval, filtering by modified_date or created_date. The legacy SOAP DataSources APIs support bulk historical loads via scheduled extracts. Role-based permissions are enforced, so the integration user must have the correct Plex roles assigned.

How ShipStation works

ShipStation aggregates orders from multiple e-commerce channels and provides order management, carrier selection, and label generation through REST APIs. It supports both V1 (order CRUD, customer, product, warehouse management) and V2 (label creation, batch operations, inventory, purchase orders). Authentication is header-based API Key (V2) or HTTP Basic auth with base64-encoded apiKey:apiSecret (V1), with no OAuth flows. ShipStation sends webhooks for order and shipment events, but webhook payloads contain only resource pointers (resource_url and resource_type), so actual data requires an authenticated follow-up GET request. Order updates are not webhook-triggered, so polling is necessary to detect all changes.

What moves between them

Sales orders flow from Plex into ShipStation on a poll interval, mapped to ShipStation purchase orders or order records so the fulfillment team sees what inventory to reserve. Inventory levels in Plex update when ShipStation processes orders, reducing on-hand counts. When ShipStation generates a shipment, ml-connector polls ShipStation for shipment details and writes them back into Plex as fulfillment records or shipment notes so manufacturing can track what was shipped. The flow is primarily pull-based; ml-connector initiates both the Plex poll and the ShipStation lookups triggered by webhook notifications.

How ml-connector handles it

ml-connector stores Plex OAuth2 credentials and ShipStation API keys encrypted. For Plex, it obtains a bearer token from the OAuth2 endpoint and includes it in every API call. For ShipStation, it sends the API key in the V2 header or base64-encodes the key:secret pair for V1 Basic auth. Since ShipStation's webhooks deliver only resource pointers, ml-connector parses the resource_url and immediately fetches the actual order or shipment data in an authenticated request. All ShipStation datetime fields arrive in PST/PDT, so ml-connector converts them to UTC before writing to Plex. ml-connector polls Plex on a schedule (e.g., every 10 minutes) to catch sales order changes and inventory movements, and it respects ShipStation's rate limits (200 req/min for V2, 40 req/min for V1) by backing off on 429 responses. Because Plex enforces role-based permissions, the integration user must have read access to Sales_Order and Inventory entities in Plex. ShipStation order status is immutable once an order ships or cancels, so ml-connector treats those records as read-only and never attempts updates. Every record carries a unique reference and audit trail so duplicates can be detected and replayed if a call fails.

A real-world example

A mid-sized discrete manufacturer in automotive supplies uses Plex for production, inventory, and order management, and ShipStation to coordinate fulfillment across three fulfillment centers and multiple e-commerce marketplaces. Before the integration, the fulfillment team logged into both systems separately, manually checking Plex sales orders to see what inventory to pick, and then updating Plex shipment notes by hand after ShipStation generated labels. With Plex and ShipStation connected, sales orders from Plex appear automatically in ShipStation, fulfillment staff see correct on-hand inventory levels from Plex in real time, and when ShipStation ships an order, the shipment tracking flows back into Plex automatically so production and sales both know the delivery status without re-entry.

What you can do

  • Push Plex sales orders and current inventory levels into ShipStation on a configurable poll interval so fulfillment teams see accurate stock and order details.
  • Reduce Plex inventory automatically when ShipStation fulfills orders so on-hand counts stay in sync across both systems.
  • Retrieve ShipStation shipment and tracking details via authenticated follow-up requests and write them into Plex as shipment records.
  • Authenticate Plex with OAuth2 credentials and ShipStation with API keys, with encrypted credential storage and rate-limit backoff.
  • Convert ShipStation timestamps from PST/PDT to UTC and detect duplicates using unique order references to ensure data consistency.

Questions

How does the integration handle ShipStation's webhook pointer pattern?
ShipStation webhooks deliver only a resource_url pointer and resource_type, not the full order or shipment data. ml-connector parses the resource_url immediately upon receiving a webhook and makes an authenticated GET request to fetch the actual record. This ensures the data is current and complete before writing to Plex.
Which direction does data move between Plex and ShipStation?
Sales orders and inventory flow from Plex into ShipStation so fulfillment teams see what to pick and ship. Shipment and tracking details flow from ShipStation back into Plex so manufacturing can see fulfillment status. Inventory levels in Plex are reduced when ShipStation processes orders.
Why does the integration poll Plex if ShipStation sends webhooks?
ShipStation webhooks cover new orders and shipment events, but order edits (like quantity or address changes) do not trigger a webhook, so polling Plex detects all sales order changes. ml-connector also polls Plex on a schedule to capture inventory movements and ensure no changes are missed between webhook notifications.

Related integrations

Connect Plex and ShipStation

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

Get started