Unfortunately, WooCommerce does not offer the ability to suppress webhooks in their API. If you have two-way sync between Customers 1st and WooCommerce, you may experience an issue where an update is sent to WooCommerce, and WooCommerce immediately sends the old stock level back to Customers 1st.
Essentially, the following happens when you make an update in Customers 1st:
C1st sends an update to WooCommerce, for example with a new stock level
Because you have two-way sync enabled, WooCommerce immediately sends a webhook/update back in the other direction. This behavior is highly problematic, but it cannot be avoided, as Woo does not offer any standard way to suppress this.
C1st then receives an "update" on the same product that was just sent, and we are therefore forced to process this update - changing, for example, the stock level or other data.
We make sure in C1st to "stop it here" to prevent a continuous loop.
If the stock level sent from C1st to Woo is the same as the one received back from Woo to C1st, then there's no real issue - we simply ignore the update.
The problem arises when WooCommerce, in some cases, sends the webhook/update before its own database has been updated with the correct stock level from C1st.
This can result in a situation where C1st sends a new stock level of, for example, 4 to Woo (where the previous value was 3), and Woo then sends a webhook back with stock level 3 to C1st.
Because two-way sync is enabled and we cannot distinguish between valid and invalid updates, we have no choice but to process the update - this is when the error occurs.
The above issue only occurs when two-way sync is enabled and depends heavily on the setup of the WooCommerce store.
We have implemented a delay ourselves when receiving updates from WooCommerce, to give the store time to complete its update, and we also ignore many updates that come in too quickly one after the other.
Unfortunately, this is a problem caused by WooCommerce, so there is only so much we can do.
We recommend implementing the ability to suppress hooks, so that updates are not sent back from WooCommerce again—this prevents the loop from occurring.
See, for example, this is where the exact issue mentioned above is also described: https://shanerutter.co.uk/fix-woocommerce-webhook-loop/
We have already implemented a header for this in our integration, using the value "HTTP_X_SUPPRESS_HOOKS".