The ShipStation Sales integration connects ShipStation to Pipe17, enabling order, product, fulfillment, location, and inventory data to flow between both systems. It is used for businesses that use ShipStation as their order management and shipping platform and want Pipe17 to serve as the central hub for fulfillment operations.
What this connector does:
- Pulls orders from ShipStation into Pipe17 for routing and fulfillment
- Pushes fulfillment and shipping updates back to ShipStation
- Syncs your ShipStation product catalog with Pipe17
- Maps ShipStation warehouses as Pipe17 fulfillment locations
- Pushes available inventory levels from Pipe17 to ShipStation (new)
What this connector does not do:
- Pull fulfillments from ShipStation into Pipe17
- Create new products in ShipStation (product push supports updates only)
How It Works
All syncs run on a 5-minute polling cycle. The connector checks for new and updated data at each interval and processes changes incrementally using timestamps.
| Direction | What moves | Frequency |
|---|---|---|
| ShipStation → Pipe17 | Orders, products, locations | Every 5 min |
| Pipe17 → ShipStation | Fulfillments, order status updates, product updates, inventory | Every 5 min |
Authentication uses four separate credential sets:
- ShipStation API Key — The primary V1 API key for authenticating with ShipStation. Required for orders, fulfillments, products, and locations. Values are masked (eye-slash icon).
- ShipStation API Secret — The V1 API secret that pairs with the API Key. Both the key and secret are required together for V1 authentication.
- ShipStation API Partner ID — An optional partner identifier. Only needed if ShipStation has provided one as part of a partner arrangement. Can be left blank for standard accounts.
- ShipStation API V2 Key — A separate, newer API key used exclusively for the inventory push feature (V2 API). Not required unless you intend to push inventory levels from Pipe17 to ShipStation. Generated separately in ShipStation from the V1 credentials.
You should check the expiration date of your ShipStation V1 API key or keep a reminder to rotate the key before it expires. Check the ShipStation API documentation and Updating Your Expired API Keys for your reference.
On connection, the connector validates your credentials by fetching your ShipStation tag and warehouse lists. If credentials are invalid, the integration fails immediately.
Connect ShipStation Sales
Step 1: Find your ShipStation API credentials
- Log into ShipStation.
- Click your account name in the upper-right corner and go to Account Settings.
- Click the Account tab, then scroll to API Settings.
- Copy your API Key and API Secret.
If you plan to use inventory push, also generate a V2 API Key from the same API Settings page.
Step 2: Connect in Pipe17
- Go to Integrations and search for ShipStation Sales.
- Enter your API Key and API Secret.
- If using inventory push, enter your ShipStation API V2 Key.
- Click Connect.
Once connected, Pipe17 validates the credentials and pulls your warehouse list. You can then configure which data flows to enable.
ShipStation Sales Settings
Orders
General
| Setting | Default | Description |
|---|---|---|
| Pull orders from ShipStation | Off | Enables order polling. When on, the connector pulls new and updated orders every 5 minutes. |
| Exclude orders created before this date | — | Only pulls orders created after this date. If left empty, uses the integration creation date as the start point. |
| Process only orders with specific order IDs | — | Allowlist of ShipStation order numbers. If set, only these orders are pulled. Leave empty to pull all. |
| Pull orders from specific warehouse(s) | — | Filters orders by ShipStation warehouse name. Only orders assigned to listed warehouses are pulled. Leave empty to pull from all warehouses. |
Order Status Handling
| Setting | Default | Description |
|---|---|---|
| Mark ShipStation order as pending | When sent to fulfillment | Controls when Pipe17 marks the ShipStation order as pending_fulfillment. Options: Disabled / When pulled / When sent to fulfillment. |
| Mark order as On Hold in Pipe17 when on hold in ShipStation | Off | When enabled, ShipStation on_hold orders are pulled and set to onHold in Pipe17. |
| Cancel order in Pipe17 when cancelled in ShipStation | Off | When enabled, ShipStation cancelled orders are synced back to Pipe17 and marked canceled. |
| Cancel order in ShipStation when cancelled in Pipe17 | Off | When enabled, orders canceled in Pipe17 are pushed back to ShipStation and marked cancelled there. Orders already shipped or cancelled in ShipStation cannot be updated. |
Tag-Based Order Ingestion
Use these settings when you want to control which orders are pulled using ShipStation tags rather than order status.
| Setting | Default | Description |
|---|---|---|
| Pull orders only when assigned a specific tag | — | When set, the connector pulls only orders tagged with this tag name or tag ID. Overrides status-based filtering. The tag is removed from the order after it is pulled. |
| After pulling a tagged order, assign this tag | — | Tag name or ID to add to the order after it has been pulled. Use to mark orders as processed. |
When tag-based ingestion is active, only orders in
awaiting_shipmentstatus are considered.
Split Orders
| Setting | Default | Description |
|---|---|---|
| Create split ShipStation orders as separate orders in Pipe17 | Off | When off, split orders are merged in Pipe17 using the order number as the identifier. When on, each split is treated as a separate Pipe17 order. |
Fulfillments
| Setting | Default | Description |
|---|---|---|
| Push fulfillments to ShipStation | Off | Enables pushing Pipe17 fulfillments to ShipStation's mark-as-shipped endpoint. |
| Only mark shipped when fully shipped in Pipe17 | Off | When on, only the final fulfillment (when the order is fully fulfilled) is pushed. Intermediate partial fulfillments are skipped. All tracking numbers are combined and sent together. |
| Allow ShipStation to notify the customer | Off | Passes the notifyCustomer flag to ShipStation when marking an order as shipped. |
| Allow ShipStation to notify the marketplace | Off | Passes the notifySalesChannel flag to ShipStation when marking an order as shipped. |
| Skip carrier code matching | Off | By default, Pipe17 fuzzy-matches your carrier name against ShipStation's registered carriers. Enable this to skip matching and send the carrier code exactly as received. |
Products
| Setting | Default | Description |
|---|---|---|
| Process product catalog | Disabled | Options: Disabled / Pull products from ShipStation to Pipe17 / Push products from Pipe17 to ShipStation. Pull and push are mutually exclusive. |
| Process only products with specific SKU patterns | — | Allowlist filter. Accepts exact SKU strings (case-insensitive) or regex patterns in the format /pattern/. Leave empty to process all SKUs. |
| Do not process products with specific SKU patterns | — | Blocklist filter. Same syntax as the allowlist. Matching SKUs are always skipped, even if they match the allowlist. |
| Create bundle when fulfillment SKU differs from product SKU | Off | When on, if ShipStation's fulfillment SKU is different from the product SKU, Pipe17 creates a bundle product with the fulfillment SKU as the component. |
| Force product catalog resync | Off | Triggers a full product resync. Resets automatically when complete. Use after major catalog changes. |
Inventory (Push only)
| Setting | Default | Description |
|---|---|---|
| Push inventory updates to ShipStation | Off | Enables sending Pipe17 available inventory quantities to ShipStation. Requires the V2 API Key. |
| Inventory location mapping | — | Maps Pipe17 location names to ShipStation warehouse names. Format: Pipe17 Location Name:ShipStation Warehouse Name. Add one entry per location. Unmapped locations are skipped. |
| Report inventory only for specific SKUs | — | Allowlist filter for inventory push. Accepts exact strings or regex patterns. |
| Do not push inventory for specific SKUs | — | Blocklist filter for inventory push. Same syntax as the allowlist. |
| Force inventory resync | Off | Triggers a full inventory resync to ShipStation. Resets automatically when complete. |
Locations
| Setting | Default | Description |
|---|---|---|
| Pull locations from ShipStation | On | Pulls ShipStation warehouses into Pipe17 as fulfillment locations. Each warehouse becomes a separate location. Locations with duplicate names or IDs are skipped. |
Flows
Orders: ShipStation → Pipe17
- Every 5 minutes, the connector polls ShipStation for new and updated orders.
- Orders are filtered by status (
awaiting_shipmentby default), warehouse, order ID allowlist, or tag — depending on your settings. - Matching orders are mapped to Pipe17's order format and created or updated.
- If
Mark as pendingis set to When pulled, the order is immediately markedpending_fulfillmentin ShipStation. - If a tag-based ingest tag is configured, the tag is removed from the order in ShipStation and a processed tag is added (if configured).
Order status mapping:
| ShipStation status | Pipe17 status | Condition |
|---|---|---|
awaiting_shipment |
readyForFulfillment |
Default |
on_hold |
onHold |
Only if On Hold sync is enabled |
cancelled |
canceled |
Only if Cancel sync is enabled |
Orders: Pipe17 → ShipStation
The connector pushes order updates back to ShipStation in two scenarios:
| Trigger | What happens in ShipStation |
|---|---|
Order marked sentToFulfillment in Pipe17 |
Order status set to pending_fulfillment (if When sent mode is on) |
Order marked canceled in Pipe17 |
Order status set to cancelled (if outbound cancel is enabled) |
Orders that are already
shippedorcancelledin ShipStation cannot be updated.
Fulfillments: Pipe17 → ShipStation
- When a Pipe17 fulfillment is created or updated, the connector pushes it to ShipStation's mark-as-shipped endpoint.
- The carrier code is fuzzy-matched against ShipStation's registered carriers (unless carrier matching is disabled).
- The tracking number, ship date, and warehouse are included in the payload.
- If Only mark shipped when fully fulfilled is on, intermediate fulfillments are held and only the final fulfillment is sent, combining all tracking numbers.
Tracking numbers are joined with commas. If the combined length exceeds 50 characters, older tracking numbers are dropped. This is a ShipStation API limit.
Products: ShipStation → Pipe17
- Runs as a full catalog snapshot, not incrementally.
- Scheduled daily at 4 AM UTC (or 4 hours after the previous sync, whichever is later).
- SKU allowlist/blocklist filters are applied during the pull.
- If a product's fulfillment SKU differs from its product SKU and the bundle setting is enabled, a bundle is created in Pipe17 with the fulfillment SKU as its component.
Products: Pipe17 → ShipStation
- Runs every 5 minutes for changed products.
- Updates only — the connector cannot create new products in ShipStation.
- Product must already exist in ShipStation for the update to apply.
- Fields pushed: name, price, cost, weight, dimensions, description, harmonized code, country of origin, active status.
Inventory: Pipe17 → ShipStation
- When available inventory changes in Pipe17 for a tracked SKU–location record, the connector pushes the updated
availablequantity to ShipStation. - The Pipe17 location is resolved to a ShipStation warehouse and inventory location using your location mapping.
- The update is sent to ShipStation's V2 inventory API as an
adjusttransaction. - Records for unmapped locations or filtered SKUs are skipped silently.
See Push Inventory to ShipStation for full setup details.
Cancellations
| Flow | Setting to enable | Behavior |
|---|---|---|
| ShipStation → Pipe17 | Cancel order in Pipe17 when cancelled in ShipStation | Cancelled ShipStation orders are pulled and matched to Pipe17 orders. If the Pipe17 order is in a cancellable status, it is marked canceled. |
| Pipe17 → ShipStation | Cancel order in ShipStation when cancelled in Pipe17 | Pipe17 canceled orders are pushed to ShipStation and set to cancelled. Orders already shipped or cancelled in ShipStation are not changed. |
Manual Actions
You can trigger the following actions on demand from the integration settings:
| Action | What it does |
|---|---|
| Pull orders by order number | Pulls specific ShipStation orders by their order numbers, bypassing the normal polling cycle. |
| Pull orders by date range | Pulls all orders created within a specific date and time window. Triggers a one-time pull of orders within a lookback window. Choose from fixed intervals: 1h, 2h, 4h, 8h, 12h, 24h, or 48h (defaults to 1h if not specified). |
| Pull products by SKU | Pulls specific products by SKU list. Optionally ignores SKU filters. |
Troubleshooting
| Area | Check | What to do |
|---|---|---|
| Orders not appearing in the app | Orders pull is disabled | Enable Pull orders from ShipStation in settings |
| Order has wrong status | Only awaiting_shipment orders are pulled by default. Verify the order status in ShipStation |
|
| Tag-based ingestion is configured | If ordersIngestTag is set, only tagged orders are pulled. Confirm the tag exists on the order |
|
| Warehouse filter is set | If ordersLocations is configured, orders from other warehouses are skipped. Add the warehouse or clear the filter |
|
| Order is outside the date filter | Review the Exclude orders created before date setting | |
| Order updates not syncing to ShipStation | Outbound cancel is disabled | Enable Cancel order in ShipStation when cancelled in the app |
| Order already shipped or cancelled | ShipStation does not allow updates in these states | |
| Mark as pending is disabled | Set Mark ShipStation order as pending to When sent to fulfillment to push updates | |
| Fulfillments not appearing in ShipStation | Fulfillments push is disabled | Enable Push fulfillments to ShipStation |
| Merge mode is on | If Only mark shipped when fully fulfilled is enabled, partial fulfillments are held until complete | |
| Carrier code mismatch | Enable Skip carrier code matching if carrier codes don’t align | |
| Tracking number too long | ShipStation rejects tracking numbers over 50 characters; only recent ones are kept | |
| Products not syncing | Product sync is disabled | Set Process product catalog to Pull or Push |
| SKU filter is too restrictive | Review allowlist and blocklist patterns | |
| Product doesn't exist in ShipStation | Product push cannot create products. Ensure the product exists in ShipStation | |
| Pull hasn't run yet | Product pull runs daily. Use Force product catalog resync to trigger immediately | |
| Inventory not updating in ShipStation | Inventory push is disabled | Enable Push inventory updates to ShipStation |
| V2 API Key not configured | Inventory push requires the ShipStation V2 API Key | |
| Location not mapped | Add mapping in format Pipe17 Location:ShipStation Warehouse
|
|
| SKU is filtered out | Review inventory SKU allowlist and blocklist | |
| Data is stale | Toggle Force inventory resync to push current values | |
| Credentials or connection errors | Invalid API Key or Secret | Regenerate credentials in ShipStation (Account Settings → API Settings) |
| Wrong API version key | Use V1 (key + secret) for orders/products and V2 key for inventory |
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.
- For urgent issues, email us directly at support@pipe17.com.
We're here to help you succeed with your operations.
Comments
0 comments