Available for new engagements · Vienna
Complex
WordPress.
Solved.
When a WordPress problem survives the usual fixes, I find out what is actually causing it. I work with agencies, shops and teams running complex sites, from plugin conflicts and broken functionality to multilingual WooCommerce setups and inherited codebases.

Typical situations
The kind of problems I usually get called for.
A WordPress site can work perfectly well for years and still reach a point where nobody is quite sure what can safely be changed anymore. If your case is harder to describe, that is fine too.
Inherited a site with little or no documentation
You need to change something, but nobody knows why parts of the system were built the way they were, or what still depends on them.
WPML, WooCommerce or ACF behaving inconsistently
Content, products, translations or custom fields no longer stay in sync and the cause is unclear.
Updates keep getting postponed
Something broke badly during the last update and nobody wants to try again without understanding why.
The site is down or wp-admin is unusable
You need someone to investigate the system while the issue is happening, not another generic checklist.
Selected work
01 / 02
Multilingual shop, shared hosting
WooCommerce backend
unreachable.
Issue
Intermittent lockouts from the backend of a multilingual WooCommerce shop on shared hosting. Memory, CPU and IOPS were hitting their limits at the same time, while stale cache, heavy bot traffic, accumulated data and a complex plugin stack all looked suspicious.
Outcome
Usable again the same day. I disabled the plugin stack, brought it back in controlled batches and monitored the server resources after each change. That turned an intermittent failure into two reproducible triggers, each capable of exhausting the available memory on its own. The client had a working backend again and, more importantly, evidence of what was actually happening, without immediately moving the site to a larger hosting plan.
909 MB → 237 MB
memory after isolating one trigger
37,000+
automated requests found in the logs
2
independent triggers, reproducible on demand
Two days before an ad campaign
Shop too slow
to launch.
Issue
A seven-year-old shop on WPML and a page builder, far too slow two days before an ad campaign. Years of themes, plugins and integrations had accumulated, and the front end had never been properly audited. The owner had already tried to investigate it with AI.
Outcome
I traced most of the excessive DOM to an external review integration, removed seven icon font libraries and other assets the page still loaded but no longer used, and reconfigured caching. The front end went from 6,932 elements to 2,243. The campaign went live on time, with a written plan for what did not fit into one session.
2 days
from first look to campaign launch
6,932 → 2,243
DOM elements measured on the front end
7
icon font libraries removed
About me
Who you would be working with.
I am Marcel Tannich, a WordPress consultant based in Vienna with more than sixteen years of IT experience and over 17,000 hours spent on complex WordPress problems. I work on critical site issues and systems that have become difficult to debug or maintain. Debugging is still the part I enjoy most, especially when the cause is not immediately obvious.
WordPress full time since 2018
Web development, consulting and technical support for agencies, shops and product teams.
Former WPML technical support lead
Seven and a half years at OnTheGoSystems, the company behind WPML, three of them leading a support team and mentoring its engineers. Thousands of different site setups and errors along the way.
Open source contributor
Active member of the WordPress.org Plugins Team, reviewing plugin submissions since April 2026, sponsored by SiteGround.
Local and international community
Speaker at WordCamp Europe in 2021 and 2025, Content Team Co-Lead in 2023, and part of the WordCamp Vienna organising team since 2024.
Services
Different levels of involvement
depending on the problem.
Some cases need a single fixed task. Others turn into a larger stabilisation project, migration or rebuild. I scope the work before starting so you know what I am looking at, what I expect to deliver and what it will cost. For agencies, all of it can run white label. Your client does not need to know I exist.
Debugging & stabilisation
For production issues, plugin conflicts, multilingual and WooCommerce setups, performance problems and behaviour where the cause is still unclear.
Care plans
Ongoing maintenance for business-critical sites. Updates, backups, monitoring and someone who already knows the system when something breaks.
Consulting
For architecture decisions, second opinions and difficult technical questions.
Custom websites
A custom block theme or an established FSE theme, no page builder. Documented so your team can change it later without calling me.
Rebuilds & migrations
When the existing system has reached the point where fixing individual problems no longer makes sense.
How I work
First understand the problem.
Start
Start with the diagnosis
I reproduce the issue, look at the architecture and work out what is actually causing the problem. That usually means checking code, logs, database behaviour, requests, hosting limits and the interaction between plugins rather than changing things until something appears to work.
Then
Then fix what needs fixing
Once the cause is clear, I can implement the fix, help your developer do it, or give you a concrete plan for what should happen next. For larger systems, that can also mean separating the immediate problem from technical debt that should be handled later.
Ongoing
Stay involved when it makes sense
Some clients call me for one difficult problem. Others keep reserved monthly capacity so I already know the system when something comes up.
Contact
Tell me what
is happening.
A rough description is enough. Tell me what is happening, what changed recently and anything you have already tried. I usually reply within one business day, in German, English or Spanish.
Thirty minutes, no charge, pick a slot that suits you.
Or write to [email protected]. Prefer a form? Use the contact page.