The Staples connector integrates the app with Staples Supply Chain's warehouse management system (WMS). Staples operates the warehouses and manages client onboarding, while the connector handles the exchange of orders, fulfillments, and inventory between the two systems. All requests to Staples are sent over HTTP, and all data from Staples arrives through webhooks.
Key capabilities:
- Send shipping requests from the app to Staples for fulfillment
- Receive fulfillment updates from Staples, split by carton and tracking number
- Receive inventory updates throughout the day, with a full re-sync nightly
- Send RMAs to Staples and receive returns data (currently in testing)
- Send arrivals to Staples (supported by the connector; not yet live on the Staples side)
- Receive Receipts for Arrivals
- Handle line-level and full rejections of shipping requests
Setup
Before you begin, collect the following from Staples. Staples manages client onboarding and provides these values for each new integration:
- Parent organization ID and child organization ID — unique to each Staples customer. Staples includes these IDs in webhook payloads, and the app uses them in requests to the Staples API.
- Client ID and client secret — OAuth2 credentials the app uses to request an access token from Staples. Both are required.
- Webhook API key — shared between the app and Staples, used to sign webhooks so the app can verify they genuinely come from Staples.
- Scope and grant type — included in the body of the OAuth2 token request the app sends to Staples. These values are the same across all Staples clients.
- Confirmation of which environment to use: Staples provides a QA (sandbox) environment and a production environment.
To set up the connector:
- Navigate to Connectors in the app and add the Staples Supply Chain connector.
- Select the environment: QA or Production.
- Enter the Parent organization ID and Child organization ID provided by Staples.
- Enter the Client ID and Client secret.
- Enter the Webhook API key.
- Confirm the Auth Scope and Auth Grant Type values. These defaults are the same for every Staples client and rarely need to change.
- Save the connection.
- Open Staples Supply Chain Settings and enter the client's locations in Specify locationIds list for this organization, one entry per location, either as the location ID alone or in
locationId:locationNameformat (for example,675:Staples). Staples defines the locations available to each client, so these values are set manually per client. - Click Save.
The parent and child organization IDs are the values that make each client's connection unique. Most other settings, including the API key, are typically shared across Staples clients.
Settings
The Staples Supply Chain Settings page groups settings by flow. Click Save to apply changes, or Restore Defaults to reset the page.
| Setting | Description | Options/Default |
|---|---|---|
| Specify locationIds list for this organization (Locations) | A list of the location IDs the client uses. Enter each entry as a location ID, or in locationId:locationName format to include a display name — for example, 675:Staples, 885:Somename. Staples defines the available locations for each client, so this is configured manually. |
Set per client |
| Process only shipping requests with specific order IDs (Shipping requests) | Add one or more order IDs to process only the shipping requests associated with those orders. Intended for onboarding and testing. | Optional |
| When shipping request is canceled in Staples, apply the following status to Pipe17 (Shipping requests) | When Staples cancels a shipping request, the app changes the shipment status to the option selected here. | Default: Canceled Restock |
| Remember the channel SKUs a shipping request was sent with (Shipping requests) | When on, each shipping request records the channel SKU of every line as it is sent to Staples, and incoming fulfillments are matched against that record before the current product mapping. This keeps fulfillments matching after a Channel Options SKU is changed while orders are still open at Staples. Applies to shipping requests sent after it is turned on. | Disabled by default |
| Combine cartons that share a tracking number into one fulfillment (Fulfillments) | Staples can move many cartons of one shipment on a single freight tracking number. Turn this on to record those cartons as one fulfillment carrying the summed quantity — the per-carton detail is not kept. With it off, each carton is sent on its own, and because a fulfillment is identified by its tracking number, only the first of a shared number is accepted and the rest are rejected as duplicates. | Disabled by default |
| Process inventory information only for products with specific SKU patterns (Inventory) | Restricts inventory processing to matching SKUs. A pure string value is a precise, case-insensitive match; a value wrapped in // is a regexp pattern. Intended for onboarding and testing. |
Optional |
| Force inventory resync (Inventory) | Triggers a complete inventory resynchronization. Staples accepts resync requests only at night, Pacific time. | Disabled by default |
| Pull inventory for all warehouses on receiving webhook (Inventory) | When enabled, the app pulls inventory for all warehouses each time an inventory webhook is received. Use this for Staples routing — where shipping requests are committed against one warehouse but fulfilled from another — to keep committed and on-hand quantities in sync in the app and in downstream channels such as Shopify or Amazon. Disable if routing is Pipe17 side only. | Enabled by default |
| Process product information only for products with specific SKU patterns (Products) | Restricts product processing to matching SKUs. A pure string value is a precise, case-insensitive match; a value wrapped in // is a regexp pattern. Intended for onboarding and testing. |
Optional |
| Allow updating products already existing in Staples product catalog (Products) | When enabled, the app can update products that already exist in the Staples product catalog. | Disabled by default |
| Process only arrivals for specific order IDs (Arrivals) | Add one or more order IDs to process only the arrivals associated with those orders. Especially useful during the testing stage. | Optional |
| Process only returns for specific order IDs (Returns) | Add one or more order IDs to process only the returns associated with those orders. Especially useful during the testing stage. | Optional |
Two further options are configured outside this settings page:
- Custom SKU mapping — some Staples clients use specific SKU patterns. Custom mappings for shipping requests, fulfillments, and inventory can replace or remove a prefix on a SKU. Configured through the connector's mappings, per client.
- Concurrency — Staples can send very large batches of webhooks (10,000 or more) at once. The app saves incoming webhooks to the file system and processes them from there. Enable concurrency for fulfillments in and inventory in through integration variables, the same way as other connectors, to process large batches faster.
Flows
| Flow | Direction | Notes |
|---|---|---|
| Shipping requests | Pipe17 → Staples | Sent over HTTP to the Staples API. Staples can reject individual lines in its response, or reject lines later by webhook; in both cases the app creates a rejected fulfillment. A canceled shipping request changes the shipment status per the connector setting. |
| Fulfillments | Staples → Pipe17 | Staples sends fulfillment webhooks with details split by carton. Each carton typically has its own tracking number, so the app creates one fulfillment per unique tracking number — a single webhook event can produce multiple fulfillments. |
| Inventory | Staples → Pipe17 | Staples sends inventory webhooks throughout the day and performs a full re-sync nightly (warehouses do not operate at night). A forced inventory sync triggers a Staples endpoint that responds by sending a batch of webhooks — it is not a request/response snapshot. |
| Returns | Bidirectional | The app pushes RMAs to Staples and receives returns data back. Currently in testing. Staples provides the return reason at a high level. |
| Arrivals | Pipe17 → Staples | The connector supports sending arrivals, but the flow is not yet live on the Staples side. |
| Products | — | Not currently implemented on the Staples side. |
| Receipts | — | Not currently implemented on the Staples side. |
The connector also supports one integration action: fetching inventory levels for a specific SKU directly from the Staples API. All other data arrives through webhooks.
You can look up a shipping request by ID in the connector's data browser to check the shipment's status in Staples — for example, whether it has been fulfilled. The lookup does not return the tracking number, and it may not work in the sandbox environment.
Troubleshooting
-
A forced inventory sync fails during the day
The Staples API accepts resync requests only at night, Pacific time, and rejects them during the day. To refresh inventory during daytime hours, ask Staples to trigger the inventory send manually. Staples then delivers the current levels as a batch of webhooks. -
A fulfillment webhook arrives hours after the order shipped
Fulfillment status reaches Staples from third parties, so a shipment marked as shipped at 2 p.m. may not produce a webhook until 4 or 5 p.m. The delay occurs in Staples' infrastructure, not in the app. -
One order produced multiple fulfillments
This is expected behavior. Staples splits fulfillment information by carton, and each carton carries its own tracking number, so the app creates one fulfillment per tracking number. If a client's cartons ship under a single freight tracking number and you want them recorded as one fulfillment, enable Combine cartons that share a tracking number into one fulfillment. -
Fulfillments are rejected as duplicates
Multiple cartons arrived under the same tracking number while Combine cartons that share a tracking number into one fulfillment was off. A fulfillment is identified by its tracking number, so only the first carton of a shared number is accepted and the rest are rejected as duplicates. Enable the setting to record the cartons as one fulfillment with the summed quantity. -
A shipment was canceled or restocked unexpectedly
Staples canceled the shipping request. The app changed the shipment status to the option configured in When shipping request is canceled in Staples, apply the following status to Pipe17 (Canceled Restock by default). Check the Staples response or the rejected fulfillment for the reason. -
A large batch of webhooks is processing slowly
Staples can send tens of thousands of webhooks at once. The app stores them on the file system and processes them in order. Enable concurrency for fulfillments in and inventory in through integration variables to process the backlog faster.
Need Help?
If you need additional assistance:
- Use Ask Pippen, our AI agent, located at the top of the app page.
- Submit a support request with as much relevant detail as possible. Learn how to submit a request.
Comments
0 comments