WooCommerce ger tyvärr inte möjlighet att "suppressera" webhooks i deras API. Om man har tvåvägssynk mellan Customers 1st och WooCommerce kan man därför uppleva ett fel, där det skickas en uppdatering till WooCommerce och WooCommerce skickar det "gamla" lagersaldot tillbaka till Customers 1st direkt igen.
Det som i princip händer när ni har gjort en uppdatering i Customers 1st är följande:
C1st skickar en uppdatering till Woo med t.ex. ett nytt lagersaldo
Eftersom ni har tvåvägssynk uppsatt, så skickar Woo direkt en webhook/uppdatering tillbaka åt andra hållet. Den här är väldigt olämplig, men kan inte undvikas eftersom Woo inte ger några möjligheter för det här som standard.
C1st tar emot en "uppdatering" på den produkt som det just har skickats en uppdatering på, och vi är därför tvungna att behandla den här uppdateringen och ändra t.ex. lagersaldo eller annat.
Vi ser i C1st till att "stoppa den här", för att inte fortsätta loopen.
Om det lagersaldo vi har skickat från C1st till Woo är samma lagersaldo som vi får tillbaka från Woo till C1st igen, så är det egentligen inget problem och vi ignorerar bara uppdateringen.
Problemet uppstår när WooCommerce i vissa fall skickar webhook/uppdatering iväg INNAN Woo:s egen databas har blivit uppdaterad med det korrekta lagersaldot från C1st.
Därmed kan det uppstå en situation där C1st skickar t.ex. ett nytt lagersaldo på "4" till Woo (där det t.ex. står 3 innan), och Woo sedan skickar webhook tillbaka med lagersaldo "3" till C1st.
Eftersom ni har tvåvägssynk uppsatt och vi inte kan se skillnad på "riktiga" och "felaktiga" uppdateringar, är vi tvungna att låta uppdateringen gå igenom, och därmed har felet uppstått.
Ovanstående sker bara med tvåvägssynkronisering aktiverad och beror mycket på hur WooCommerce-shopen är uppsatt.
Vi har själva implementerat en "fördröjning" när vi får uppdateringar från Woo, för att ge shopen utrymme att hinna göra uppdateringen, och vi ignorerar också många uppdateringar som kommer "för snabbt" efter varandra.
Tyvärr är det ett problem som uppstår på grund av WooCommerce, och därför är det begränsat vad vi kan göra.
Vi rekommenderar att implementera möjlighet att undertrycka hooks, så att det inte skickas uppdatering tillbaka från Woo igen och loopen inte uppstår. Se bland annat exempel på detta här, där just det nämnda problemet också tas upp: https://shanerutter.co.uk/fix-woocommerce-webhook-loop/
Vi har redan implementerat en header för användning av detta i vår integration med värdet "HTTP_X_SUPPRESS_HOOKS".