WordPress development for Zurich and Switzerland
A Swiss SME website is rarely a brochure. It usually sits between Bexio or Abacus for accounting, a TWINT or PostFinance checkout, editors writing in two or three national languages, and the revised data protection act that has applied since 1 September 2023. I build WordPress sites that fit into that setup.
Who I am
I am Mariusz Szatkowski, a senior WordPress developer since 2006, based in Gdynia, Poland. WPPoland is the name I use for that work. I work alone and remotely: no team, no subcontractors, so the person who quotes your project is the person who writes the code. You bring the wireframes and graphic design, for example as a Figma file; I build them into a responsive theme or WooCommerce shop.
Is WordPress the right CMS for a Swiss company?
For company sites, service firms and B2B lead generation it rarely is the wrong choice. WooCommerce with Datatrans, Saferpay or Wallee covers most shops selling into German- and French-speaking Switzerland.
It gets harder when a catalogue of several thousand products takes stock and prices from Abacus or SAP, or when B2B pricing is negotiated per customer. Then a hosted shop system or a custom build can cost less to run. Portals of banks, insurers and asset managers supervised by FINMA come with their own IT and outsourcing requirements; a public WordPress site is not where that data should live. I say which side of the line your project is on before I write a quote.
TWINT, QR-bill and Swiss VAT in WooCommerce
Swiss customers pay differently from those in neighbouring countries, and the checkout has to reflect that:
- TWINT: connected through a certified gateway (Datatrans, Saferpay from Worldline, PostFinance Checkout or Wallee), with the app switch on mobile and a QR code on desktop.
- QR-bill: for customers who pay on invoice, a QR-bill PDF with a QR-IBAN and structured reference, attached to the WooCommerce order confirmation.
- PostFinance Pay and cards: through the same gateway, so you keep one contract and one settlement.
- Swiss VAT: the rates in Art. 25 MWSTG are 8.1 % standard, 2.6 % reduced (food and other listed goods) and 3.8 % for accommodation. Prices are shown and settled in CHF, with EUR as a second currency if you sell abroad.
- Shipping: Swiss Post for parcels and returns, other carriers through their own APIs, with rates and labels configured per shop.
Hosting in Switzerland
I do not run hosting myself. Many Swiss clients want the production database in Switzerland; then you choose a provider with Swiss data centres, such as Infomaniak, Hostpoint, cyon or Metanet, and I set WordPress up there or take over the existing install. Before I start, I agree in writing what the host delivers (backups off the web server, a tested restore path) and what I handle inside WordPress.
Running a multilingual WordPress site in Switzerland
Switzerland has four national languages. Most Zurich SMEs publish in two, DE-CH and English; companies selling nationwide add FR-CH and sometimes IT-CH. Romansh appears mostly on cantonal and tourism sites in Graubünden.
| Languages | Plugin | Editorial workflow |
|---|---|---|
| 2 (DE-CH and EN) | Polylang | Manual translation, one editor per language |
| 3 to 4 (DE-CH, FR-CH, IT-CH, optional RM) | WPML with String Translation | One editor per language, shared translation memory |
| Several languages with machine drafts | WPML with a DeepL connector | Machine draft, human review before publishing |
DE-CH differs from DE-DE: Swiss Standard German writes ss instead of ß and uses its own vocabulary (Velo, parkieren, grillieren). If a translation workflow outputs German German by default, the copy reads as foreign. Your own editors check the wording; I set up the language versions so this is easy to catch.
Setting up hreflang for de-CH, fr-CH and it-CH
Broken or missing hreflang is the most common SEO fault on Swiss multilingual sites. The minimum for a site in DE-CH, FR-CH, IT-CH and English:
de-CH,fr-CH,it-CHanden(oren-CHif you target English speakers in Switzerland)x-defaultpointing to the language selector or the DE-CH version- reciprocal links: every language version lists all the others and itself
xhtml:linkannotations in the sitemap as a second layer
Polylang and WPML output hreflang correctly when configured. When it breaks, the cause is almost always custom code that strips head tags on cached pages, or a CDN rule that varies on a cookie instead of the URL.
What the revDSG and the FMG require from a WordPress site
The revised Federal Act on Data Protection (revDSG, SR 235.1) has applied since 1 September 2023. It is close to the GDPR but not identical. Express consent is required for sensitive personal data and for high-risk profiling by private parties (Art. 6 (7)). Data may go abroad to countries the Federal Council has listed as adequate, otherwise only with safeguards such as standard contract clauses (Art. 16).
For a typical WordPress site that means:
- a privacy policy in every language version
- a list of every service that receives visitor data (analytics, email, CDN, fonts) and the country it sits in
- a processor agreement under Art. 9 revDSG with anyone who gets access to the data, including me
Cookies fall under Art. 45c FMG: visitors must be told what is processed and why, and that they can refuse. Swiss law does not demand prior consent. If the site also addresses visitors in the EU, their stricter rules apply, so I usually configure the consent tool as opt-in and load nothing non-essential before the click.
Migrating from TYPO3, Drupal or Magnolia to WordPress
Many Swiss companies and associations still run TYPO3, Drupal or Magnolia and find developers for them hard to get. I move them to WordPress or WooCommerce in a way that keeps their visibility on Google.ch. Method and templates: confidential TYPO3 to WordPress case study.
- Redirects: every old URL is inventoried and mapped to its new address with a 301. Canonical tags, Open Graph data and structured data are rebuilt.
- Content in all languages: DE-CH, FR-CH, IT-CH and English content is exported by script, cleaned and moved into custom post types and ACF fields.
- Customers and orders: on shop migrations I carry over customer accounts, order history and product variants; old password hashes are converted at each customer’s first login.
Maintenance
Maintenance covers uptime monitoring every 1 to 5 minutes, backups kept for at least 30 days in EU countries, and updates I test on staging before they reach production. I do not offer a 24/7 on-call service, guaranteed response times or an SLA. If your backups must stay in Switzerland, they go to storage at your Swiss host.
How a project runs
- Brief and questions: you send scope, languages, payment methods and the design; I ask my questions in writing.
- Quote: scope, assumptions and timeline are fixed in writing before any code is written.
- Build: code lives in a private Git repository; every push goes to staging, production only after your approval.
- Review: you check each change on staging and get a written note on what changed.
- Launch and handover: a written handover with the plugin list, licence renewal dates and the backup policy.
Communication runs by email, in documents and in the repository. If you need a phone call, tell me. The contract is a B2B agreement under Polish law; invoices carry my EU VAT ID PL7393037445.
Contact
Send me the scope, languages and timeline through the contact form. You get the next steps in writing and a quote with the assumptions it rests on.




