<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Case studies archives - eCommerce Expert</title>
	<atom:link href="https://ecommerceexpert.pl/en/category/case-studies/feed/" rel="self" type="application/rss+xml" />
	<link>https://ecommerceexpert.pl/en/category/case-studies/</link>
	<description>E-commerce consulting and audits, PrestaShop store development</description>
	<lastBuildDate>Mon, 21 Sep 2026 14:33:24 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://ecommerceexpert.pl/wp-content/uploads/2026/09/ecommerceexpert-icon-150x150.png</url>
	<title>Case studies archives - eCommerce Expert</title>
	<link>https://ecommerceexpert.pl/en/category/case-studies/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Migrating a B2B wholesaler from PrestaShop 1.6 to 8</title>
		<link>https://ecommerceexpert.pl/en/migrating-b2b-wholesaler-prestashop-16-to-8/</link>
					<comments>https://ecommerceexpert.pl/en/migrating-b2b-wholesaler-prestashop-16-to-8/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Mon, 10 Aug 2026 07:48:35 +0000</pubDate>
				<category><![CDATA[Case studies]]></category>
		<category><![CDATA[PrestaShop]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/migrating-b2b-wholesaler-prestashop-16-to-8/</guid>

					<description><![CDATA[<p>14,000 products, ten years of data and sales dependent on Google traffic. Before the migration, understanding the store's features and its existing URLs needed the most attention.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/migrating-b2b-wholesaler-prestashop-16-to-8/">Migrating a B2B wholesaler from PrestaShop 1.6 to 8</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A wholesaler in the technical sector had been running PrestaShop 1.6 since 2014. It had 14,000 products in its catalogue and ten years of order history in the database. The store needed upgrading, but organic traffic accounted for 61% of sales. Moving it therefore had to take its existing visibility into account.</p>
<h2>What had to be checked before the migration</h2>
<p>Over the years 40 modules had been installed in the store. Seven had modified code, and three were no longer maintained by their makers. The environment ran on PHP 7.1 at the end of its support, which blocked further updates.</p>
<p>The client had previously talked to two agencies. Both proposed a new store and expected organic traffic to drop by around 40% in the first six months. With Google&#8217;s share of sales at that level, the loss would have been greater than the cost of the implementation.</p>
<p>Over a decade thousands of URLs had been created for categories, filters, manufacturers and campaigns. Some still brought in customers, even though the company no longer actively used those pages. They had to be found and accounted for in the new structure.</p>
<h2>Inventory of URLs and modules</h2>
<p>I spent the first two weeks on analysis, before writing any production code. I combined data from Search Console, the sitemaps and the server logs from the last twelve months. The list covered 11,800 unique URLs with at least one visit. For each one I defined a target page.</p>
<p>I also checked what each of the 40 modules did. 22 turned out to be unnecessary, including four that duplicated the same feature. This reduced the number of elements carried over to the new store.</p>
<h2>Preparing the new version</h2>
<p>For eleven weeks I prepared the store on PrestaShop 8.1 in a separate environment. I ran the migration script many times to find unusual cases in the data and check how they were handled. The last run before the switchover, on a fresh copy of production, took forty minutes.</p>
<p>The 301 redirect map covered all 11,800 URLs. An automated check after deployment verified the server responses, the number of redirect hops and the content of the target pages. It found 340 URLs leading to empty categories. I fixed them before submitting the new sitemap.</p>
<h2>Results after the switchover</h2>
<ul>
<li>The downtime needed to launch the new version was 22 minutes.</li>
<li>The largest daily drop in organic traffic was 12% and occurred on the sixth day after the migration.</li>
<li>After 17 days traffic returned to its pre-migration level.</li>
<li>Category page generation time fell from 2.9 to 0.7 seconds.</li>
<li>The store used 18 modules instead of the previous 40.</li>
</ul>
<h2>Why the preparation mattered</h2>
<p>Understanding the old store took a large part of the work. The list of working features and URLs made it possible to plan the migration before implementation began. In this project it was precisely this preparation that helped limit the risk the earlier agencies had feared.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/migrating-b2b-wholesaler-prestashop-16-to-8/">Migrating a B2B wholesaler from PrestaShop 1.6 to 8</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ecommerceexpert.pl/en/migrating-b2b-wholesaler-prestashop-16-to-8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Payment failure after a module update</title>
		<link>https://ecommerceexpert.pl/en/payment-failure-after-module-update/</link>
					<comments>https://ecommerceexpert.pl/en/payment-failure-after-module-update/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 29 Jul 2026 07:48:35 +0000</pubDate>
				<category><![CDATA[Case studies]]></category>
		<category><![CDATA[PrestaShop]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/payment-failure-after-module-update/</guid>

					<description><![CDATA[<p>For three days an automotive store with 2,500 SKUs failed to process most payments correctly. Diagnosis and repair took six hours, and follow-up work added sales monitoring.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/payment-failure-after-module-update/">Payment failure after a module update</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>On a Thursday afternoon I received a report from an automotive parts store: there had been no orders since Monday, even though Analytics showed normal traffic. The existing contractor had tested purchases by hand and concluded that the store was working correctly.</p>
<h2>Why the manual test didn&#8217;t catch the error</h2>
<p>I spent the first hour backing up the database and files, and the second comparing logs from three weeks. The problem affected one payment method, chosen by 78% of customers.</p>
<p>On Sunday night the payment module had updated itself automatically. The new version changed the format of the gateway&#8217;s response. The store didn&#8217;t recognise the confirmation and left the order with the status &#8220;awaiting payment&#8221;, even though the operator had taken the money.</p>
<p>The client had tested purchases using a traditional bank transfer. That method worked, so the test didn&#8217;t reveal the failure. The whole diagnosis took four hours.</p>
<h2>The fix and handling orders in progress</h2>
<p>Over the next two hours I added support for the new format while keeping compatibility with the old one. This let the store correctly process earlier orders as well. I recovered 214 orders that had been stuck for three days. Customers received a message, including those who had already bought the products in another store.</p>
<h2>Why the report only came after three days</h2>
<p>The store had monitoring for page availability, response time and disk space. It did not, however, track the number of orders. The site stayed available, so the working alerts didn&#8217;t signal any problem with sales.</p>
<p>I added an SMS alert comparing the number of orders over two hours with the average for the same time window over the previous four weeks. The alert fires when orders drop below 30% of that average. Setting up the monitoring took a day of work. The cost of three days of downtime was more than a hundred times higher.</p>
<h2>What changed after the intervention</h2>
<ul>
<li>The checkout process was working correctly six hours after the report.</li>
<li>I recovered 214 orders held up by the payment error.</li>
<li>Automatic module updates were replaced with a procedure for checking changes on a copy of the store.</li>
<li>Monitoring now covers a drop in the number of orders, not just site availability.</li>
</ul>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/payment-failure-after-module-update/">Payment failure after a module update</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ecommerceexpert.pl/en/payment-failure-after-module-update/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>B2B price lists for 380 customers: changing how prices are calculated</title>
		<link>https://ecommerceexpert.pl/en/b2b-price-lists-380-customers/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Thu, 16 Jul 2026 07:48:35 +0000</pubDate>
				<category><![CDATA[Case studies]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Platforms]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/b2b-price-lists-380-customers/</guid>

					<description><![CDATA[<p>Three pricing modules gave different results in the cart and on the invoice. The analysis led to extracting price calculation and then migrating the store to Sylius.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/b2b-price-lists-380-customers/">B2B price lists for 380 customers: changing how prices are calculated</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A distributor of industrial parts served 380 active business customers. Each had their own discounts depending on the product group, purchase volume and history of cooperation. The company also used credit limits, deferred payments and orders submitted as CSV files.</p>
<p>The PrestaShop store had three B2B price list modules, bought at different times from different vendors. Each implemented part of the pricing rules but ignored what the others did. The price in the cart could differ from the amount on the invoice. Explaining a single discrepancy took a salesperson half a day.</p>
<h2>Analysis before buying another module</h2>
<p>The client wanted a quote for a fourth module that would combine the three existing ones. I proposed two weeks of diagnosis first. The description of the problem suggested that the whole way prices were calculated needed to be examined.</p>
<p>The analysis showed that the price depended on four variables: the customer, the product, previous purchases and the account balance. The modules applied these rules independently, working around the limitations of the store&#8217;s data model. Combining them did not produce a consistent result.</p>
<h2>Comparing three solutions</h2>
<p>I prepared three options with their cost, risk and expected payback period:</p>
<ul>
<li>A fourth module meant the smallest outlay, but I estimated its useful life at about a year.</li>
<li>Rewriting the pricing rules inside PrestaShop required a bigger investment and maintaining a custom workaround of the architecture.</li>
<li>A separate pricing service followed by a platform change was the most expensive, but it removed the source of the discrepancies.</li>
</ul>
<p>We added the annual cost of salespeople&#8217;s time and held-up orders to the comparison. It exceeded the difference between the options. Once that amount was taken into account, the client decided to extract pricing and migrate later.</p>
<h2>Prices first, then the whole store</h2>
<p>In the first stage I moved price calculation into a service with an API. The existing store fetched the result over HTTP. This stage took eight weeks and solved the most urgent problem while keeping sales running.</p>
<p>Ultimately the store was moved to Sylius, where the pricing rules could be described directly in the domain model. The implementation took another five months. The switchover happened after six months of history showing the pricing service running without discrepancies.</p>
<h2>Results after a year</h2>
<ul>
<li>The number of differences between the cart price and the invoice fell from a dozen or so a month to zero.</li>
<li>Adding a discount rule took one day instead of two or three weeks of waiting for the module vendor.</li>
<li>File-based orders were handled directly by the store, without an external module.</li>
<li>Tests covered 94% of the pricing logic, whose errors directly affected billing.</li>
</ul>
<h2>Why this scope was justified</h2>
<p>The decision came down to the scale of the problem and the cost of dealing with it every day. With thirty customers I would have recommended staying on PrestaShop and cleaning up the modules. With 380, the cost comparison justified the change. A migration is worth considering once you have checked whether a cheaper solution would achieve the goal.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/b2b-price-lists-380-customers/">B2B price lists for 380 customers: changing how prices are calculated</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
