Building a 3PL Integration to Pipe17

The goal of this article is to go over how to build an integration into Pipe17 for a Logistic use case.



Key Concepts


An order object is what Pipe17 gets from typically the ecommerce system. It wholes the entire representation of the original order within Pipe17 including all financial data. Logistic connectors does not have access to orders.


Shipments or Shipping Request is how Pipe17 allocates orders to a particular location / logistic partner for fulfillment. This is the main entity that any logistic system should work with. The shipments have multiple status. The main one is “Ready for Fulfillment” or “readyForFulfillment” within the API. This is the status when evaluating if the shipment should be processed. The expectation is once the shipment has been processed by the logistic partner, it should be updated to “Sent To Fulfillment” or “sentToFulfillment”. This tells Pipe17 the shipment has been processed by the logistic partner but not fulfilled yet.


Fulfillment is the object that the logistic partner creates within Pipe17. They are considered immutable within Pipe17. Don’t create fulfillment unless the fulfillment has been finalized. You will not be able to update it later on. It tells us that part or all of the requested line item has been fulfilled, and the tracking number is passed back to Pipe17. Pipe17 will automatically transition the status of Shipment and Order based on the fulfillment coming back to fulfilled or partial fulfillment.


Inventory object is what is used for Pipe17 to route orders and also update the selling channel on availability.


API Key Integration

This is when the logistic partner request the merchant to create an API key within Pipe17.


This reduce the amount of work that Logistic Partner have to do to handle the connectors / integrations logic within Pipe17


Building to this would limit some of the features that Pipe17 provides.

  • Inventory Buff
  • SKU Mapping
  • Product Channel Sync
  • Shipping Method Mapping



You can click on the image below

You can click on the image

Processing Shipment

  1. Create a location within Pipe17 manually that represents your warehouse
  2. If you are planning to use webshooks. Make sure you are listening to shipments webhook.
  3. Create an order within Pipe17, can be ingested from a ecommerce channel or created via API, ensure it has 2 line item
  4. Within the order detail page on Pipe17, manually create a shipment for one of the line item and make sure the location selected was what you created above
  5. Create another shipment that is for the other line item and NOT assigned to the location you created
    Make sure your logic is checking for the following
    • locationId = what you created
    • status = readyForFulfillment
  6. Process the shipment within your system
  7. Update the shipment status to “sentToFulfillment” after you have ingested

Processing Fulfillment

Make sure the fulfillment being sent back to Pipe17 line item matches the shipment uniqueId and SKU. We use this information to ensure proper fulfillment handling.
Make sure that the fulfillment has been finalized. Within Pipe17, fulfillment is considered immutable, so no updates can happen after creation.

Processing Inventory

Pipe17 has the concept of Inventory ledger, all inventory update call should be made by POST to the inventory endpoint.

curl --location '' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-Pipe17-Key: ••••••' \
--data '{
"event": "ingest",
"ptype": "wms",
"sku": "EXAMPLESKU",
"locationId": "Provided by Merchant",
"onHand": "<integer>",
"committed": "<integer>"

Build a Connector

This is when the logistic partner follow the steps to build a fully functioning connector. The good news is there is only a bit more work to get this setup and you would gain access to a whole range of Pipe17 benefits.








Was this article helpful?
0 out of 0 found this helpful



Please sign in to leave a comment.

Have more questions?
Submit a request
Share it, if you like it.