Online B2B sales has different requirements than B2C. The buyer knows product SKUs, has negotiated prices, buys wholesale, needs invoices with deferred payment terms and wants to place orders quickly – without going through the entire purchase flow every time. Magento 2 Commerce has dedicated B2B features that cheaper platforms simply do not have.
The shop was generating duplicate orders – a customer clicked “Order” once but two identical orders were created with double payment. The problem affected ~2% of orders, mainly on slow internet connections. Fix time: 6 hours.
Customers could not find products through the search engine even though products were visible in categories. Searching by SKU, name and description returned no results. The problem grew over 2 weeks after migrating to a new server. Fix time: 2 hours.
Store conversion is dropping – this is one of the most common alarm signals that store owners bring to specialists. The problem is heterogeneous: the same phenomenon can have a dozen different causes, and diagnosis without access to data is impossible. Below I describe the most common causes and how to tell them apart.
Varnish was installed and configured, but every request was hitting PHP – hit rate was 0%. The server was overloaded despite Varnish. The problem was in wrong VCL configuration and session cookies. Fix time: 4 hours.
Fibers arrived in PHP 8.1 as a cooperative multitasking mechanism – the ability to suspend and resume a function at any point. These are not threads or processes – a Fiber runs in the same PHP thread but allows switching between tasks without blocking. I show how Fibers work, where they make sense, and how async libraries (ReactPHP, Amp) use them under the hood.
Importing 10,000 products through the admin panel ended with Allowed memory size exhausted after about 3,000 products. The import ran for 40 minutes without completing. Fix time: 3 hours.
Customers were not receiving order confirmations. The shop was sending emails from local sendmail which was being blocked by mail servers as spam. 95% of emails ended up in the Spam folder or were rejected. Fix time: 2 hours.
A custom payment method in Magento 2 is one of the more complex modules to write from scratch. It requires implementing the MethodInterface, configuration in system.xml, JS templates for checkout, and handling return webhooks from the gateway. I show the complete module structure integrating a fictional payment gateway – from authorisation through capture to refund handling.
Server overloaded, nginx logs full of requests to /admin. Bots tried to log into the admin panel for 72 hours – 50,000 attempts. One admin account had a weak password. Response time: 30 minutes, hardening: 2 hours.
