Theodore Wittmann
-
September 21, 2025
Slow stores are the e-commerce equivalent of a closed sign on your door. You won’t always notice it immediately, but your customers do—and so does your bottom line. If you run a Magento 2 store, a regular performance audit isn’t optional: it’s insurance. This post walks you through 5 clear signs your Magento 2 store needs an audit, a practical step-by-step audit methodology (free tools vs professional audit), specific technical fixes (including Varnish tuning, indexers, and how modules like Force Stock Status can help backend performance), a short anonymized case study with real metrics, and a natural call-to-action at the end.
Why a performance audit matters (quick primer)
Performance audits uncover bottlenecks that reduce conversions, increase bounce rates, and raise hosting costs. For Magento 2 stores, those bottlenecks can live in the frontend (slow assets, render-blocking JS), backend (heavy queries, slow indexers), caching layer (misconfigured Varnish or FPC),
-
September 21, 2025
Hey — if you've ever had to build a product configurator in Magento 2 for complex items (think made-to-measure furniture, modular high‑tech devices, or custom clothing), you know it's a mix of data modelling, frontend UX, price/quote integration and performance work. In this post I’ll walk you through how to build a custom "Product Configurator" module in Magento 2 step by step. The tone is relaxed — like I’m explaining to a colleague — and I’ll include concrete code snippets you can copy, adapt and run.
What we’re building
A small but solid Magento 2 module that:
- Stores configurable options and attributes for complex products
- Provides a clean AJAX/JS frontend to choose options, preview choices and calculate price
- Integrates with the cart so configured products are added with correct price and options
- Is mindful of performance (caching, lazy loading options, indexes)
High-level architecture
-
September 21, 2025
Working with multi-location inventory in Magento 2 can quickly become messy if you try to treat each location like another attribute on the product. In this post I’ll walk you through how to build a clean, performant custom "Product Locator" module that exposes availability per location to the storefront, checkout, admin, and mobile apps via a REST API — while keeping your Magento store fast and maintainable. I’ll be relaxed and practical, like I’m explaining it at the desk next to you. Code samples are included step by step.
What this module solves
Short version: you want customers and staff to know which store/warehouse has a product, show this info on product pages and the checkout, provide an admin interface to manage stocks per location, expose a REST API for mobile apps, and make sure the implementation scales without killing performance.
High-level architecture
Here’s how I recommend structuring the solution:
- Keep
-
September 18, 2025
Why build a custom Product Bundles module with dynamic pricing?
Bundles are a powerful merchandising tool: you can combine related items, increase average order value, offer volume deals and deliver flexible product offers to different customer segments. Out of the box, Magento 2 supports bundle products, but many stores need more: dynamic bundle prices based on the selected items, real-time stock-aware pricing, promotional adjustments or B2B-specific rules. In this post I’ll walk you through how to build a custom "Product Bundles" module with dynamic pricing in Magento 2 — step by step, with code snippets, architecture guidance, and practical tips for production.
What we’ll cover
- Module architecture and file structure — dependencies and Magento 2 best practices
- Front-end UI for bundle composition and real-time price updates
- Back-end price calculation: algorithms for dynamic pricing
- Integration with inventory (MSI
-
September 17, 2025
How to Build a Custom "Membership" or "Exclusive Club" Module in Magento 2
Want to add a membership or exclusive club feature to your Magento 2 store? Great — you’re in the right place. I’ll walk you through a practical, hands-on approach to building a custom membership module: architecture, roles & permissions, customer integration, pricing/catalog customizations, access restriction, and best practices for making the module maintainable and extensible. I’ll include real code snippets you can copy, tweak, and test on your dev environment.
What this post covers (quick)
- Technical architecture and file layout for a membership module.
- How roles and permissions (ACL) fit into admin management.
- Integration choices with Magento customers and customer groups.
- Techniques to customize prices and catalogs per membership status.
- Methods to secure and restrict access to exclusive content.
- Best practices
-
September 15, 2025
Introduction
In this post I’ll walk you through building a custom Inventory Forecasting module for Magento 2. I’ll keep the tone relaxed — think of this as a chat with a teammate who’s comfortable with PHP and Magento basics but new to forecasting. We’ll cover architecture, data models, integration with Magento Inventory (MSI), prediction approaches (simple statistics and ML), a custom admin dashboard, and real-world use cases (how forecasts reduce stockouts and optimize supplier orders).
Why build a custom module?
Magento 2 doesn’t ship with advanced forecasting. You can find paid extensions, but building your own gives you full control: tailor the model to your catalog, integrate with your procurement workflows, and host everything alongside your store (or call an ML microservice). For stores with specific needs — custom bundles, multi-source inventory, or special
-
September 14, 2025
Want to send customers an automatic heads-up when a product price changes in your Magento 2 store? In this post I’ll walk you through a pragmatic architecture and a step-by-step implementation to build a custom "Product Alert" system that detects price changes, stores them, triggers scheduled notifications, and tracks the conversions generated by those alerts. Think of this as pairing observers (to detect changes) with cron jobs (to batch and send alerts) and Magento transactional emails (to deliver them).
Why build a custom system?
There are plugins and hosted services that do price alerts, but a custom solution gives you:
- Full control over detection logic (exactly which price changes matter)
- Flexible rules for thresholds, frequency and product exclusions
- Native integration with your transactional email templates and UTM tracking
- Lower ongoing cost and tighter privacy control when hosted with your store
-
September 13, 2025
In this post I’ll walk you through how to build a custom “Delivery Date Selection” module for Magento 2. We’ll cover architecture, creating custom attributes and DB tables, integrating a checkout UI component, handling constraints (holidays, lead times, time slots), UX tips for both the storefront and the admin backoffice, and how to keep it compatible with stock management and other Magefine modules. I’ll keep things practical with step-by-step code examples so you can copy, adapt and ship.
Why build a Delivery Date Selection module?
Delivery date selection improves conversion and reduces support enquiries by letting customers choose a convenient delivery day and time. Most merchants need business rules: exclude holidays, enforce preparation time, allow only certain time windows and keep the module compatible with inventory/fulfillment extensions. Building your own module gives full control and tight integration with Magento 2 checkout and admin.
High-level
-
September 11, 2025
Want to add a "Restock Request" feature to your Magento 2 store so customers can sign up for notifications when an out-of-stock product returns? In this post I’ll walk you through building a custom Magento 2 module that: captures customer interest, watches stock changes using the Observer pattern, sends automatic emails when items are back in stock, exposes an admin UI to manage requests and thresholds, improves SEO for out-of-stock products, and helps you measure ROI from these notifications. I’ll be practical and show step-by-step code examples, file structure, and suggestions for tracking conversions — like I’m showing a colleague how I’d ship this in a real project.
Why build a custom restock request module?
Several extensions exist but making your own has advantages: you control behavior, integrate with your exact notification workflow, and keep your site lightweight. Also, you can tailor the admin UX to your merchandising and reporting needs. The core goals
-
September 09, 2025
Let’s build a clean, maintainable "Product Personalization" module for Magento 2 that supports engraving and custom text. I’ll walk you through architecture decisions, database layout, frontend integration (real-time preview), dynamic price adjustments, production workflow hooks, and performance best practices—step-by-step and with concrete code examples you can drop into a dev environment. I’ll keep the tone relaxed, like I’m explaining to a colleague who’s done some Magento work but hasn’t built this exact feature before.
Why you might want a custom module (and not just product options)
Magento’s built-in custom options can do simple text inputs and file uploads, but they quickly become limiting when you need:
- Complex validation (character limits, allowed characters per product),
- Server-side previews or combined images (laser layout, engraving mockups),
- Dynamic pricing rules that depend on text length, font choice, or uploaded artwork