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.
Buttons on the 3PL Order act on the warehouse's copy directly. Each is shown only when the provider supports the operation, and every action is recorded in the sales order's chatter.
Update at 3PL (while the order is at the 3PL and not yet despatched). Pushes the order's current Odoo state - addresses, lines and service - over the copy the 3PL holds. Change the delivery address, fix a quantity or swap the service in Odoo, press Update at 3PL, and their copy matches yours again; no cancel-and-resend needed. If the 3PL rejects the amendment - typically because picking has already started - the exact refusal is shown and nothing changes on either side.
Hold at 3PL / Release Hold (while at the 3PL, not yet despatched). Pauses fulfilment of that one order at the warehouse without cancelling anything - useful while a customer query or a payment issue is resolved - and releases it again when you are ready. The hold state is visible on the 3PL Order; unlike the 3PL's own holds above, this one is yours to set and clear.
Fetch Proof of Delivery (on despatched orders, where the provider exposes POD). Asks the 3PL who received the parcel and when, and posts the answer - name, date, time and delivery status - to the sales order and the 3PL Order. If the 3PL holds no proof of delivery yet, the note says so with the parcel's current status. Handy ammunition for "it never arrived" disputes without leaving Odoo.
On Amazon MCF instances the same buttons follow Amazon's rules: Update at 3PL amends the order for as long as it is unshipped. Holds are made at creation instead of afterwards - with Create Orders On Hold on (see Settings reference) every order is submitted on hold and Amazon reserves the stock for up to 14 days until you press the Release button (an order never released is cancelled automatically). Fetch Proof of Delivery reports who signed for the parcel.
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 the 3PL and your 3PL do). If the 3PL refuses - typically because the parcel already shipped - the instance's If Odoo Cancels an Order policy decides what happens (see Settings reference): by default 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); the stricter policy blocks the Odoo cancellation instead until the warehouse situation is resolved. 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; the 3PL 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 with the warehouse; when stock arrives the hold clears at the 3PL 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, the 3PL 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.