The order lands on a Tuesday morning: paid in full, confirmation sent, another green row in a busy week. You never think about it again, because there is nothing to think about. The store took the money, the warehouse ships what the store sends it, and the pipe between them has worked ten thousand times.
Nine days later the customer emails, polite but puzzled, asking where her order is. You open ShipStation to check the label and there is no label, because there is no order. Not delayed, not stuck in a status, not flagged. Absent. Shopify shows a paid order aging quietly in the open list; ShipStation has never heard of it. Somewhere between the two systems is a gap with no error message, no email, and no dashboard, and your order spent nine days at the bottom of it until a customer went looking for you.
A failure with no error message
Most fulfillment problems announce themselves. A label fails to print, a carrier scan goes quiet, a package stops moving, and somewhere a status turns red. The sync gap is different in kind: both dashboards report that everything is fine, because each one is telling its own local truth. Shopify shows a healthy paid order. ShipStation shows a clean import feed. The failure lives in the space between them, and no system reports on a space.
That is what makes this one expensive out of proportion to its frequency. A missing order does not cost you a shipping fee; it costs you the nine silent days, the where is my order ticket that arrives angry, the refund or the overnight shipping you throw at the apology, and sometimes the chargeback from the customer who stopped waiting. All of it for an order you would have shipped happily on day one, if anything had told you it existed.
The community record
The definitive document is a thread opened in March 2024, by a merchant who had started diffing Shopify against ShipStation by hand because orders kept vanishing between them: about one a week that we know about, he wrote, and the parenthesis is the whole story, because you only ever count the ones you catch. He mapped the failure chain precisely. The customer pays. A new tax amount is applied at checkout. The authorization is voided. Shopify emails the customer a payment failure notice, then resends the invoice; the invoice gets paid. And the order, paid and real and owed to a customer, never exports. A week later he updated the count to at least half a dozen orders a week, always tied to Shop Pay. ShipStation, to their credit, checked their side and confirmed the interesting part: no import event ever arrived. The order did not fail to import. It was never offered.
Then comes the part every merchant who has touched this problem can recite. Shopify staff replied: have you been in contact with ShipStation? He had; the failure was on the Shopify end of the pipe. Second staff reply: please contact our support team. Two months later new merchants were arriving in the thread with the same signature, very randomly, one wrote, and ShipStation says it's not their problem. Another: just caught the first one, and will now have to go back and review orders to see if there are others. The final staff word, in May 2024, closed the loop without closing anything: ShipStation is fully in control of their app integration and how orders sync with their services. Each vendor is correct about its own half of the seam, and the seam stays unowned.
The genre is older than that thread and bigger than ShipStation. In February 2021 a merchant posted that Printful never received two orders his customers had already been charged for; the orders went through on Shopify's side, the customers got confirmations, and the print shop got nothing. The official advice was the quiet part said out loud: refund the customers, cancel the orders, and move on. In March 2022 another merchant reported orders simply not flowing into ShipStation with everything on both sides connected correctly; the thread collected a me-too in June 2023 and was still drawing replies in May 2025. A sibling thread on connection trouble sits at 8 replies and 677 views, also active May 2025. And in October 2025 a merchant posted his own workaround to a thread that drew zero replies, having discovered that orders marked as fulfilled in Shopify are silently blocked from importing; he had to publish a YouTube video to document a failure mode no official source describes.
Why the seam leaks
The individual causes are mundane, which is part of why the problem hides so well. An authorization voided and repaid leaves the order in a payment state the export never picks up, first cousin to the payment that expires before you capture it. An order already marked fulfilled in Shopify is skipped by design, the October 2025 merchant's whole mystery. Manual and draft orders do not always flow the way online store orders do. A hold, an archived order, a payment still pending, a ShipStation-side filter or tag rule, a second store connection claiming the import, or an order landing in a status nobody checks: each is a door the order can quietly not walk through.
What they share is the shape. Every one of these failures is invisible from inside either system, because neither system is wrong about itself. The order that never exported looks exactly like every other open order in the Shopify queue, and ShipStation cannot alert you about an order it never received; there is nothing on their side to alert about. The only vantage point that can see the failure is the one that looks at both lists at once. Which today is you, with two browser tabs and an export.
The diff is the right idea in the wrong tool
Notice what the March 2024 merchant actually built, in between support tickets: a catch. He pulled the orders from Shopify, pulled the orders from ShipStation, and compared. That is the correct instinct, and it is the whole design, and his own verdict on it stands: doing it by hand is a nightmare in busy seasons where we'll have thousands of orders per day. A manual diff is a Tuesday chore that stops happening the first week two people are out sick, which is also the week of the sale, which is when the missing orders are worth the most.
The machine version is reconciliation on a clock, and the interesting work is in the judgment, not the comparison. Because the naive rule, alert on every Shopify order not yet in ShipStation, drowns you in false alarms: the feed pulls on an interval, and a normal order is briefly missing from the queue dozens of times a day. The automation has to know your store's normal lag, the way a good ops person does, and flag the order that misses its window, not the one that is thirty seconds young. And it has to read the exceptions like a human would: an order held on purpose is not missing, it is waiting; an order parked for a bad address is a different queue; an order cancelled an hour after it was placed was never owed to the warehouse at all. Sorting missing from waiting from dead is exactly the reading task, the same shape as every judgment call in the automations no one builds.
What the automation actually has to do
As a Dugong playbook, in plain prose:
# trigger
On every new paid order,
and on a clock for the queue
# steps
1. Baseline the lag: how long a
normal order takes to appear
in the fulfillment queue
2. Reconcile on a clock: every paid
open order has a matching row,
all statuses checked
3. Read the seam: voided auths,
repaid invoices, holds, manual
orders, the skip signatures
4. Chase the gap: alert with the
order, its age, and the
probable cause attached
5. Watch the way back: tracking
that never lands in Shopify
gets the same treatment
6. Digest every morning: what
synced, what lagged, what
needed a hand
7. Report weekly: gaps caught,
causes named, the pipe's
honest error rate
Step two is the heart, and the phrase all statuses checked is earned: the community troubleshooting for this problem starts with the discovery that an order can import and still be invisible, filed under a status or a store nobody looks at. So the reconciler checks presence anywhere before it cries missing, and a manual refresh counts as the first chase, because sometimes the feed is merely late and the fix is a nudge.
Step three is what turns an alert into a diagnosis. The March 2024 thread proved these failures have signatures: a voided authorization followed by a repaid invoice was the fingerprint of every missing order in that thread. When the flag arrives with the fingerprint attached, the fix is a two minute manual push instead of a twenty minute investigation, and the weekly report can say something no dashboard says today: this is the door the orders leak through, this is how often, this is the pattern to send to support with the ticket.
Step five closes the loop most merchants forget. The pipe leaks in both directions: an order can ship perfectly and the tracking number never make it back onto the Shopify order, which leaves Shopify emailing nobody and the customer refreshing an order page that says unfulfilled forever. Same seam, same watch: fulfillment created on one side must land on the other inside its normal lag, or someone hears about it. And because a missing order that is found late is still a late order, the chase hands off to the workflow that already knows what to tell a customer when a promise slips.
The honest limit, stated plainly: none of this fixes the export pipeline itself. If Shopify never emits the event, the bug belongs to Shopify and ShipStation, and only they can patch it; on the record so far, each is still pointing at the other. What the automation changes is the discovery time. Every documented case of this failure was discovered by a customer, days late, one complaint at a time. A reconciled queue discovers it the hour it happens, with the evidence already gathered, which converts a reputation problem into a chore.
Why this is a compiler problem, not an app problem
There are connector apps that promise a better pipe, and the threads recommend a few. A sturdier pipe is worth having and changes nothing about the argument, because any pipe can drop an order, and a second pipe is a second seam. What you want is not a promise that the pipe never leaks; it is a watcher that notices the leak, and the definition of noticing is specific to your store. How long is normal lag for you, at noon and at midnight during a drop? Which orders is your second warehouse supposed to see, and which belong to the 3PL? Does a net terms order count as missing when your fulfillment tool refuses unpaid orders by design? Who gets paged, and after how many minutes, and does the answer change in November? Those are sentences about your operation. They should compile into the workflow as written, instead of being shaved down to whatever a settings page happens to expose.
Run the Tuesday order again with the sentences compiled. The order lands at 9:14, paid. At 9:44 it has no row in ShipStation, which is outside your store's twenty minute norm, and the reconciler checks all statuses, runs a refresh, and looks at the payment timeline: authorization voided, invoice repaid. Known fingerprint. The alert lands in Slack at 9:52 with the order number, the age, and the cause; whoever is on queue duty pushes it across by hand before the morning pick, and the incident closes at nine minutes old instead of nine days. The customer never learns any of this happened, which is the entire point.
The workflow worth building this week
Start with one diff, today, because the backlog is where the surprises live. Export open, paid, unfulfilled orders from Shopify for the last sixty days; export everything from ShipStation or your 3PL across all statuses; compare order numbers. On most stores the list of gaps is zero and you have bought yourself a calm morning. If it is not zero, you have found orders that are owed to customers right now, and each one is worth a personal email before it becomes a ticket.
Then put the reconciler on a clock in observe mode for a week: let it learn your normal lag, watch what it flags, and tune the grace window until the false alarms go quiet. While it runs, write down what your exceptions actually are, the holds, the net terms orders, the preorders your warehouse should not see yet, because those sentences are the difference between a watcher you trust and a watcher you mute.
Then say the brief the way you would hand it to a new hire. Every paid order should show up in ShipStation within twenty minutes; check all statuses before calling one missing, and try a refresh first. If it is still missing, tell me right away with the order number and what the payment timeline shows. Watch the other direction too: if something ships and the tracking never lands in Shopify within the hour, same alarm. Give me a morning digest and a weekly count of what leaked and why. That is the whole paragraph. The compiler turns it into the workflow, and the next order that falls into the gap gets caught by a machine at minute twenty-one instead of by a customer on day nine.
If you are a Shopify merchant with a sync story, the
order that surfaced in a complaint, the diff you ran at
midnight in November, the fingerprint you found in a
payment timeline, the inbox is open:
field-notes@dugong.live. We are collecting
case studies for the next issue.