
Cascading Country and Location Dropdowns in Umbraco Forms, with Email Routing per Location
How we built a dynamic country and location dropdown in Umbraco Forms that sends each enquiry to the right location's contact using a single email workflow.

Umbraco 13 End of Life: Why You Should Migrate from Umbraco 13 to 17 Now
Umbraco 13 and .NET 8 lose security support by December 2026, leaving sites exposed and putting Cyber Essentials certification at risk. Here’s why and how to migrate to Umbraco 17.

How to Check if PHP2Shell Was Exploited on Azure Linux App Service
PHP2Shell (CVE-2026-109618 and CVE-2026-109619) let attackers run code on unpatched PHP servers, and patching doesn’t tell you whether anyone got in first. This post shares a read-only script for Azure…

Small agency or large agency?
Clients often ask whether they would be better off with a bigger agency. It is a fair question, and it rarely gets an honest answer. Here is a straight comparison…

Two Years of Building with AI - An Honest Review
Two years on from my first ChatGPT tab, an honest account of how I actually use AI day to day. Reviewing everything it produces, never letting it commit, spec driven…

Running the Umbraco backoffice behind Windows Authentication
From Umbraco 14 onwards, the backoffice stops working on sites where IIS has Windows Authentication on and anonymous authentication off. Here's why that happens, and a small package that fixes…