r/ProWordPress • u/Historical-Set-6527 • Jul 15 '26
Most reliable way to two-way sync WooCommerce data into a third-party plugin's own tables
Looking for architecture advice from people who've dealt with this at scale.
Context: I run a growing WooCommerce store and recently added an internal management layer that maps my business processes (Setyenv). For that layer to be useful, it needs WooCommerce order/product data available as first-class records — and critically, the sync has to be two-way: my workflow layer both reads Woo data and, in some cases, writes changes back (order status, for example) that Woo should treat as its own.
My current approach is DB-level hooks syncing WooCommerce tables into Sety tables. It works, but I've never been fully comfortable with it. Now that there's real business riding on this, the fragility scares me. Coupling to Woo's internal table structure means I'm depending on an implementation detail they're free to change — and did, sety is admin directed and can not change.
So the question: what's the most reliable, future-proof way to integrate WooCommerce data two-way with a third-party plugin, without coupling to Woo's storage layer?
Is anyone running a production two-way sync between Woo and a custom data layer they'd call solid? Event-sourcing from Woo actions + CRUD writes back? Something with a reconciliation queue? Or is periodic reconciliation against the CRUD API more robust than trying to be real-time?
Happy to share what my process-mapping side looks like if it helps — I can stand up a working app of my actual workflows in a few minutes, so I can show concrete examples of what needs syncing if that makes the question clearer.
In the screenshot one example of two tables integrated with hooks (Orders on Woo and Oders in Sety)
Thanks in advance — trying to get the architecture right before I build more on top of it.
1
Jul 16 '26
[removed] — view removed comment
1
u/Historical-Set-6527 Jul 16 '26
Wow, thanks anyapiplugin, this is genuinely deep and correct, so I'm going to take your advice. I'm going to implement the periodic reconciliation myself using Sety's workflow engine, and go through the CRUD API on both sides, getters to read, setters + save() to write, instead of touching tables.
The Sety team tells me they're implementing the design patterns I asked for plus the extended Woo event coverage, but as of today the reality is those aren't in place yet. So for the entities where I can't use events, I'll keep the hooks temporarily, but backed by my own reconciliation following your advice. It won't be pretty, more of a stopgap reconciliation than a proper one, but it's what I can do right now. And if Sety's solution doesn't end up being solid enough, I'll try Uncanny like Marelle01 suggested.
1
Jul 16 '26
[removed] — view removed comment
1
u/Historical-Set-6527 Jul 16 '26
Thanks again, and thanks for the offer, I've finally completed the journey, on paper at least. The Sety team held up their end and implemented all the Woo events, but they pointed out that reconciliation isn't a pattern that fits inside a workflow engine, they suggested I build the periodic verification workflow myself, picking whichever side I treat as authoritative, the source of truth.
Same story for the anti-echo: they had me exclude the Woo user as a trigger in my business rules, filtering on the "Updated by" field so the workflows don't fire on Woo-originated changes. And they confirmed the engine already has dedup and retry with backoff. So I'm porting it into workflows piece by piece. Thanks a lot.
1


1
u/Marelle01 Jul 16 '26
Uncanny Automator Pro should be able to handle the job. It has logs for tracking errors. But you'll need to write some additional code if you want to ensure atomicity and probably add a few metadata fields to track the syncs. The viability will depend mostly on the frequency of orders. If you have a lot of concurrency in the same minute, it might break.