Code
Projects, plugins, and tools - mostly solving problems I ran into on client sites.
AI Data Stream
Connect GA4, Search Console, Google Ads, PageSpeed Insights, WordPress, Pipedrive, and HubSpot to your own AI - with zero markup on API costs. Most AI analytics tools charge 3-10x what the underlying API calls cost. AI Data Stream lets you bring your own keys from OpenAI, Anthropic, Google, or DeepSeek, and chat with your data directly.
Open source
Elementor CSS Regenerator
WordPress plugin that automatically regenerates missing Elementor CSS files on demand. When Elementor clears its CSS cache, cached pages still reference deleted stylesheets - leaving visitors with broken layouts until the cache expires. This intercepts the 404, rebuilds the file, and serves it immediately.
CF7 Origin Protection
Blocks Contact Form 7 submissions made through the WordPress REST API, which bypasses reCAPTCHA and other front-end spam protection. Validates that submissions come from the actual site origin.
Link Shortener
A full-featured URL shortening service with analytics dashboard, A/B testing, geo-targeting, QR codes, link health monitoring, and a drag-and-drop report builder. Built with Laravel 12 and Filament 3.
Remove Yoast Sitelinks Search Box Schema
Removes the SiteLinksSearchBoxMarkup piece from Yoast's schema output. Google deprecated their sitelinks search box (which was never part of the open schema.org spec) but Yoast still outputs it, causing unnecessary warnings in Search Console. I suggested removing it upstream but was told there was "no harm" in keeping it.
W3 Total Cache Page Clearer
Adds a dashboard widget and admin bar link to clear W3 Total Cache by URL. The built-in "clear this page" link only works on posts with an ID - this works on any URL, including archive and taxonomy pages.
Fix Yoast Organization Schema
Fixed a widespread issue introduced in Yoast SEO 11.0 where organization and logo data stopped being recognised by Google. The update nested organization schema inside WebPage blocks, causing logo enhancements to silently disappear from Search Console.
CF7 Form Auto Class
Automatically adds a Contact Form 7 form's slug as a CSS class to its output. Useful for distinguishing form submissions in CRM systems like HubSpot, where all CF7 forms otherwise appear identical.
Joomla JSON Database Check
Diagnostic script that finds and repairs corrupted JSON data in Joomla databases after the breaking changes in version 3.6.3. My most-starred repo - it helped a lot of people at the time.