3PL TechFlow

For Shopify merchants and app reviewers

ShipFlow for Shopify

ShipFlow is a warehouse management system operated by third-party logistics warehouses. The Shopify app connects a merchant's store to the warehouse that ships for them: fulfillment requests become warehouse orders, and shipments with tracking and stock levels go back to the store.

What the app does

  1. The merchant installs the app from their warehouse's ShipFlow portal using Shopify OAuth. The app requests an expiring offline access token and stores it encrypted; the token is refreshed before it expires and never leaves the warehouse's server.
  2. On install, ShipFlow registers itself as a fulfillment service in the store, which creates a location representing the warehouse, and subscribes to the webhooks listed below.
  3. When the merchant requests fulfillment of an order assigned to the warehouse location, ShipFlow accepts the request and creates a warehouse order. Line items are matched to warehouse items by SKU or barcode; anything that cannot be matched is held for the warehouse team, never guessed.
  4. Edits to the order are applied while nothing has been picked. Cancellation requests are accepted until picking starts, and rejected with a reason afterwards.
  5. When the warehouse ships, ShipFlow creates the fulfillment through the fulfillment order, with tracking number, carrier and the exact lines and quantities shipped. Partial shipments create partial fulfillments.
  6. Available stock at the warehouse location is pushed to Shopify when it changes. Inventory is never read from Shopify into the warehouse.

Access scopes and why each is needed

ScopeWhy the app needs it
read_ordersRead the order behind a fulfillment request: order name, email, phone, note, shipping method and line items (SKU, title, price). Fulfillment-order line items carry no SKU or title, so the order is the only place to read them.
write_fulfillmentsCreate the fulfillment when the warehouse ships, with tracking number, carrier and the exact fulfillment-order lines and quantities shipped (partial fulfillments included).
read_productsPull products and variants to link each variant to a warehouse item by SKU or barcode, and to keep the variant and inventory item ids used for stock updates.
write_inventorySet the available quantity at the warehouse location when stock changes in the warehouse. Inventory flows from the warehouse to Shopify only.
read_locationsFind the location created for the warehouse's fulfillment service and route stock updates and fulfillment orders to it.
write_merchant_managed_fulfillment_ordersRegister the warehouse as a fulfillment service (which creates its location) and receive fulfillment orders assigned to it.
read_assigned_fulfillment_ordersList fulfillment orders assigned to the warehouse location, including pending fulfillment and cancellation requests. This is the safety-net poll for a missed webhook.
write_assigned_fulfillment_ordersAccept or reject fulfillment requests and cancellation requests on fulfillment orders assigned to the warehouse. Shopify only lets the service that accepted a request create its fulfillment.

The app requests no scope it does not use. It does not read customers, discounts, price rules, payments, themes, content or analytics.

Data handled

Uninstall and compliance webhooks

The app subscribes to app/uninstalled. On uninstall the connection is disabled at once: no further orders are pulled and nothing is sent to the store. Existing warehouse orders are kept so the warehouse can finish or reconcile them.

The three mandatory compliance webhooks are served at these endpoints, verified with the app secret over the raw body (an invalid HMAC is answered with 401), acknowledged with 200 and processed by a background job:

TopicEndpointWhat ShipFlow does
customers/data_requesthttps://api.3pltechflow.com/api/integrations/shopify/compliance/customers-data-requestLogs the request and lists the warehouse orders for that customer so the warehouse can provide them to the merchant. No customer data is held beyond those orders.
customers/redacthttps://api.3pltechflow.com/api/integrations/shopify/compliance/customers-redactAnonymises the customer's name, address lines, phone, email and notes on the listed orders and strips the ship-to from the intake records, within the 30-day window. City, state, postal code and country remain for freight reporting.
shop/redacthttps://api.3pltechflow.com/api/integrations/shopify/compliance/shop-redactAnonymises every order that came from the store, removes item links and unmatched-item records for the connection, and deletes the stored access token.

Each request and what was done is recorded and visible to the warehouse and, for their own store, to the merchant in the portal.

Support

Merchants are supported by their warehouse first; the warehouse is supported by 3PL TechFlow at support@3pltechflow.com. See also the privacy policy, the terms of service and the security overview.