ShipStation integration for Amazon, Shopify and 3PL operations
Updated · By Ecomsellertool editorial team
A custom ShipStation integration connects ShipStation to what it does not run on its own: your warehouse system, Amazon's FBA inbound workflow, client billing and channels it does not connect. ShipStation keeps printing labels and tracking parcels; the integration decides which orders reach it and where tracking and stock go next. We built one into Pacific Prep's 3PL system, alongside Amazon inbound and Shopify orders.
- Pacific Prep's warehouse system, which we built, connects Amazon's inbound shipment flow, Shopify orders synced in real time, ScanPower and ShipStation.
- ShipStation's pricing page lists API access on its Standard and Premium plans, not on Starter (checked September 25, 2026).
- ShipStation API V1 allows 40 requests a minute per API key and secret; V2 allows 200 a minute by default. Both return a 429 error at the limit.
- ShipStation calls V1 legacy and says it will be removed in the future. V2 is in early release and adds batch labels, return labels and manifests.
- For small-parcel FBA boxes shipped on your own carrier, Amazon's Fulfillment Inbound API needs the tracking ID of every box, sent with updateShipmentTrackingDetails.
- We are not in ShipStation's partner program. The integrations we build run on your own ShipStation, Amazon and Shopify accounts and API keys.
What syncs with ShipStation
| What syncs | Direction | What starts it |
|---|---|---|
| Shopify orders | Shopify to the warehouse system | A Shopify order notification, synced in real time and counted as received, processed and fulfilled |
| Shipping labels for non-FBA orders | Warehouse system to ShipStation, label back to the pack station | An order packed and its items scanned |
| FBA inbound shipments | Warehouse system to Amazon (not through ShipStation) | A client's send-in, run through Amazon's inbound shipment flow |
| FBA inventory per seller account | Amazon to the warehouse system | A request for Amazon's FBA manage-inventory report |
| Return orders | Into the warehouse system, per client | A return received at the warehouse |
| Billable activity | Warehouse system to each client's billing records | Each billable transaction or activity, reported with custom reports |
Shipped in: Pacific Prep: 3PL warehouse management system
This page is for 3PLs, FBA prep centers and brands that print labels in ShipStation and need it joined to Amazon, Shopify or their own warehouse system. It covers what a custom integration adds to ShipStation's own connections, the sync map from a 3PL system we built, where ShipStation fits in Amazon's inbound workflow, when the standard connector is enough, and what the API asks of the code. ShipStation, Amazon and Shopify facts link to their own documentation, checked September 25, 2026.
What does a custom ShipStation integration do?
It joins ShipStation to the parts of the operation that ShipStation does not own. ShipStation is good at what it was built for: importing orders from connected stores, comparing carrier rates, printing labels and sending tracking back. ShipStation's order management page says that once labels are created, orders move to Shipped with tracking sent back to your stores (checked September 25, 2026). A custom integration takes over where the operation has rules ShipStation cannot see: stock kept in a warehouse system, Amazon inbound shipments, per-client billing, or a channel with no ready connection.
| Job | ShipStation on its own | What a custom integration adds |
|---|---|---|
| Orders | Imports orders from connected stores and marketplaces | Sends orders from your warehouse system, ERP or a channel ShipStation does not connect |
| Labels and rates | Rate shopping and labels across your carrier accounts | Labels requested from the pack station at the moment of the scan, tagged with the client they belong to |
| Tracking | Writes tracking back to stores it connects | Decides which one system writes tracking to each channel, so nothing is written twice |
| Stock | Inventory tracking by warehouse, synced to marketplaces and carts | Counts from a WMS with bins, license plates and quarantined units, sent from one place only |
| Amazon inbound | Plans, placement and Amazon's labels live in Amazon's tools | Tracking for FBA boxes shipped on your own carrier, matched to Amazon's box IDs |
| Client billing | The postage cost on each label | Every billable event, from receiving and prep to storage, pick and pack and postage, priced per client |
The integration is code that runs on your accounts and calls ShipStation's API, Amazon's Selling Partner API and Shopify's APIs. It does not replace ShipStation. For most teams, the goal is to keep the label workflow packers already know and remove the copying, re-keying and double updates around it: tracking numbers pasted into Send to Amazon, orders typed into a second system, stock counts fixed by hand.
What moves between ShipStation, Amazon, Shopify and the warehouse system?
Our evidence is Pacific Prep, a full-service prep and ship company in Oregon. We built its warehouse management system, which integrates Amazon, Shopify, ScanPower and ShipStation. It runs Amazon's inbound shipment flow for FBA orders and handles non-FBA shipments with packing, item scanning and label printing. It also covers receiving, bin locations and license plates, returns and billing. The map below lists each lane of that build, what the case study records about it, and how that lane runs on today's APIs.
The Pacific Prep sync map
| Lane | Direction and trigger | What the case study records | Where it runs on today's APIs | What breaks first |
|---|---|---|---|---|
| Shopify orders | Shopify to the WMS, on each order notification | Real-time synchronization of Shopify orders; notifications counted as received, processed and fulfilled | Shopify order webhooks, plus a scheduled pull that catches missed ones | A webhook that never arrives, or arrives out of order |
| Non-FBA labels | WMS to ShipStation when an order is packed and scanned; label and tracking number back to the pack station | Packing, item scanning and label printing for non-FBA shipments; ShipStation is one of the platforms the system integrates | V1: create or update the order by its order key, then create a label; V2: shipments, labels and batches | A retry that creates a second order instead of updating the first |
| FBA inbound | WMS to Amazon, when a client's send-in is ready | Amazon's full inbound shipment flow, with packing, scanning and label printing | Amazon's Fulfillment Inbound API: inbound plan, packing, placement, transport and labels | Not a ShipStation flow, unless the boxes go on your own carrier (next section) |
| FBA stock | Amazon to the WMS, on a report request | Inventory linked to each seller account, from Amazon's FBA manage-inventory report | The SP-API Reports API | A report snapshot treated as a live count |
| Warehouse stock | Kept in the WMS; changes on every receive, move and pick | Total, available, reserved and quarantined units; license plates tied to bin locations | ShipStation's V2 inventory endpoints, if ShipStation must see the counts | Two systems pushing stock to the same store |
| Returns | Into the WMS, per client, when a return arrives | Return order processing | ShipStation V2 return labels, where the warehouse issues the label | A returned unit counted as sellable before anyone checks it |
| Client billing | WMS to each client's billing records, on every billable event | A billing module with transaction records and custom reports | Not a ShipStation flow; postage is read from each label | Postage billed to the wrong client when clients share one account |
The case study names the flows the system runs, not the API calls behind them, so the direction and trigger in each row are our description of how that flow runs, not a quote from the case study. The fourth column maps each lane onto the APIs as they stand today, from ShipStation's, Amazon's and Shopify's documentation, and the last column is the failure we design against first. Shopify's guide About webhooks says an app can miss webhook events, that events can arrive out of order, and that apps should run reconciliation jobs that fetch data periodically (checked September 25, 2026). That is why every event-driven lane in the map also has a catch-up pull.
Prep-centre stock per client and SKU: total, reserved, available, quarantined
Read the Pacific Prep case study ↗The screen above is the Pacific Prep inventory table: stock per client and SKU, split into total, reserved, available and quarantined units. Those counts, plus the license plate each unit sits on, hold more than ShipStation's inventory model, which tracks on hand, allocated and available units (see the API section below). In a build like this, the WMS is the one place that knows what can really ship, so it should be the one system that sends stock to the stores, and ShipStation should read stock rather than own it.
How do orders, labels and tracking flow between ShipStation and your channels?
The first decision in any ShipStation build is who owns the channel connection. If two systems both import a Shopify order, it can be picked and shipped twice. If both write tracking back, the customer can get two shipping emails, or the channel keeps whichever update arrived last. There are two sound patterns, and a build should pick one per channel and write it down.
| Pattern | Orders enter through | Tracking written back by | Fits when |
|---|---|---|---|
| ShipStation owns the channel | ShipStation's own store connection | ShipStation, when the label is created | A brand ships its own orders and the warehouse system only needs to know what shipped |
| The warehouse system owns the channel | A direct connection from the WMS, as in Pacific Prep's Shopify sync | The WMS, after ShipStation returns the label and tracking number | A 3PL with many clients, a channel ShipStation does not connect, or routing rules that live in the WMS |
In the first pattern, the integration listens. ShipStation's webhook subscription covers ORDER_NOTIFY, ITEM_ORDER_NOTIFY, SHIP_NOTIFY, ITEM_SHIP_NOTIFY, FULFILLMENT_SHIPPED and FULFILLMENT_REJECTED events, and can be limited to one store. The webhook payload carries only a resource URL and the event type; the integration then fetches that URL with its API credentials to get the orders or shipments (both checked September 25, 2026). ShipStation's Shopify connection says it imports Shopify orders with physical products and that tracking can flow back when you create a label (checked September 25, 2026).
In the second pattern, the integration drives. ShipStation's Create/Update Order call updates the order with a matching order key or creates a new one, and only open orders (awaiting payment, awaiting shipment or on hold) can be updated; shipped and canceled orders cannot (checked September 25, 2026). The integration should derive the order key from the channel order ID, so a retry after a timeout updates the same order instead of creating a duplicate.
Create Label for Order returns the label as a base64-encoded PDF, and the pack station prints it straight away. If a parcel ships outside ShipStation, Mark an Order as Shipped records it without a label; it notifies neither the customer nor the sales channel unless the request asks it to (checked September 25, 2026). Which node and carrier each order should use is a separate question: our guide to multi-marketplace order routing covers routing by stock, cost and each channel's ship-by date, including when an order should go to Amazon Multi-Channel Fulfillment instead of a 3PL.
How does it work with Amazon inbound and FBA?
Amazon inbound runs on Amazon's systems, not ShipStation's. The Fulfillment Inbound API (version 2024-03-20) creates inbound plans, sets packing information and generates placement and transportation options; the v0 getLabels operation, which Amazon has not deprecated, prints the box labels. API plans open in Send to Amazon once placement and transportation are confirmed. The same page says the seller must prep and label all products before sending them to Amazon's US network, and it lists the Amazon Fulfillment role for these operations (checked September 25, 2026). In the Pacific Prep build, this flow runs inside the warehouse system against Amazon's APIs; our Amazon SP-API development page covers the inbound, label and tracking work we build on them.
ShipStation enters the inbound picture in one case: small-parcel boxes shipped to Amazon on your own carrier account. Amazon's guide to shipping with a non-partnered carrier says Amazon-partnered carrier shipments are available only in the contiguous United States. With your own carrier, you pick the transportation option whose shipping mode is ground small parcel and whose shipping solution is "use your own carrier". You then confirm a delivery window for each shipment, 7 days for domestic shipments, and print Amazon's labels for each shipment (checked September 25, 2026). The carrier label on each box can come from ShipStation.
The last step is the one that gets missed. Amazon's updateShipmentTrackingDetails operation takes the tracking ID for each box, matched to the box ID from Amazon's list of inbound plan boxes, and the non-partnered carrier guide says tracking IDs must be updated for all of the boxes (checked September 25, 2026). Done by hand, that means copying one tracking number per box from ShipStation into Send to Amazon, client by client. An integration reads them from the labels and sends them to Amazon in one call per shipment.
Checklist: FBA boxes on your own carrier through ShipStation
- Every unit prepped and labeled before packing, as Amazon requires for its US network, with prep and label owners set on each plan item
- The transportation option with ground small parcel as the shipping mode and "use your own carrier" as the shipping solution
- A 7-day delivery window confirmed for each domestic shipment, with the ShipStation ship date set so the boxes arrive inside it
- Amazon's labels printed for each shipment, and one carrier label per box bought in ShipStation
- Each ShipStation tracking number stored against Amazon's box ID at the packing station, not afterwards
- Tracking IDs for every box sent to Amazon, then the shipment checked in Send to Amazon
Once the boxes arrive, the count Amazon receives has to be matched to what left your dock. When the warehouse system keeps each box's ShipStation tracking number, Amazon box ID and carton contents together, a shortfall can be traced to a single box instead of a whole shipment. That reconciliation is its own job with its own deadlines, and our page on 3PL and FBA inventory reconciliation explains how brands run it.
When is the standard ShipStation connector enough?
More often than you might expect. ShipStation's inventory management page says its tracking syncs stock levels across marketplaces and carts, and its order management page lists rules that send orders to specific warehouses, tag them, choose carriers and services, or hold them for review. Check your plan first: ShipStation's pricing page lists Inventory Sync and unlimited automation rule types on Standard and Premium, not on Starter (all checked September 25, 2026). If your operation fits those tools, switch them on and skip the build. The table below is the test we use in scoping.
| If this is true | Start with | Why |
|---|---|---|
| You ship your own orders from one or two warehouses, and ShipStation connects every channel you sell on | ShipStation's standard store connections | Orders import and tracking goes back without code |
| Your routing fits warehouse, tag, carrier and hold rules | ShipStation's automation rules | Those are the rule types ShipStation lists |
| Purchasing and stock are the gap, and labels already work in ShipStation | An inventory system with a ShipStation connector | The connector already moves orders, statuses and tracking between the two |
| You run a multi-client warehouse on a single ShipStation account | ShipStation's 3PL manager add-on, or a 3PL WMS | Check whether your billing rules fit before you build |
| Stock sits in a WMS with bins, license plates or quarantined units, you ship FBA inbound on your own carrier, or a client channel has no connection | A custom integration | The rules live outside ShipStation, so code has to join them to it |
Two inventory systems with ready ShipStation connectors show what "buy first" looks like. Cin7's ShipStation integration says orders from any sales channel are automatically pushed to ShipStation, and tracking flows back into Cin7. Finale Inventory's ShipStation page says Finale verifies inventory levels when orders sync from ShipStation, identifies which shipments can be sent and updates their status in ShipStation (both checked September 25, 2026). For a brand whose gap is purchasing and stock, either is likely the better choice over a custom build.
For multi-client warehouses, ShipStation's pricing page lists a 3PL manager as an add-on with its own fee (checked September 25, 2026). Ask ShipStation how it handles your rate card before you commission anything. If you are comparing full 3PL and prep-center platforms, our page for 3PLs and prep centers sets PrepBusiness, Extensiv and Packiyo against a custom build.
What does a ShipStation API integration have to handle?
Two APIs, two sets of limits and two webhook systems. ShipStation's API overview lists V2 as available with the Standard and Premium plans and says the original V1 is still supported and maintained for existing integrations. Its authentication page calls V1 legacy and says it will be removed in the future. The V2 getting-started guide says V2 is in an early release stage and that some familiar V1 features are not in V2 yet (all checked September 25, 2026).
| ShipStation API V1 (legacy) | ShipStation API V2 | |
|---|---|---|
| Base URL | ssapi.shipstation.com | api.shipstation.com/v2 |
| Authentication | Basic authentication with an API key and secret | An API-Key header |
| Rate limit | 40 requests a minute per key and secret | 200 requests a minute by default |
| Keys per account | Two sets of V1 credentials active at a time | One V2 key active at a time |
| Webhooks | Order and shipment events; the payload is a link to fetch | Batch, tracking, shipment, label and fulfillment events, created only through the API |
| Used for | Order create and update, mark as shipped, labels for orders | Shipments, labels, batch labels, return labels, manifests, pickups and inventory |
The limits come from ShipStation's V1 requirements page and its V2 usage and rate limits page: both return 429 Too Many Requests at the limit, V1 with rate-limit headers and V2 with a Retry-After header (checked September 25, 2026). The V1 limit shapes the design. If each order takes three calls on V1, an update, a label and a webhook fetch, one key pair tops out at 2,400 requests an hour, or about 800 orders. V2's higher limit and its bulk endpoints, which ShipStation points to for creating hundreds of labels at once, move that ceiling.
Webhooks differ too. A V1 webhook carries only a resource URL and the event type, so every event costs at least one more call. ShipStation's V2 webhooks overview lists events for processed batches, tracking updates, shipments and labels created, and fulfillments shipped or rejected, with richer payloads. V2 events can be created only through the API, not in the ShipStation app, and each webhook needs a unique combination of URL, event and store (checked September 25, 2026). A build that moves to V2 should register its webhooks from code, so a new environment gets the same set.
Three more build notes. ShipStation's V2 guide says label documents are stored for a finite period, so the integration saves each label PDF on your side. The V2 shipment endpoints need create_sales_order: true for a shipment to appear on the Orders tab, and ShipStation advises building against a duplicate store connection so production is not disturbed. With one V2 key per account, rotating it means a short, planned swap, so we keep the key in one secret store rather than in several services.
The V2 inventory endpoint reports on hand, allocated and available units per SKU, warehouse and location, where available is on hand minus allocated (checked September 25, 2026). That is the field list to check before you let ShipStation show your stock. A WMS that also holds reserved, quarantined or license-plated units has to decide which of its counts maps to on hand, or ShipStation will show stock that cannot ship.
Who builds custom ShipStation integrations?
Ecomsellertool is a tech agency that builds integrations and operations software on brands' and 3PLs' own accounts. We built Pacific Prep's warehouse system, connected to Amazon inbound, Shopify and ShipStation, and prep systems for Little Owl and EzBookPrep. For a ShipStation integration, we map every lane and choose who owns each channel before writing code. We have built on Amazon's seller APIs since 2017 and shipped 50+ tools.
For brands, the order side is part of Ecomsellertool Growth OS: orders from every channel in one queue, routed to the right warehouse, 3PL or Amazon MCF, with carrier selection across 13+ carriers. If your team already prints labels in ShipStation, we connect it rather than replace it. We are not in ShipStation's partner program. What we build runs on your ShipStation, Amazon and Shopify accounts with your API keys, which your admins can revoke at any time.
You keep your accounts, your data and the custom code we build; the Growth OS base is licensed to you. If you stop working with us, your accounts, data and custom code stay with you; the Growth OS base continues under its license terms. Custom modules and AI agents are scoped in an architecture doc with a fixed price and go-live date, which you approve before work starts.
The other connections we have shipped are on the integrations hub, including the Walmart Marketplace API. To walk through your lanes with the engineers who would build them, schedule a call from the card below. If you are a brand selling on Amazon, the free 24-hour diagnostic connects through Login with Amazon, with no password shared, and reports within 24 hours of connecting, on business days. We only read data; we never change listings, prices, stock or ads.
Frequently asked questions
Do we need ShipStation for FBA inbound shipments?
No. Inbound plans, packing, placement and Amazon's box labels run through Send to Amazon or Amazon's Fulfillment Inbound API. ShipStation has a role only when you ship small-parcel boxes on your own carrier account and buy those carrier labels in ShipStation. Its labels then supply the tracking IDs Amazon needs for every box in the shipment.
Which ShipStation plan do we need for an API integration?
ShipStation's pricing page lists API access on the Standard and Premium plans and not on Starter, as of September 25, 2026. ShipStation's developer docs also tell platform customers to check the API Settings page in their account to see whether their plan supports API access.
Should a new integration use ShipStation API V1 or V2?
Use V2 for new label, rate, batch, return-label and inventory work: it has the higher rate limit and the newer endpoints. ShipStation says some V1 features are not in V2 yet, so check each endpoint you rely on. Keep any V1 calls in one module, because ShipStation says V1 will be removed in the future.
Should our 3PL use one ShipStation account or one per client?
Both work. With one account the 3PL controls carrier accounts and postage, and the integration must tag every order and label with its client so postage is billed correctly. With one account per client, the client keeps its own store connections and carrier rates, and the integration holds one API key per account. We settle this in scoping, before any code.
How do you test a ShipStation integration without buying real labels?
ShipStation's V1 label calls take a test-label flag, but only for USPS labels. Sandbox keys starting with TEST_ are for ShipStation API customers, formerly ShipEngine, not for ShipStation platform accounts. For the V2 shipment endpoints, ShipStation advises building against a duplicate store connection so production orders are not disturbed, and it recommends a mock in automated tests, because tests that call the API can hit the rate limit. We also void any label created during testing.
What happens to the integration if we stop working with you?
It runs on your ShipStation, Amazon and Shopify accounts with your API keys, so the connections and the data are already on your side, and your admins can revoke the keys we use. You keep your accounts, your data and the custom code we build; the Growth OS base is licensed to you. After an engagement ends, your accounts, data and custom code stay with you; the Growth OS base continues under its license terms.
