I Was Supposed to Write a Different Blog Post
Let me be straight with you. I have a content plan for the XAVA blog. A proper one. Topics mapped out, angles worked through, the whole thing. And I have not published a single word of it in longer than I care to admit. So instead of pretending that the next post in the queue is magically going to appear, I am going to tell you about something I actually did. I built an entire product, from concept to live site, customising WordPress along the way and what it taught me about owning your platform.
The thing I built by customising WordPress
TagForge.io is a marketplace of pre-built GTM container JSON files for WooCommerce stores. The idea is simple: a merchant enters their tracking IDs at checkout, pays, and receives a ready-to-import GTM container with everything pre-configured: GA4 ecommerce events, Meta Pixel, Consent Mode v2, the lot.
No developer. No discovery call. No project.
That is the customer-facing simplicity. Behind it is a story of customising WordPress that is anything but simple and that is the story worth telling.
Why Customising WordPress was the right call
I could have built TagForge on a SaaS platform. Shopify, Webflow, a headless stack. Each would have got me to market faster in some ways. But I knew from the start that the product logic: dynamically assembling a unique GTM container JSON from a customer’s order, injecting their specific tracking IDs, generating a secure timed download link, and emailing the newly forged container. I even built the ability for the customer to renew their 7-day download limit (because let’s face it sometimes we simply don’t get to do the things we said we would get done from our to-do list). It was going to require real custom code. The kind of code that needs to sit close to the commerce layer, not bolted on top of it via a third-party API.
WordPress, with WooCommerce underneath it, gave me that. Full access to the order lifecycle. Full access to the database. Full control over every hook, filter, and action. No platform limits. No monthly plan tier stopping me from doing the thing I needed to do.
The trade-off is that you are carrying the weight of that power yourself. But when you know what you are doing, or can work with people who do, it is an extraordinary development platform.
What actually got built
Here is where it gets interesting, because the scope crept in the best possible way.
The TagForge Modular GTM Plugin (v3.7.3)
This is the engine of the whole product. When an order completes, the plugin:
- Reads the modules configured against each WooCommerce product (e.g.
gtag-basic,ecom-base,facebook-pixel,consent-mode-v2) - Pulls the corresponding JSON module files from disk
- Assembles them into a single valid GTM container export, renumbering all internal IDs and rewriting trigger references so nothing conflicts
- Replaces placeholder tokens (
{{GA4_MEASUREMENT_ID}},{{META_PIXEL_ID}}etc.) with the actual values the customer entered at checkout - Generates a secure, tokenised download URL that expires after 7 days
- Fires a customised transactional email with the download link and import instructions
That is a fully automated digital fulfilment pipeline, running inside WooCommerce, triggered by a payment. No manual intervention. No human in the loop.
Version 3.7.3. The version number is not an accident, there were a lot of versions before it. More on that shortly.
The CMP Checker Plugin
This started as a lead generation idea and became a genuinely useful free tool. Paste any URL into the CMP Checker and it fetches the page source, scans it against a library of 16 known consent management platforms, Complianz, Cookiebot, OneTrust, CookieYes, and more, and tells you what CMP is installed, what platform the site is running on, and what it means for GTM tracking. It even recommends pre-built GTM cotainers based on your answers to simple questions should you need help figuring out what you need!
It runs as a WordPress REST API endpoint, logs every scan to a custom database table for our own analysis, and is embeddable anywhere on the site via a shortcode. It is also the thing that earns the right to the conversation about GTM containers – if your site has no CMP, or a broken one, that is exactly the problem TagForge is built to fix.
The MU Plugin for Affiliate Tracking
Built this week, 348 lines, single file. Dropped into wp-content/mu-plugins/ so it loads automatically and cannot be accidentally deactivated. It captures affiliate codes from URL parameters, sets a 30-day cookie, attributes completed orders to the correct affiliate, calculates commission at 12.5% (rising to 20% after 100 referrals), and logs everything to two custom database tables — one for affiliates, one for commissions. Full audit trail. Mark-as-paid functionality in WP admin. No third-party service, no monthly SaaS fee.
Accurate, auditable, and free to run. Exactly what a bootstrapped product needs at launch.
The Child Theme and Shortcode System
The WooCommerce product pages needed to show customers exactly what they were buying — which tracking modules were included, what platform IDs were required, how to find those IDs, estimated setup time. All of that data lives as product meta, and a library of custom shortcodes renders it cleanly wherever it is needed:
[tagforge_module_chips]— the dark sidebar showing included modules as chips with a module count[tagforge_module_details]— full breakdown grouped by category (Analytics, Engagement, Advertising, Privacy, CRO) with descriptions[tagforge_id_guide]— ID instruction cards explaining format and where to find each tracking ID[tagforge_card_pills]— compact pill display for the product grid, showing the first two modules and a “+N more” count[tagforge_faq]— accessible accordion FAQ with JSON-LD schema output in<head>for rich results[tagforge_trust_badges]— the small trust row (“Pre-filled with your IDs / 7-day download link / Works with any GTM container”)
Plus field validation that runs on the add-to-cart form: checking that GA4 IDs start with G-, Google Ads IDs start with AW-, Meta Pixel IDs are numeric, and so on, with inline tooltip icons on each label explaining where to find the ID and what format it should be in.
And sequential order numbers. Because XAV-TF-001 looks better than 12847.
The AI in the Room
I used Claude throughout the build. Not to replace the thinking, the product concept, the module structure, the customer journey, the data model, the edge cases, all of that was mine. But for the code itself, Claude was the pair programmer that made it possible to move at the pace I needed.
What I found was that the concept kept evolving. Every time I got a working version of something, I would see the next thing it needed to be. The plugin went through 3.7.3 versions for a reason — not because the early versions were broken, but because the requirements kept getting sharper as the product became more real.
As the product and buying journey unfolded, I changed tack and updated the code to reflect that. The original idea was simple: standalone GTM container JSON files that customers could buy, with dummy placeholders swapped out for their real tracking IDs. But that approach was not compatible with the native WooCommerce digital download experience, so I started building a customised product buying journey instead.
As the product mix diversified, the original approach became cumbersome — hard to manage and hard for customers to follow. So the development shifted again: from a plugin that simply managed downloads, to a plugin that manages modules, stitches them together dynamically, and delivers them as timed, encrypted download links to the buyer.
That iterative process, where each working build reveals the next question, is just how software development actually goes. Having Claude as a coding partner meant I could chase those iterations without each one becoming a multi-day task.
What I also found is that the interesting work is never the code. The interesting work is knowing what to build, why it matters, and how it fits together. The code is the expression of that thinking, not the thinking itself.
What this says about WordPress
TagForge is a marketplace, a product fulfilment engine, a lead generation tool, an affiliate programme, and a content site, all running on a single WordPress installation, all talking to each other through WooCommerce hooks, custom post types, custom database tables, and a child theme that pulls it together.
The site is fast. Properly fast. WooCommerce scripts and styles are dequeued on non-commerce pages. The Elementor build is lean. The custom code does not add unnecessary overhead because it was written for purpose, not assembled from plugins that each do 80% of what you need.
This is what owning your CMS platform and customising WordPress actually means. Not just the ability to install plugins, anyone can do that. It means the ability to write code that lives inside the platform, uses its data structures, responds to its events, and extends it in precisely the direction your product needs to go. That is a capability that SaaS platforms, for all their convenience, cannot match.
WordPress has been declared dead or dying on a roughly annual basis for about fifteen years. TagForge.io is running on it. It works.
What’s next
The blog posts I actually planned are still in the queue. I will get to them. But sometimes the best thing you can publish is the thing you are actually working on, even if it is not what you had planned.
If you are building something on WordPress or want help customising WordPress to power your business requirements and hitting the limits of what off-the-shelf plugins can do, that is exactly the kind of problem XAVA exists to solve. And if you need your GTM tracking sorted without a week-long project, TagForge.io is now live.
Amit Wadhwa
A self-motivated problem solver, with a knack for helping people understand technical jargon I know WordPress. Over the past 15 years, I have broken it, put it back together and made it work. I am a self-taught WordPress expert. I am also the What Not To Do with WordPress" guy I have always been a determined problem solver, driven by the desire to understand why things break down. This natural curiosity has served me well over the last 15 years during which time I have looked at, browsed, studied and designed websites for a multitude of people and businesses.