“Karl, the shipping page is wrong. Can you fix that?” “It’s live. Step-by-step explanation with PostNL and Hermes tracking.”
A good friend of mine runs a successful webshop and wanted to put it on the map in Germany too. I copy-pasted his existing WordPress website and hosted it on my Hetzner server. But that was only the beginning…
The translations had to be done, it had to become legally compliant, tulips and stroopwafels with the shipping, a little Dutch flag here and there. Und so weiter, und so fort. My WhatsApp was flooded with requests.
Now I absolutely hate clicking through a WordPress (or any other) admin portal to piece things together. A perfect opportunity to put Claude Code to the test.
The result is a virtual AI-powered webmaster that you can fully control via WhatsApp. Lennart now sends his wishes directly in a group chat with him, me, and the AI bot. In the background, Claude Code carries out the requests.
The setup
I set up a WhatsApp bot: “Karl Kuhfell”. In a group chat with Lennart (the shop owner) and me. Karl is connected to Claude Code, which runs in the WordPress directory on my laptop. Three tools are at his disposal: WP-CLI for commands, the WordPress API for content, and direct MySQL queries for anything that goes deeper.
From WhatsApp message to live change on the site.
From the terrace
Lennart was on holiday. From his terrace he sent messages in the group, and Karl took care of it. Below are two examples from the actual WhatsApp group: on the left the shipping page, on the right the legal check.

Left: the shipping page. Customers in Germany receive their package via PostNL (from the Netherlands) which is transferred to Hermes at the border. Two tracking numbers, one package. Confusing if you don’t explain it. Lennart asked Karl to fix this, and Karl built a shipping page in real-time with step-by-step instructions, track-and-trace links per phase, and an info box explaining why you get two tracking numbers.
Shortly after, Karl also added a disclaimer for international delivery times: a friendly note at the bottom of the shipping page that international shipments can sometimes take 3 to 6 business days.
Right: legal compliance. The most interesting moment was when Karl raised the alarm himself. Not asked, but on his own initiative. He checked the legal status of the site and reported:
- Datenschutzerklarung (Privacy Policy): was already there
- AGB (Terms and Conditions): was already there
- Impressum (Legal Notice): missing (the biggest risk for an Abmahnung in Germany)
- Widerrufsrecht (Right of Withdrawal): was in the AGB but lacked its own page
Lennart sent his Chamber of Commerce number and VAT number. Karl created the Impressum and Widerrufsrecht. “Legally compliant! No Abmahnung for you.”
This is where the difference lies. Karl doesn’t just execute, he thinks along. Besides translating pages, he also flags that your Impressum is missing and that you could get fined for it.
Everything live on the site, while Lennart was sitting on the terrace.
The tools under the hood
Claude Code works in the WordPress directory and has three ways to modify the site:
WP-CLI for everything you’d normally do via the command line: installing plugins, loading language files, flushing cache, creating pages, search-and-replace across the entire database.
WordPress API for content: posts, pages, products, media. Everything you can access through the REST endpoint.
MySQL directly for the edge cases. Serialized PHP data in wp_options, bulk updates across thousands of product rows, things too complex for WP-CLI. Claude Code writes the SQL, executes it, and verifies the result.
The site runs on Kubernetes (Hetzner). WP-CLI communicates via kubectl exec with the WordPress pod. The MySQL queries go through the MySQL pod in the same namespace.
No wp-admin needed
The nice thing about this: you no longer need the WordPress dashboard. No logging in, no clicking through endless menus to do what you want. The AI bot and Claude Code handle all of that in the background. The client (Lennart in this case) can have his wishes executed directly.