Each switch enables one scheduled flow. Turning a switch off never deletes anything - it only stops the scheduler running that flow; manual runs from the Operations pages remain possible.
Sync Orders (default on). Enables the two order flows: order push (send eligible confirmed sales orders to the 3PL) and status poll (refresh the 3PL's status for every order that has been sent). With this off, the dashboard order cards grey out with an "Inactive" badge and no order ever leaves Odoo by itself. Example: during a migration weekend you switch Sync Orders off so nothing is pushed while stock is being counted, then switch it back on Monday - the next push picks up everything that queued up, oldest first.
Sync Stock Levels (default on). Enables the scheduled inventory sync (see Inventory sync). What the sync actually does with differences is governed by Stock Master and Stock Adjustments below.
Sync Products (default off). Enables the background product push queue: product bindings marked To Push (or queued by the bulk wizard / "Push Queued Products") are sent to the 3PL's item master in batches. Off means products only move when someone pushes them by hand.
Sync Suppliers (default off). Pushes vendor records to 3PLs that keep their own supplier master, so inbound deliveries can reference them. Hidden for providers without supplier support (the 3PL, for example, does not take suppliers via API - which is why the Suppliers operation never offers a the 3PL instance).
Sync Returns (default off). Polls the 3PL for customer returns - including parcels that arrive unannounced and undeliverable/return-to-sender parcels - and books received goods back into Odoo. See Returns for the full lifecycle.
Each flow has its own schedule, applied only while its switch is on and checked by a scheduler that wakes every few minutes. A schedule is "every N units", and the unit decides what else you can set:
Times of day are in the company's timezone. The defaults are the plain minute intervals: order push 15, status poll 30, stock sync 1440 (daily), returns poll 60.
Guidance: status polling is the chattiest flow - against a rate-limited API, lengthen its schedule first. Inventory syncs are heavy on both sides; every 1 day at 02:00 is right for most operations. Every flow can always be run now from the dashboard or its Operations page regardless of the schedule.
Polling asks the 3PL "anything new?" on a timer. A webhook is the warehouse telling you the moment something happens. The instance's Event Delivery tab, inside Synchronisation, decides which of those it relies on - and what happens when the telling stops.
Push never replaces polling outright. A webhook is one delivery attempt at a server that might be restarting, upgrading or simply down, and an event nobody caught is an order that silently never despatched. With push as primary you also set how often the safety-net poll still runs (180 minutes by default) and how long silence may last before the connector raises the alarm (120 minutes by default).
The endpoint's only job is to write the delivery down and acknowledge it - nothing is processed inside the provider's request. A background job picks events up within the minute, retries what fails five times, and leaves anything still broken as Failed with its payload intact, ready to replay from the Pushed Events list. Repeat deliveries are recognised by fingerprint, so a provider retrying until it sees a 200 does not produce duplicates.
Events are notifications, not sources of truth: the connector reads the event to learn what changed, then asks the provider's API for the detail. That is why a missed event is survivable - the catch-up runs exactly the same flows the polls do, so whatever the events would have told you is read back from the provider's own state. If nothing arrives for longer than your tolerance, the connector runs that catch-up by itself and notes it on the instance; Catch Up Now does it on demand.
| Provider | Push | How it is switched on |
|---|---|---|
| ShipHero | Yes | Register Webhooks subscribes over the API |
| ShipBob | Yes | Register Webhooks subscribes over the API |
| Shipwire | Yes | Register Webhooks subscribes over the API |
| Sprint Logistics | Yes | Send Sprint your webhook URL - they set it on the account |
| Extensiv | Yes | Configured in the Extensiv web app |
| ShipMonk | Yes | Subscribed in the ShipMonk app |
| Infoplus | Yes | Configured as a trigger in the Infoplus app |
| James and James | Yes | Account-wide callback, set by the warehouse |
| MintSoft | Per order | The callback travels with each order sent |
| Amazon MCF | No | SP-API notifications need an AWS SQS/EventBridge destination |
| Clarus WMS | No | The automations API exists but its payloads are undocumented |
| Huboo, byrd, Linnworks | No | No push in the published API |
Where a provider cannot push, the connector polls and the tab says so. Nothing is lost - polling is how every instance worked before push existed.