Analytics counters do not belong in theme files
A tracking snippet pasted into a template disappears with the next theme update, competes with the page for the browser, and double-counts when someone pastes it twice. All three have the same fix.
A tracking snippet pasted into a template disappears with the next theme update, competes with the page for the browser, and double-counts when someone pastes it twice. All three have the same fix.
Digital goods delivered by hand are limited by working hours and protected only by attention. Moving delivery onto order events changes what the system guarantees, and the API is what stops a second channel becoming a second implementation.
A bulk email run that crashes halfway is either restarted from the beginning, mailing everyone twice, or tracked with a cursor that goes stale. There is a third option: compute who still needs the message instead of recording it.
Reselling means your prices depend on someone else changing theirs. Fetching on page load takes your shop down with theirs; a nightly export goes stale. The middle path is a cache with a pricing strategy behind it.
Pasting a chat widget into a theme template works until the theme updates, the settings need changing, or the widget adds a database query to every page. Three small decisions fix all of it.
When the payment gateway is contracted to a different site, the buyer leaves and you have to learn the outcome somehow. The two ways this integration usually fails are an unauthenticated callback and two order records that drift apart.
An OAuth callback can fire twice for one sign-in, and a naive handler creates two accounts for one person. Here is why it happens, why checking for an existing user does not fix it, and how claiming the auth code in a lock table does.
When fulfilment depends on a code that changes every thirty seconds, reading it off a phone does not scale. How to expose current codes to a shop and its operators without spreading the TOTP secret across the system.
WordPress plugins ship their own vendor directories, and PHP loads whichever version was registered first. Why that breaks the other plugin, and why build-time namespacing is the only fix that survives contact with a real site.
Complete WooCommerce maintenance including PHP 8.0 upgrade, product search restoration, plugin compatibility fixes, and security audit, executed during off-peak hours to minimize downtime.
I am available for contract-based collaboration. If you have an interesting project idea, schedule a call via Calendly.
Schedule a 30-min call