A hold is the 3PL saying "we have the order but cannot progress it" - no stock, replenishment needed, back order, manual hold. Holds are not errors: the order stays at the warehouse and usually resolves there. The connector shows holds on the dashboard (On Hold card - click through for the list), on the Orders page and on each sales order, with the 3PL's own reason label. If a hold will not clear (e.g. genuinely out of stock), your options are at the 3PL portal or cancelling and re-routing.
Odoo cancels first. Cancelling a sales order whose 3PL order is in a sent state automatically requests cancellation at the warehouse (where the provider supports API cancellation - both Sprint and ShipHero do). If the 3PL refuses - typically because the parcel already shipped - the refusal lands in the order's chatter and the order stays cancelled in Odoo, so you know to handle the shipped parcel (it will likely come back as a return; see Returns). For providers without API cancellation, the chatter tells you to contact the warehouse. There is also a Cancel at 3PL button on the 3PL Order for cancelling at the warehouse without cancelling in Odoo (e.g. to re-route to another instance).
The 3PL cancels first. A status poll finding the order cancelled remotely marks the 3PL Order cancelled and applies the instance's If the 3PL Cancels an Order policy: flag the sales order with an activity for a person to decide (default), or cancel the Odoo order automatically. The flag-for-review default exists because the right answer is often not cancellation but re-routing: the order is still owed to the customer, just not from that warehouse.
Normal flow. Order SO1042 confirmed at 09:00 with Royal Mail 48. 09:07 the scheduler pushes it; Sprint answers with AWB 20416212. Polls show Ready to Pick > Picking > Packed. At 14:00 the poll sees COMPLT: tracking FP877310181GB and two batches come back, the delivery validates itself with those lot numbers, the customer-facing tracking link sits on the order. Nobody touched anything.
Out of stock at the warehouse. SO1055 goes on hold - "Error - No Stock". It counts on the dashboard's On Hold card. The buyer books an urgent inbound (see ASNs); when stock arrives the hold clears at Sprint and the next poll moves the order onward.
Customer cancels in time. Customer service cancels SO1060 in Odoo at 10:02; the parcel had not been picked, Sprint accepts the cancellation, chatter records "Cancellation confirmed by 3PL". Had it already shipped, chatter would instead record the refusal and the parcel would be handled as a return on arrival back.