What regularly goes wrong with extensions for JTL-Wawi and JTL-Shop, and how to avoid it.
Extensions in the JTL ecosystem are rarely difficult in technical terms. They get expensive through assumptions nobody spelled out.
A plugin that reaches straight into table structures works exactly until the next version jump. Going through the intended interfaces instead saves the semi-annual repair job.
A practical rule: every direct table query gets a comment stating the reason. If the reason reads "it was faster", it is not a reason.
Wawi, shop and marketplace all hold stock levels. Without a defined leading source you get a ping-pong that only surfaces once an item has been oversold.
Before the first line of code, decide per field which system wins and what happens on a conflict. That is half an hour of work and saves weeks.
A sync that fails silently is worse than one that fails loudly. Every run needs a log, a retry with growing back-off and an alert when the retry finally gives up.
The real effort is not in the feature but in the question of what happens when things break. Clarify that up front and you get an extension that still runs in two years.
How far Wawi can be customised at all is something I described in How far can you customise JTL-Wawi?. One concrete example is a module that brings quotes straight from the shop into Wawi. If you want something built in the JTL world, take a look at my work in the JTL space.