<?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>eCommerce Expert</title>
	<atom:link href="https://ecommerceexpert.pl/en/feed/" rel="self" type="application/rss+xml" />
	<link>https://ecommerceexpert.pl/en/</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>eCommerce Expert</title>
	<link>https://ecommerceexpert.pl/en/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PrestaShop vs Sylius for B2B sales</title>
		<link>https://ecommerceexpert.pl/en/prestashop-vs-sylius-b2b/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 09:06:07 +0000</pubDate>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Platforms]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/prestashop-vs-sylius-b2b/</guid>

					<description><![CDATA[<p>PrestaShop or Sylius for B2B? Compare pricing rules, order process, ERP integration and development cost against the same requirements.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/prestashop-vs-sylius-b2b/">PrestaShop vs Sylius for B2B sales</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>PrestaShop is worth choosing for B2B when the processes you need can be handled efficiently with its features and maintained modules. Sylius deserves analysis when the company needs its own model for prices, customer organisation or order flow. The choice should be driven by the complexity of the rules, the integrations and the cost of several years of development. The number of business customers alone doesn&#8217;t mark the line between the platforms.</p>
<h2>What really makes a B2B store complicated</h2>
<p>Selling to businesses can look like an ordinary retail store with prices shown after login. It can also involve a customer with many branches, different buyer roles, limits, manager approval and negotiating part of the order. Both models are called B2B, but they require a different scope of implementation.</p>
<p>Before comparing platforms, describe the rules with examples. What does a customer&#8217;s employee see, and what does their manager see? Does the discount depend on the product, quantity, contract or account balance? What happens when a credit limit is exceeded? Can a salesperson change the offer, and does the customer have to approve it again? These answers define the structure of the system.</p>
<p>Also take into account the work after purchase. Partial availability, delivery from several warehouses, splitting an order and correcting an address all affect fulfilment. A choice based only on how the catalogue looks misses the place where the team may be doing the most manual work.</p>
<h2>Where PrestaShop may be enough</h2>
<p>PrestaShop offers specific prices, which can be tied to, among other things, a customer, a group and a product quantity. The vendor describes their configuration in the <a href="https://help-center.prestashop.com/hc/en-us/articles/115000586651--Create-a-specific-price">specific prices guide</a>. So the need for an individual price is not yet in itself an argument for building a more complex solution.</p>
<p>If the company has a repeatable purchase process, clearly defined price groups and an ERP integration, check this option first. You need a trial on real rules: a customer with a contract price, a quantity threshold, a promotion and a change in the number of items. See whether the result also matches after the order is passed to the sales system.</p>
<p>Additional features may require modules. For each, check the vendor, updates, compatibility with the version you use and how it works with other add-ons. Several extensions don&#8217;t have to be a problem. The difficulty arises when several independent elements try to decide on the same price or order status at the same time.</p>
<p>Don&#8217;t set the threshold at, say, a hundred or five hundred business customers. A larger number of companies using one simple rule can be easier to handle than a small group with different purchasing processes. What matters is the number of rules and records, how often they change and the response time under a given load.</p>
<h2>When it&#8217;s worth looking at Sylius</h2>
<p>Sylius is developed as an e-commerce framework based on Symfony, that is, a foundation for building and customising a commerce application. That is how <a href="https://sylius.com/about/">its maker</a> describes the project. It is worth considering in an implementation analysis when non-standard logic is a permanent part of the business and will keep evolving.</p>
<p>One example is a customer organisation with many accounts, branch budgets and several levels of approval. Another might be a cart that turns into a quote, which is then negotiated and approved. In such a project you need to describe the process states, the permissions and the events that change them. A clear model of these rules makes it easier to assess future changes.</p>
<p>This doesn&#8217;t mean that all B2B features are available out of the box in the free edition. The <a href="https://sylius.com/plus/">Sylius Plus</a> offer includes commercial extensions, including the B2B Suite and request-for-quote handling. The quote has to show what comes from the base, what from the paid package and what will be written. Features and licence terms need to be confirmed for the chosen option.</p>
<p>More freedom also means more decisions on the team&#8217;s side. You need to plan content management, integrations, the staff interface and deployments. Don&#8217;t compare a standard PrestaShop installation with an unlimited set of possibilities that have yet to be built in Sylius. Compare two ready-to-deliver proposals with the same scope.</p>
<h2>ERP integration: where the final price is set</h2>
<p>First choose the source of truth for product, stock, price and credit limit. It doesn&#8217;t have to be the same system for every kind of data, but responsibility must be unambiguous. If the ERP sets the trade terms, the store shouldn&#8217;t quietly add competing rules that the sales department can&#8217;t explain afterwards.</p>
<p>Decide how things should behave when the integration is unavailable. Can the last known price be shown? How long is it valid? Can an order be accepted, or only an enquiry? What will the customer see if the limit changed between opening the cart and confirming it? The answers should go into the requirements and the tests for both options.</p>
<p>Also check retries. If the connection drops after the order has been saved in the ERP, a retry shouldn&#8217;t create a second document. You need identifiers, logs and a way of reconciling state. A ready-made integration module is worth judging on precisely these situations, not just on successfully sending a single product.</p>
<h2>Costs that only show up during development</h2>
<p>Compare the cost of launch and the following three years. Include licences, hosting, maintenance, updates, monitoring and planned changes. Add the time of employees handling exceptions manually. If one option doesn&#8217;t support a needed process, its lower quote doesn&#8217;t yet describe the cost of running the business.</p>
<p>In PrestaShop part of the work may come down to configuring and adapting modules. In Sylius custom code or commercial packages may play a bigger role. That doesn&#8217;t mean there is a fixed price difference for every project. Check specific offers, the scope of testing and the availability of people who will maintain the implementation.</p>
<p>Ask for a quote for two changes you expect after launch. It might be a new type of discount and a second stage of order approval. The point isn&#8217;t a guaranteed price for many years, but checking which areas will need rebuilding. An architecture that works well for the first launch may turn out to be difficult for the planned direction of development.</p>
<p>Take into account the project being taken over by another team. Documentation, readable code, tests of the rules and repeatable deployment are valuable on both platforms. The popularity of a technology alone doesn&#8217;t provide a replacement if all the knowledge about prices and integrations sits with one person.</p>
<h2>Does B2B need headless</h2>
<p>Headless means separating the layer the customer uses from the system that handles commerce. It can make sense when the same processes have to feed several interfaces or when front-end development needs a high degree of independence. The need should, however, be described by a specific use case.</p>
<p>A separate front end adds areas to maintain: login, session, cart, error handling, analytics and interface compatibility. It doesn&#8217;t automatically speed up price calculation in the ERP. If the only justification is a modern look, also compare a solution without splitting the application. The graphic design doesn&#8217;t dictate the architecture.</p>
<h2>A third option: improve the current store</h2>
<p>When the problem is inconsistent rules or a slow import, start by putting them in order. A migration won&#8217;t decide for the company which price list applies and who approves exceptions. First describe the process, remove the contradictions and check whether the current platform really is the obstacle.</p>
<p>You can also extract a selected area, for example price calculation, without replacing the whole store at once. This approach needs its own analysis of availability and data consistency, but it lets you separate a specific problem from a full migration. Compare its cost with cleaning up the modules and with changing platforms.</p>
<h2>How to run the comparison</h2>
<ol>
<li>Write down the purchasing processes, customer roles and trade rules.</li>
<li>Separate the requirements that are mandatory at launch from later development.</li>
<li>Prepare sample data and orders that show the difficult cases.</li>
<li>Get quotes for both options against the same list of requirements.</li>
<li>Check a prototype of the riskiest process.</li>
<li>Compare maintenance costs, limitations and the ability to change contractors.</li>
</ol>
<p>For each requirement, note how it will be delivered and what hasn&#8217;t been checked yet. Such a table shows the risk far more clearly than a long list of &#8220;yes&#8221; marks next to features. To assess the answers, use the guide on <a href="/en/how-to-evaluate-ecommerce-agency-offer/">how to read an e-commerce agency&#8217;s offer</a>.</p>
<h2>Frequently asked questions</h2>
<h3>Is Sylius more expensive to maintain?</h3>
<p>That can&#8217;t be settled without the project scope. Custom code and licences generate costs, but so does maintaining many conflicting modifications. Compare specific processes and the development plan.</p>
<h3>Can PrestaShop handle individual prices for hundreds of business customers?</h3>
<p>The number of customers alone doesn&#8217;t rule this platform out. Check how prices are stored, the data volume and how often it is updated. You need a test of imports and purchases on a representative catalogue.</p>
<h3>What about ERP integration on both platforms?</h3>
<p>Assess the ready-made connection or the scope of building your own. What matters most are the data supported, errors, retries and responsibility for maintenance. The platform&#8217;s name doesn&#8217;t replace these arrangements.</p>
<h3>Is headless necessary for B2B?</h3>
<p>It isn&#8217;t a condition for selling to businesses. It is worth considering when there is a justified need for separate interfaces and independent development. In other cases it may increase the scope without solving the main problem.</p>
<p>If the decision depends on a few non-standard rules, start by describing them and building a prototype. As part of <a href="/en/services/ecommerce-consulting/">e-commerce consulting</a> you can compare the options before a full implementation begins.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/prestashop-vs-sylius-b2b/">PrestaShop vs Sylius for B2B sales</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PrestaShop 8 or 9: when to upgrade and when to wait</title>
		<link>https://ecommerceexpert.pl/en/prestashop-8-or-9/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 09:06:07 +0000</pubDate>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[PrestaShop]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/prestashop-8-or-9/</guid>

					<description><![CDATA[<p>When should you upgrade PrestaShop to version 9? Check module and theme compatibility, the test plan and how to switch the store over safely.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/prestashop-8-or-9/">PrestaShop 8 or 9: when to upgrade and when to wait</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Upgrading to PrestaShop 9 makes sense when the store needs a supported environment and its modules, theme and integrations are ready for the change. The version number alone isn&#8217;t enough to decide. First you need to check the compatibility of the whole store, do a trial run on a copy and work out how to roll back if a problem occurs.</p>
<h2>What version 9 changes</h2>
<p>Moving from 8 to 9 also affects the technologies the store runs on. PrestaShop 9.0 moved from Symfony 4.4 to Symfony 6.4. This change matters mainly to module authors and to people maintaining custom modifications. Code that uses older mechanisms may need adapting, even if the feature is meant to look identical to the customer. The scope of the changes is described in the <a href="https://devdocs.prestashop-project.org/9/modules/core-updates/9.0/">PrestaShop 9.0 change documentation</a>.</p>
<p>Check the server requirements for the specific release you plan to deploy. &#8220;Our hosting supports PrestaShop&#8221; is too general. You need a compatible PHP version, the right extensions, a database and enough resources to run imports and background tasks. The reference point is the <a href="https://devdocs.prestashop-project.org/9/basics/installation/system-requirements/">official requirements table</a>. Check separately the PHP serving the site and the PHP run by the task scheduler.</p>
<p>For a store owner, what matters is the result: being able to keep maintaining the system, the availability of the extensions you need and your sales processes working. Don&#8217;t assume the upgrade will by itself speed up the catalogue, fix search or simplify warehouse work. Such effects need a separate diagnosis and measurements before and after the change.</p>
<h2>The biggest unknowns are often modules and the theme</h2>
<p>In a standard installation, the scope of work is relatively easy to estimate. In a store developed over several years, the list of modules doesn&#8217;t yet tell you what really needs to be carried over. A payment module may have received a local patch, the theme may use a modified cart, and the ERP integration may reach straight into the database. Each such element has to be identified before quoting.</p>
<p>A vendor&#8217;s compatibility statement is a good start, but it applies to a specific version of their product. Check whether your licence covers access to that release and whether the update will keep your configuration. If someone has changed a module&#8217;s files, downloading a new package may wipe out those modifications. Custom code has to be compared with the original to decide which differences are still needed.</p>
<p>The theme needs a trial too. The home page may look fine while choosing a product combination, address validation or mobile payment stops working. With a bespoke theme you need the sources and instructions for building the files. With a ready-made theme, what matters is the availability of updates and the compatibility of the add-ons bundled with it.</p>
<h2>How to check where you stand</h2>
<p>Before discussing a date, prepare an inventory. For each extension, record its name, version, vendor, business function and the person responsible for maintaining it. Add information about the licence and any changes. A module nobody can describe needs checking: it may be redundant, but it may also be sending orders to the warehouse once a day.</p>
<ul>
<li>Establish the exact version of the store, PHP, database and theme.</li>
<li>Collect a list of active modules, scheduled tasks and connections to external systems.</li>
<li>Check overrides and direct changes to core files.</li>
<li>Verify access to the code, backups and extension vendors&#8217; accounts.</li>
<li>Describe any unusual rules for prices, delivery, discounts and order handling.</li>
</ul>
<p>The result should be a document that sorts elements into ready to move, needing a fix, needing a replacement or to be removed. For every unknown you need a way to resolve it. If the store has many overrides, a separate review of <a href="/en/prestashop-overrides/">overrides in PrestaShop</a> will help. Without this work, an &#8220;upgrade&#8221; may hide a rebuild of several important features.</p>
<h2>When it&#8217;s worth postponing</h2>
<p>Deploying just before your most important sales campaign increases the cost of any mistake. If there is no urgent security reason, it is wiser to prepare and test the change earlier and schedule the switchover outside the peak. A postponement should, however, have a specific date and conditions to be met by then.</p>
<p>The second reason is the incompatibility of a feature essential to sales. If the payment provider or the integration passing orders to the ERP doesn&#8217;t work, running the store on a new core achieves little. First you need a fix, a replacement or an agreed interim procedure. Don&#8217;t assume the vendor will be ready in time until you have a version you can test.</p>
<p>It is also worth combining work if the company is already preparing a theme change or a migration to another platform. Adapting a part that is about to be removed can be an unnecessary cost. The condition for such a decision is being able to keep the current store safely maintained until the next implementation.</p>
<h2>When delay makes the store harder to maintain</h2>
<p>Postponing an upgrade doesn&#8217;t stop other suppliers from changing. The host updates the environment, the payment provider changes its integration and the module vendor releases new versions. If the store needs more and more exceptions, every new feature first has to be adapted to old limitations. That effort should appear in the cost comparison.</p>
<p>Check the current support status of the release you use and its dependencies. The availability of security patches doesn&#8217;t follow from the store still taking orders. When a security issue appears, the decision on timing has to be based on its significance for the installation and the available safeguards, not only on the campaign calendar.</p>
<p>Compare two options over the same period: cleaning up and upgrading now, versus continued maintenance with a later move. In the second option, include compatibility fixes, extra testing and work that will have to be done again later. Such a comparison gives a better basis for a decision than the belief that a working store should never be touched.</p>
<h2>How to prepare a safe upgrade</h2>
<p>Start with a backup of the files and database, and a test restore. Then set up a separate test environment. Block access for outsiders and indexing, disable emails to customers, and switch payments and integrations to the appropriate test mode. A copy of production must not accidentally create real shipments or pass on duplicate orders.</p>
<p>On the copy, run the full upgrade and write down every extra step. Test the processes: guest and logged-in purchase, product combinations, discounts, delivery, payments, provider confirmations, emails and export to the ERP. Also check order cancellation and refunds. Ask a customer service employee to do their usual tasks, because not every exception is visible in the documentation.</p>
<p>Before the switchover, decide when writes will be paused, a fresh backup made and the new version launched. Agree who decides on a rollback and how payments coming in during that time will be reconciled. Returning to the old database after accepting new orders requires those orders to be secured and the data reconciled. Restoring the files alone doesn&#8217;t solve that problem.</p>
<p>Before approving the deployment, it is also worth agreeing how it will be signed off. Prepare a table with the test name, expected result, the person checking it and its status. If a case failed, describe its impact on sales. A minor visual difference and incorrect price calculation should not carry the same weight. Make the go-live decision based on this list, not on the tool&#8217;s message that the upgrade finished without errors. Keep the trial results with the project documentation so the next contractor knows what was actually verified and which limitations the company accepted.</p>
<h2>Frequently asked questions</h2>
<h3>Can the store be upgraded without downtime?</h3>
<p>Most of the preparation can be done while sales continue as normal. The switchover itself may require briefly pausing orders to keep the data consistent. A promise of zero downtime requires a specific technical solution and a rehearsal of the whole procedure.</p>
<h3>What about modules the vendor no longer develops?</h3>
<p>First check whether their function is still needed. If it is, you need to find a replacement or commission an adaptation of the code, taking the licence into account. In both cases, agree who will be responsible for fixes later.</p>
<h3>Will the upgrade affect my Google rankings?</h3>
<p>The version number itself guarantees neither an improvement nor a drop in visibility. Check URLs, content, canonical links, indexing and server responses before and after deployment. If you are also changing the URL structure, you need a separate redirect plan.</p>
<h3>How long does a major version upgrade take?</h3>
<p>The time depends mainly on the compatibility of extensions, the amount of custom code and the number of processes to test. A reliable date comes after the inventory and a trial on a copy. The time it takes to run the upgrade tool is only part of the work.</p>
<h2>Where to start the decision</h2>
<p>Ask your contractor for a list of obstacles, a test plan and a switchover procedure. Only on that basis should you approve the budget and the date. If you need help defining the scope, see <a href="/en/services/migrations-and-upgrades/">store migrations and upgrades</a>.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/prestashop-8-or-9/">PrestaShop 8 or 9: when to upgrade and when to wait</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PrestaShop vs WooCommerce: which platform to choose</title>
		<link>https://ecommerceexpert.pl/en/prestashop-vs-woocommerce/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 09:06:07 +0000</pubDate>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Platforms]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/prestashop-vs-woocommerce/</guid>

					<description><![CDATA[<p>PrestaShop or WooCommerce? Compare catalogue, integrations, B2B and maintenance costs. See which requirements decide the choice of platform.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/prestashop-vs-woocommerce/">PrestaShop vs WooCommerce: which platform to choose</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>WooCommerce is worth considering when sales are part of a WordPress-based website and you want to develop content and the store together. PrestaShop is a good candidate when the catalogue, orders and commerce operations are at the centre of the work. The final choice should follow from the requirements, the available integrations and the cost of maintaining the specific implementation. The number of products alone doesn&#8217;t settle this comparison.</p>
<h2>Start with the work the store has to do</h2>
<p>Comparing platforms only makes sense once sales have been described. A store with a few hundred products may have a complex configurator, while a catalogue of thousands of items may rely on a simple single-item purchase. In the first case the difficulty lies in the product logic, in the second perhaps in data import and search. The label &#8220;small store&#8221; hides these differences.</p>
<p>Prepare examples of real orders and show what happens to them after purchase. Who enters the product? Where does the stock level come from? Where is the invoice created? What does customer service do when a customer changes their address or orders an item that isn&#8217;t immediately available? The platform should fit these answers, not just the look of the site.</p>
<ul>
<li>Are how-to content and campaign pages an important part of daily work?</li>
<li>What types of products, variants and pricing rules does the catalogue have?</li>
<li>Which systems must the store exchange data with, and how quickly?</li>
<li>Who will deploy updates and fix failures?</li>
<li>What budget can the company allocate to maintenance after launch?</li>
</ul>
<p>On that basis, choose a few scenarios to demonstrate. Ask contractors for both options to show the same process on similar data. That tells you far more about how useful a solution is than comparing feature lists on vendors&#8217; websites.</p>
<h2>Catalogue and product variants</h2>
<p>Both platforms support products with variants. In practice you need to check how it is to work with your particular catalogue: how many combinations there are, how prices change, where images live and how stock is updated. For the team managing the product range, the time needed to correct a whole group of products may matter more than the mere existence of a feature.</p>
<p>WooCommerce provides a built-in CSV product import and export, including variable products. The scope and format of the data are described in the <a href="https://woocommerce.com/document/product-csv-importer-exporter/">importer documentation</a>. This is useful for a standard catalogue, but it doesn&#8217;t mean the fields of every additional extension are handled automatically. If a product has configuration saved by a plugin, check it separately.</p>
<p>Don&#8217;t accept an arbitrary threshold beyond which WooCommerce stops working and PrestaShop becomes mandatory. Performance also depends on database queries, filters, extension code, caching and infrastructure. Run a trial on representative data, covering search, filtering and import under traffic. An empty installation with a few products won&#8217;t answer questions about the target store.</p>
<h2>Cost: implementation, extensions and maintenance</h2>
<p>When comparing options based on open-source software, the price of the platform itself is just one item. Put analysis, theme, configuration, integrations, data migration, testing and training into the budget. Separately count hosting, updates, backups, paid extensions and support time. If you are considering a managed or subscription offer, check exactly what its price covers.</p>
<p>The same feature name can hide a very different scope. &#8220;Warehouse integration&#8221; can mean a manual file export or two-way synchronisation with error handling. A quote for a ready-made plugin isn&#8217;t comparable with building such a process from scratch. In both offers, ask for a description of update frequency, responsibility for failures and behaviour when the other system is unavailable.</p>
<p>Prepare a three-year cost: launch, expected licence renewals, maintenance and agreed development work. Add the time of employees doing manual tasks that a given option doesn&#8217;t automate. A cheap start can be a good choice if the scope is simple. It should, however, come from a deliberate limitation of features, not from leaving out the cost of running the store later.</p>
<h2>B2B sales and price lists</h2>
<p>&#8220;Supports B2B&#8221; needs clarifying. A discount for a customer group, a price agreed for a specific account, a credit limit and an order approved by a manager are different features. Write them down separately. For each, state whether it will be handled by the platform, an extension, custom code or the ERP.</p>
<p>First establish where the final price is created. If the ERP calculates individual terms, the store should receive an unambiguous result or apply agreed rules. Calculating discounts in parallel in several modules makes control difficult. A test covering a product on promotion, a customer discount and a quantity threshold will show more than a demo of a single price list.</p>
<p>Also ask for a demonstration of a change in trade terms. Check when the new price appears in the catalogue, what happens to an open cart and how the order is saved. If the purchase process involves multiple roles, negotiation or non-standard approval rules, broaden the analysis. Such a case is covered in the comparison of <a href="/en/prestashop-vs-sylius-b2b/">PrestaShop and Sylius for B2B</a>.</p>
<h2>Maintenance and updates</h2>
<p>With WooCommerce you also maintain WordPress, the theme and the site&#8217;s other plugins. With PrestaShop the dependencies include the core, the theme, modules and custom modifications. In both cases what matters is the compatibility of the whole set. It isn&#8217;t enough that a single extension is on its latest version if that update doesn&#8217;t work with the rest of the store.</p>
<p>Agree the way of working when you choose the platform: a test environment, an update schedule, a test order and a rollback procedure. Check whether backups are stored off the server itself and whether someone can restore them. These tasks need to be included in the offer, even if the store looks trouble-free on launch day.</p>
<p>The ability to change contractors also matters. Your own service accounts, repository access and integration documentation make it easier to take over the project. The availability of many specialists for a given platform won&#8217;t help if nobody receives the sources of the modified theme or a description of the deployment process.</p>
<h2>Which option fits your company</h2>
<p>If you have a substantial WordPress site, regularly publish guides and want to add standard sales, WooCommerce should be on your shortlist. One admin panel can simplify the editorial team&#8217;s work. The condition is checking whether the current theme and plugins are also suitable for running a store.</p>
<p>If you are building a site primarily around commerce and the team works daily with products, deliveries and orders, test PrestaShop on your own scenarios. Assess the availability of the specific integrations and how convenient the admin panel is for staff. A platform&#8217;s intended purpose doesn&#8217;t replace a demonstration of the features you need.</p>
<p>For standard sales and no one responsible for technical maintenance, it is worth comparing SaaS too. A subscription can simplify some duties, but you need to check integration limits, data export options and the total fees. If the company has a very unusual process, comparing only two popular platforms may, on the other hand, narrow the choice too much.</p>
<h2>A table for comparing offers</h2>
<table>
<thead>
<tr>
<th scope="col">Criterion</th>
<th scope="col">PrestaShop</th>
<th scope="col">WooCommerce</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Starting point</th>
<td>A platform focused on running a store.</td>
<td>Selling within the WordPress environment.</td>
</tr>
<tr>
<th scope="row">Content and campaigns</th>
<td>Check the editorial tools and the add-ons you need.</td>
<td>Check how the store works with the site&#8217;s theme and editor.</td>
</tr>
<tr>
<th scope="row">Non-standard B2B prices</th>
<td>Verify pricing rules, modules and ERP compatibility.</td>
<td>Verify pricing extensions and ERP compatibility.</td>
</tr>
<tr>
<th scope="row">Large catalogue</th>
<td>Test filters, import and purchase on your target data.</td>
<td>Run the same trial on comparable infrastructure.</td>
</tr>
<tr>
<th scope="row">Budget</th>
<td>Include modules, their renewals and custom modifications.</td>
<td>Include store, theme and WordPress extensions.</td>
</tr>
</tbody>
</table>
<h2>Frequently asked questions</h2>
<h3>Can a store be moved from WooCommerce to PrestaShop?</h3>
<p>Yes, but the migration requires mapping data, features and URLs. A product import doesn&#8217;t automatically move the whole store. The detailed scope is described in the article on <a href="/en/migrating-woocommerce-to-prestashop/">migrating from WooCommerce to PrestaShop</a>.</p>
<h3>Which platform is faster?</h3>
<p>Without measuring a specific implementation there is no honest answer. Compare the same scenarios, data size and load. A home page test result isn&#8217;t enough to assess filters and the cart.</p>
<h3>What about the cost of plugins and modules over longer-term maintenance?</h3>
<p>Collect the renewal terms, scope of support and update costs for each paid add-on. Add the work needed when changing supplier or losing compatibility. The bill for the first purchase doesn&#8217;t show the whole cost.</p>
<h3>Does the choice of platform affect SEO?</h3>
<p>It affects how changes are implemented, but it doesn&#8217;t replace good content and correct configuration. In both options check URLs, indexing, speed and the ability to edit metadata. When changing platforms, existing URLs need a dedicated plan.</p>
<p>If both offers look similar, commission a demonstration of the hardest process on your own data. The result of that trial can settle the choice before a bigger spend. <a href="/en/services/ecommerce-consulting/">E-commerce consulting</a> will help you put the requirements in order.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/prestashop-vs-woocommerce/">PrestaShop vs WooCommerce: which platform to choose</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>500 error in PrestaShop: how to find the cause</title>
		<link>https://ecommerceexpert.pl/en/prestashop-500-error/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 09:06:07 +0000</pubDate>
				<category><![CDATA[PrestaShop]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/prestashop-500-error/</guid>

					<description><![CDATA[<p>A 500 error in PrestaShop: where to find the logs, how to use debug mode and how to find the cause of the failure without putting new orders at risk.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/prestashop-500-error/">500 error in PrestaShop: how to find the cause</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A 500 error in PrestaShop means the server was unable to handle the request properly. The message itself doesn&#8217;t point to the cause. Before changing any settings, note the URL and the time the problem occurred, secure the current state of the store and check the logs. Only a specific log entry will let you tell a module failure apart from a problem with PHP, the database or the server configuration.</p>
<h2>Before you change anything</h2>
<p>Establish the scope of the failure. Does no page open at all, only the admin panel, or a specific checkout step? Check one example without logging in and another on a test account. Note the product used, the delivery method and the action that preceded the error. If the problem concerns payments, don&#8217;t repeat purchases blindly: first check whether the provider has already taken the money.</p>
<p>Write down recent changes. A module update, a PHP switch, a theme deployment, a product import and a change of hosting settings are all different leads. The time of the report doesn&#8217;t have to be the time the failure started. Compare it with the last successful orders and the logs, so you don&#8217;t blame the problem on a change made after it had already appeared.</p>
<p>Before intervening, make a backup of the database and files or ask your host to secure the current state. Don&#8217;t overwrite the last working backup. The database from the time of the failure may contain orders and payments that aren&#8217;t in yesterday&#8217;s backup. If disk space is short, creating a large archive on the same server may make things worse. In that case agree another way of making the backup with the administrator.</p>
<h2>Where to look for logs</h2>
<p>You may need the web server, PHP and application logs. On shared hosting, start with the logs section of the control panel. If you don&#8217;t have access to them, give support the exact URL, the time including the time zone and a description of what you did. A request saying &#8220;the store doesn&#8217;t work&#8221; leaves far more room for guesswork.</p>
<p>On a VPS the location depends on the Apache or nginx configuration, PHP-FPM and how the store is run. In a container environment some logs may go to the process output rather than a separate file. In a PrestaShop installation, also check the application log directory, usually within <code>var/logs</code>, depending on the version and configuration. No entry in one place doesn&#8217;t mean there was no error.</p>
<p>Look for the event that matches the time of the attempt. Read the first relevant exception and its surroundings, not just the last line. A missing class message may result from an incomplete deployment, and a database connection error from the database being unavailable. Keep the original excerpt for analysis. Before sharing it outside the authorised team, remove passwords, tokens and customer data.</p>
<h2>Debug mode: how to use it</h2>
<p>If the admin panel works, debug mode can be enabled in the performance settings under advanced parameters. Without access to the panel, the PrestaShop documentation describes changing the <code>_PS_MODE_DEV_</code> constant in <code>config/defines.inc.php</code>. Change the existing definition instead of adding a second one. The configuration is described in the <a href="https://devdocs.prestashop-project.org/9/development/configuration/configuring-prestashop/">official debugging guide</a>.</p>
<p>Do this on a secured copy or in an environment with restricted access. A detailed message can reveal paths, queries and configuration details. Debug mode isn&#8217;t a fix: it helps you see the cause. Once you have recorded the data you need, turn it off and check how the store behaves in normal mode.</p>
<p>If the error occurs before PHP or the application starts, PrestaShop&#8217;s debug mode won&#8217;t show anything. In that case you need to go back to the server logs and the hosting configuration. Don&#8217;t keep piling up changes just because you still see the same generic message on screen.</p>
<h2>How to tell common causes apart</h2>
<h3>PHP out of memory</h3>
<p>A message containing <code>Allowed memory size exhausted</code> indicates that the process exceeded its memory limit. Find out which action caused it. Importing a large file and an infinite loop in a module need different solutions. Raising the limit may be justified, but only after checking usage and the server&#8217;s available resources.</p>
<h3>Incompatible PHP version or extension</h3>
<p>If the failure started after an environment change, compare the PHP version with the requirements of the exact release of the store and its modules. A syntax error, a missing function or an incompatible method declaration are clues for further analysis. Restoring the previous configuration can help isolate the change, but ultimately you need a supported and compatible combination of software.</p>
<h3>A module, an override or an incomplete deployment</h3>
<p>A path to an extension in the stack trace shows where the error occurred, but not always its source. Check that the files and dependencies are complete and what changed last. When the message concerns an overridden method, look at the <a href="/en/prestashop-overrides/">overrides</a>. Simply copying a missing file from a random version can introduce another incompatibility.</p>
<h3>Cache and permissions</h3>
<p>An error writing or creating a file may result from the wrong directory owner after a deployment. Check the PHP process user and the required permissions. Don&#8217;t set <code>777</code> across the whole store. If stale cache files are the cause, rebuild them according to the procedure for your version, after keeping the logs needed for the diagnosis.</p>
<h3>No disk space or an unavailable database</h3>
<p>Check disk space and the file count limit. A full disk can prevent writing sessions, cache and logs, so the absence of a new message can itself be a symptom. For database connection errors, verify its availability and connection limits. Don&#8217;t run table repairs or change login credentials without confirming the cause.</p>
<h2>When the error appeared after an update</h2>
<p>Stop further deployments and compare the state before the change with the current one. Check the package version, whether the files are complete and whether the update changed the database. Rolling back only the code may not be enough if the new version transformed the data. The rollback plan has to cover both.</p>
<p>If the logs point to one module, disable it in a controlled way and repeat exactly the same test. In versions that provide the relevant command, you can use the PrestaShop console; check the syntax in the help of the installed release. If the application cannot start, the console may not work either. Then you need to analyse the files, dependencies and module registration.</p>
<p>Renaming a module&#8217;s directory isn&#8217;t a universal equivalent of disabling it. It can leave references to classes and configuration behind. Don&#8217;t delete the module&#8217;s tables either: they may store data needed to settle orders. After the fix, check not only the page that returned the error but also a purchase, payment confirmation and handing the order over for fulfilment.</p>
<h2>When to stop trying on your own</h2>
<p>Hand the diagnosis over to a technical person when the problem concerns order data, a suspected breach, database corruption or an update you can&#8217;t safely roll back. Do the same if you have no working backup and each further step changes the production state. More random fixes make it harder to establish the cause later.</p>
<p>Prepare a short report: store and PHP versions, the scope of the failure, when it occurred, recent changes, an example URL and a log excerpt. Add what has already been done, even if it didn&#8217;t help. Share access through a secure channel, using a separate account with the scope needed for the work.</p>
<p>Once the cause is removed, write a short note: what stopped working, which message confirmed the diagnosis, what was changed and how the fix was checked. Include whether orders from the time of the failure need handling. Such a record will help with the next report and let you see whether the problem comes back. If the failure revealed missing monitoring of a particular payment or integration, add the appropriate check to the maintenance procedure.</p>
<h2>Frequently asked questions</h2>
<h3>Does a 500 error mean data loss?</h3>
<p>No. It tells you a request wasn&#8217;t handled successfully, not what state all the data is in. The operation may, however, have partly completed, so before retrying a payment or an import you need to check the result on both sides of the integration.</p>
<h3>How do I disable a module without access to the admin panel?</h3>
<p>If your version provides a working console command, use it after checking the help. When starting the application ends in an error, what to do depends on the cause. Don&#8217;t use a random SQL query found for a different release.</p>
<h3>Why does the store work but the admin panel doesn&#8217;t?</h3>
<p>The admin panel and the customer-facing part run different pieces of code. The failure may concern an admin module, a specific view or permissions. Check the logs for the attempt to open the panel separately.</p>
<h3>Can I restore a backup myself?</h3>
<p>Yes, if you know the procedure and which data will be replaced. First secure the current state and any orders created after the backup date. The files, the database and any environment changes must match each other.</p>
<p>The most useful first step is to find the specific error in the log and link it to an action in the store. If you need support with the diagnosis, use <a href="/en/services/troubleshooting/">troubleshooting help</a> and include the information you have prepared.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/prestashop-500-error/">500 error in PrestaShop: how to find the cause</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Overrides in PrestaShop: why they break updates</title>
		<link>https://ecommerceexpert.pl/en/prestashop-overrides/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 09:06:07 +0000</pubDate>
				<category><![CDATA[PrestaShop]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/prestashop-overrides/</guid>

					<description><![CDATA[<p>How do overrides in PrestaShop affect updates? Learn how to identify modifications, assess whether they are needed and prepare tests before a version change.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/prestashop-overrides/">Overrides in PrestaShop: why they break updates</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>An override in PrestaShop can make updating harder because it changes the standard behaviour of part of the store and has to stay compatible with the new code. Not every override is a mistake, and not every one will break the next update. The problem starts when nobody knows why it was created, who maintains it and how to test the feature it is responsible for.</p>
<h2>What an override actually is</h2>
<p>This article is about overriding classes and controllers, not about changing the look of a template. This mechanism lets you replace or extend a piece of PrestaShop&#8217;s standard logic. From a store owner&#8217;s point of view it means that some operations may work differently than in a clean installation: for example price calculation or the condition that makes a delivery method available.</p>
<p>A hook is an extension point that a module attaches its own behaviour to. An override reaches into existing behaviour more directly. A module, in turn, is a way of delivering a feature and can use various mechanisms, including overrides. So the statement &#8220;we did everything in a module&#8221; doesn&#8217;t answer the question of how deep the intervention goes.</p>
<p>The PrestaShop documentation points out the limitations and the risk of conflicts between overrides, and describes alternative ways of extending the system. The choice depends on the place in the code and the mechanisms available in a given version. The reference point is the <a href="https://devdocs.prestashop-project.org/9/modules/concepts/overrides/">official description of overrides</a>. The practical conclusion: before overriding, check whether the same goal can be achieved through a provided extension point.</p>
<h2>Why an update can expose the problem</h2>
<p>Imagine a modification that takes over the calculation of the delivery fee. It was created for a specific version of the store and uses its arguments and the way it processes data. After an update, the core may pass different data, expect a different type of result or run an extra check earlier. The custom code still assumes the old flow.</p>
<p>This doesn&#8217;t always mean a blank page. The store may keep taking orders but calculate a discount differently for a selected group or skip a condition for a particular delivery method. The error only shows up with a specific cart. That is why a test that consists of opening the home page isn&#8217;t enough to confirm compatibility.</p>
<p>Copying an entire core method and adding a small change to it needs particular attention. Such a solution may also preserve old logic that the project later fixed. When updating, you have to compare not only what was added but also what changed in the original. The bigger the copy, the more behaviour has to be reassessed.</p>
<h2>When an override may be justified</h2>
<p>Sometimes the feature you need concerns a place for which the given version provides no suitable extension point. A limited override can then be a sensible choice if the alternative requires a much larger rebuild. This decision must, however, be documented and taken into account in later maintenance. The cost doesn&#8217;t end on launch day.</p>
<p>The documentation should include the reason for the change, the supported versions, the code owner and examples of the expected behaviour. You also need information about the alternatives considered. &#8220;The client needed a different price&#8221; is not enough. &#8220;For a customer with contract A, when ordering a full pack, the ERP price applies&#8221; lets you prepare a test.</p>
<p>Agree on the condition for removing the override. It may be the arrival of a suitable hook, a module replacement or dropping the feature. Without such a review, temporary code stays for years. Each next person treats it as essential because nobody is sure what will happen once it is switched off.</p>
<h2>How to check what is in your store</h2>
<p>The review covers the <code>override</code> directory, module code and a comparison of core files with the original release. Directly editing a core file is a separate kind of modification; it doesn&#8217;t have to appear on the list of overrides. That is why an empty overrides directory is no proof that the store is still standard.</p>
<p>Ask the developer for a summary that is also understandable to the person responsible for sales. For each change you should be able to see the business function, the place in the code, the source and how to verify it. A class name on its own won&#8217;t help you decide whether the modification can be dropped at the next update.</p>
<ul>
<li>Which customer or staff action does this piece change?</li>
<li>Does it come from a module, or was it written for this store?</li>
<li>Is it used, and on what data can that be confirmed?</li>
<li>Does another add-on interfere with the same area?</li>
<li>Which tests will show that the feature works after the update?</li>
</ul>
<p>Compare against exactly the release that is installed, not any PrestaShop package. Generated files, configuration and store data need separate treatment. When taking over a project, the repository history and older deployment packages help. If they are missing, you need to state clearly which findings could not be confirmed.</p>
<h2>How to clean up existing modifications</h2>
<p>The first step is to establish the current behaviour. Record sample carts, prices and delivery conditions before changing any code. For rules that affect billing, prepare expected results agreed with the person responsible for sales. An automated test without the correct business answer may only lock in the existing error.</p>
<p>Next, check which features are still needed. Some may have been replaced by a new version of the platform or a module. Others may concern an unused delivery method or a finished promotion. Removing an unnecessary modification can be simpler than rewriting it, but it also requires a trial on a copy and a dependency check.</p>
<p>For the remaining changes, choose how to implement them: an available hook, a service, decoration where the architecture allows it, or a still-maintained override. Moving code to another file isn&#8217;t enough if it keeps the same assumptions about the core&#8217;s internals. The goal is to reduce dependencies and make testing easier.</p>
<p>Work in stages. First reproduce the behaviour of one feature, compare the results and only then move on. Replacing price lists, the cart and integrations all at once makes it hard to find the source of differences. If the store update is urgent, separate the necessary adaptation from larger clean-up work that can wait for a separate date.</p>
<h2>How to test a change before deployment</h2>
<p>Test the edge cases, not just the simplest purchase. If the modification concerns a discount, include a reduced product, several items, different customer groups and changing the quantity in the cart. For delivery, check the free shipping threshold, products with different restrictions and changing the address. The list should follow from the rule that was actually changed.</p>
<p>Also compare the saved data: the order total, the values passed to the payment provider and the document sent to the ERP. A correct amount displayed on the page doesn&#8217;t guarantee that every system received the same. Record the results together with the code version so the test can be repeated later.</p>
<p>After deployment, watch the area affected by the change. Agree which discrepancies need an immediate response and who checks them. If a <a href="/en/prestashop-500-error/">500 error</a> occurs, keep the log and the test data. With a silent pricing error, value comparisons will matter more than monitoring page availability.</p>
<h2>How not to be back here in a year</h2>
<p>Write into the terms of cooperation an obligation to document core changes and overrides at every acceptance. A change should come with sources, a rationale and a test. Repository access lets you check what was actually deployed, but on its own it doesn&#8217;t replace code review.</p>
<p>At the next update, go back to the register of modifications. Check whether the new release offers a simpler solution and whether the feature still has an owner on the business side. Keeping a short, up-to-date list of dependencies is cheaper than reconstructing them during an outage.</p>
<p>Hand this register over together with the code whenever you change contractors and when planning a store update.</p>
<h2>Frequently asked questions</h2>
<h3>Is an override always a mistake?</h3>
<p>No. It can address a need for which there is no suitable extension mechanism. It must, however, be a deliberate decision with documentation and a maintenance plan.</p>
<h3>How can I tell whether the store has core changes?</h3>
<p>Compare its code with the original package of the same release and the deployment history. The admin panel alone won&#8217;t show the full picture. Assessing the differences is best left to someone who knows the project structure.</p>
<h3>How much does it cost to clean up overrides?</h3>
<p>The number of files isn&#8217;t a good basis for a quote. One price list change may take more work than several simple overrides. You need a description of the features, dependencies and test cases.</p>
<h3>Does this affect the store&#8217;s security?</h3>
<p>It can, if custom logic bypasses permission checks or validation, or preserves a piece of code that needed a fix. The mere existence of an override doesn&#8217;t prove a vulnerability. The specific implementation is what gets assessed.</p>
<p>Before a planned <a href="/en/prestashop-8-or-9/">PrestaShop update</a>, collect a list of changes and what they are for. If nobody knows what was overridden, start with a <a href="/en/services/store-audit/">technical audit</a> that translates the code into a scope of work and a risk to sales.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/prestashop-overrides/">Overrides in PrestaShop: why they break updates</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to evaluate an e-commerce agency&#8217;s offer</title>
		<link>https://ecommerceexpert.pl/en/how-to-evaluate-ecommerce-agency-offer/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 09:06:07 +0000</pubDate>
				<category><![CDATA[Consulting]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/how-to-evaluate-ecommerce-agency-offer/</guid>

					<description><![CDATA[<p>How do you compare e-commerce agency offers? Scope, acceptance, access, licences and maintenance, plus a list of questions you can send to contractors.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/how-to-evaluate-ecommerce-agency-offer/">How to evaluate an e-commerce agency&#8217;s offer</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Judge an e-commerce agency&#8217;s offer by the scope of work, how it will be accepted and the cost of later maintenance. Before comparing prices, check whether the contractors quoted the same features, integrations and data to migrate. A good offer lets you establish what you will get, how you will verify it and who will be responsible for the store after launch. A general promise of a &#8220;ready store&#8221; isn&#8217;t enough.</p>
<h2>Compare the same scope</h2>
<p>One agency may quote for configuring a ready-made theme, another for designing views and implementing them. Both items are often called &#8220;graphic design&#8221;. Similarly, &#8220;ERP integration&#8221; can mean setting up an existing add-on or building synchronisation with exception handling. At that point the price difference tells you nothing yet about value for money.</p>
<p>Prepare a shared table of requirements. For each item, ask for it to be marked: included, out of scope, optional or needs analysis. Add an outcome that can be checked. Instead of &#8220;discount handling&#8221;, write down a sample cart and the price calculation rules. Instead of &#8220;migration&#8221;, list products, customers, orders, images, content and URLs.</p>
<p>Also check the obligations on your side. Who provides descriptions and photos? Who cleans the product data? Who approves the redirect map? If the contractor expects to receive finished materials while the company expects them to be prepared as part of the price, the schedule stops being credible before work even starts.</p>
<h2>Code rights, licences and project access</h2>
<p>Separate three issues: the ability to use the software, access to its sources and the right to have someone else make changes. These are different questions. The store may work correctly, and yet its owner may lack deployment instructions, the module vendor account or the sources needed to rebuild the theme.</p>
<p>Ask for a list of the contractor&#8217;s own elements, code created to order and third-party components. Each should come with a description of the terms of use, updates and handover. Don&#8217;t assume that paying the invoice automatically settles all rights. The rules for transferring rights and licences follow from the contract and the law &#8211; in Poland, the <a href="https://eli.gov.pl/eli/DU/1994/83/ogl">Copyright and Related Rights Act</a>. It is worth having the clauses for your specific project checked by a lawyer.</p>
<p>Organisationally, the domain, hosting, payment and analytics accounts should stay under the company&#8217;s control. The contractor can get their own access. Also agree on repository access, how often the code is handed over and how documentation is stored. Your ability to take delivery of the project shouldn&#8217;t depend on whether the same developer is still working on it a year from now.</p>
<h2>How changes will be billed</h2>
<p>A fixed price makes spending easier to plan if the scope and assumptions are well described. Hourly billing gives more freedom when requirements are still being discovered, but it needs transparent reporting and limits. A mixed model can combine quoted stages with a separate budget for tasks that can&#8217;t yet be precisely defined.</p>
<p>Ask what happens when a new need comes up. There should be a point where the impact on price and deadline is assessed, and a person who approves the change. The contractor shouldn&#8217;t learn about approval from an ambiguous conversation, and the client shouldn&#8217;t learn about the cost only from the invoice. Also agree how the used and remaining budget will be reported.</p>
<p>Separate fixing a mismatch with an agreed requirement from extending a feature. For example: if an accepted scenario provides for a discount above a threshold, calculating it incorrectly needs fixing. Adding a different threshold for a new customer group may be a change of scope. A well-described acceptance example helps settle such situations without arguing over what &#8220;discount&#8221; means.</p>
<h2>What exactly &#8220;done&#8221; means</h2>
<p>Acceptance should be based on checkable scenarios. The customer adds a product, chooses a variant, places an order, pays, receives a message, and the order reaches the fulfilment system. The provider&#8217;s confirmation must be saved correctly. A screenshot of the cart doesn&#8217;t prove this process works.</p>
<p>Require a description of how mobile devices, integrations and exceptional situations will be tested. What happens when a payment is interrupted? How will the store handle a temporary loss of connection to the ERP? Who will see the information about an order that wasn&#8217;t passed on? These questions reveal scope that isn&#8217;t visible when the best-case scenario is presented.</p>
<p>If the offer includes a performance promise, ask for the measurement conditions: catalogue size, load, server configuration and the views measured. &#8220;A fast store&#8221; is an opinion, not an acceptance criterion. Also agree who provides the test data, how much time the company has to check a stage and where it reports comments.</p>
<p>At the end of a stage you should have a working result, a list of known limitations and code that matches what was deployed. If the project can&#8217;t be run outside its author&#8217;s computer, taking it over remains difficult regardless of how good the presentation was.</p>
<h2>Support after launch</h2>
<p>Separate fixing defects covered by the agreement from ongoing maintenance and further development. Ask how the contractor treats a failure after an external module update or a change in the provider&#8217;s API. Not all future problems come from implementation defects. The offer should explain who diagnoses them and on what terms the work is billed.</p>
<p>Response time is not resolution time. Acknowledging a report within an hour doesn&#8217;t mean payments are restored within an hour. Agree on support hours, an emergency channel, priority levels and the escalation path. If the store also sells at weekends, check whether the contract provides any support then.</p>
<p>In the maintenance budget include updates, monitoring, backups and restore tests. Find out who keeps track of expiring licences and certificates. Also ask about reporting: it should be clear what work was done, which problems remain and what needs the store owner&#8217;s decision.</p>
<h2>How the cooperation will end</h2>
<p>Agree the terms for handing over the project before signing the contract. You need the sources, up-to-date documentation, a list of services, deployment instructions and a description of the integrations. On top of that come the rules for handing over work that has started but not yet been accepted. The form and effects of terminating the contract need to be checked against its specific clauses.</p>
<p>Check whether time is set aside for the new team&#8217;s questions and how much it will cost. Handing over an archive without configuration information may make it impossible to recreate the environment. A good technical criterion is whether a person who hasn&#8217;t worked on the project before can get a copy running.</p>
<p>If you are changing contractors right now, a separate checklist is in the article on <a href="/en/store-abandoned-by-developer/">taking over a store from an agency</a>. It is also worth using when assessing a new offer, before any access problems arise.</p>
<h2>Questions you can send to contractors</h2>
<ol>
<li>Which features and views does the quoted price include, and which are excluded?</li>
<li>Which assumptions still need confirming before the deadline is set?</li>
<li>What exactly does each integration cover, and who is responsible for its errors?</li>
<li>What data do you migrate, and how will you check the migration is complete?</li>
<li>What materials and decisions do you expect from our team?</li>
<li>How will a change of scope be priced and approved?</li>
<li>Which scenarios will decide acceptance of the store?</li>
<li>On what data and devices will you test?</li>
<li>Which licences need renewing, and who will own the accounts?</li>
<li>What code rights and materials will we receive at the end?</li>
<li>What are the support hours and response times for a sales outage?</li>
<li>How much does maintenance cost and what does it cover over the following years?</li>
<li>What does handing the project over to another contractor look like?</li>
</ol>
<p>Keep the answers with the final version of the offer. If an important point was agreed in a meeting, ask for it to be added to the document describing the scope. After a few months both sides may remember the conversation differently, and the team delivering the project may not have been involved in the sale. A written example and acceptance criterion reduce this risk.</p>
<h2>Frequently asked questions</h2>
<h3>Does the cheapest offer always mean a smaller scope?</h3>
<p>No. The contractor may have a ready solution and experience with a similar process. Still, ask them to confirm the same requirements and maintenance costs before treating the difference as a saving.</p>
<h3>What should the agreement on code rights include?</h3>
<p>You need to distinguish bespoke code, third-party components, sources and the ability to make further modifications. Agree the scope of rights or licences and when and on what terms you obtain them. A lawyer should check the clause against your specific contract.</p>
<h3>Is it worth paying for pre-implementation analysis?</h3>
<p>Yes, if it results in requirements, risks and a scope that lets you compare options. Before buying, agree which documents you will receive and whether you can use them when choosing a different contractor.</p>
<h3>How do I check an agency&#8217;s past projects?</h3>
<p>Ask which part of the store shown they were responsible for and when they did the work. With the client&#8217;s consent, ask for a conversation about communication, billing for changes and support after launch. The look of a website doesn&#8217;t show the quality of the cooperation.</p>
<p>Before you choose, collect the answers in one document and mark the items that remain unclear. If you need an independent assessment of the scope and order of work, see <a href="/en/services/growth-and-decisions/">support with store growth decisions</a>.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/how-to-evaluate-ecommerce-agency-offer/">How to evaluate an e-commerce agency&#8217;s offer</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Migrating from WooCommerce to PrestaShop: what needs to move</title>
		<link>https://ecommerceexpert.pl/en/migrating-woocommerce-to-prestashop/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 09:06:07 +0000</pubDate>
				<category><![CDATA[Platforms]]></category>
		<category><![CDATA[PrestaShop]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/migrating-woocommerce-to-prestashop/</guid>

					<description><![CDATA[<p>Migrating from WooCommerce to PrestaShop: products, accounts, orders, redirects and integrations. See the plan for the move and the checks after launch.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/migrating-woocommerce-to-prestashop/">Migrating from WooCommerce to PrestaShop: what needs to move</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Migrating from WooCommerce to PrestaShop covers the data, the store&#8217;s features and the URLs at which customers find your offer. A product import alone isn&#8217;t enough. You need to decide how accounts, order history, variants and content will be moved, rebuild the integrations and prepare the sales switchover. First, though, it is worth checking whether changing platforms will solve the problem that prompted the migration.</p>
<h2>Is the migration really needed</h2>
<p>A slow store doesn&#8217;t necessarily need a new platform. The cause may be inefficient queries, unsuitable hosting or a specific plugin. Outdated stock levels may come from the integration, and wrong prices from inconsistent data. Moving the same rules and data to another system will keep the source of the trouble.</p>
<p>Write the problems down as observable situations. For example: an import blocks work in the admin panel, a price update takes too long, staff manually correct the data of every order. Then compare the cost of fixing the current solution with a migration. In both options there should be a defined outcome and a way of checking it.</p>
<p>A migration is justified if the target system handles the necessary processes better and the benefit outweighs the cost of moving and of later maintenance. Check this with a demonstration of the hardest scenario. The <a href="/en/prestashop-vs-woocommerce/">PrestaShop vs WooCommerce comparison</a> will also help you put the criteria in order.</p>
<h2>What needs to be inventoried</h2>
<p>First create a register of data and features. For each item, state the source, the destination, the transfer method and how it will be checked. Note whether the data is still being changed in the live store. This lets you separate the initial catalogue load from topping up orders and customers just before the switchover.</p>
<ul>
<li>Products, variants, SKU and EAN identifiers, prices, stock and relationships between items.</li>
<li>Categories, brands, attributes, images, attachments and descriptions in each language.</li>
<li>Customer accounts, addresses, groups and consent information, with its context.</li>
<li>Orders, line items, discounts, payments, statuses and document numbers.</li>
<li>Reviews, information pages, blog articles and downloadable materials.</li>
<li>Coupons, gift cards, loyalty points and extension data, if they are used.</li>
</ul>
<p>WooCommerce has a built-in CSV product export, described in the <a href="https://woocommerce.com/document/product-csv-importer-exporter/">importer and exporter documentation</a>. Such a file is a source of product data, not a complete functional copy of the store. Order, customer and extension data need a separate solution and mapping to the PrestaShop structure.</p>
<p>Automate repetitive data transfer, but agree the mapping of fields and exceptions by hand. Check a sample that also includes unusual records: a product without an image, a multi-variant bundle, a customer with several addresses or a partially refunded order. A matching record count doesn&#8217;t prove that their meaning has been preserved.</p>
<h2>Order history and documents</h2>
<p>Decide whether the full history should go into the new admin panel or whether part of it will stay in a secured archive. Either option must let staff find an earlier purchase and resolve a customer&#8217;s request. If the old system stays in read-only mode, agree who will maintain it, secure it and give authorised employees access.</p>
<p>Don&#8217;t recalculate historical orders using new price lists and current tax rules. The migrated history should keep the values recorded at the time of purchase. Check totals, discounts, delivery costs and links to payments. The order number in the new system may differ from the old one, so you need a permanent mapping between the identifiers.</p>
<p>Documents issued in the previous system should not be treated as new orders to be invoiced again. Agree how the originals can be accessed and the scope of migration with the people responsible for accounting and customer service. Also check that importing the history won&#8217;t trigger emails, automations or an export to the ERP again.</p>
<h2>URLs and Google visibility</h2>
<p>Before the move, collect URLs from the sitemap, analytics tools, Search Console and logs. For every important URL, define its new equivalent. Don&#8217;t limit yourself to products: traffic may lead to categories, guides and older campaign pages. The list should be ready before the old store stops being available.</p>
<p>Google recommends mapping URLs and using permanent redirects to the corresponding new pages. Redirecting everything to the home page in bulk may be treated as a soft 404. Internal links, canonical tags and sitemaps also need updating. These principles are described in <a href="https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes">Google&#8217;s site move documentation</a>.</p>
<p>Assess filters and pagination separately. Not every technically accessible URL should become a separate landing page. Check which views have content and meaning for the user and which merely duplicate the catalogue. Make indexing decisions deliberately instead of automatically recreating all the old parameters.</p>
<p>Before launch, check a sample and an automated response report for the whole prepared map. A redirect should lead to the right, working page without an unnecessary chain. When URLs change, visibility may fluctuate for a while; there is no guarantee of identical rankings. It is worth limiting simultaneous changes to content and structure so the effects of the move are easier to assess.</p>
<h2>Differences an import won&#8217;t handle</h2>
<p>A product variant must keep its own identifier, stock, price and link to images where they are separate. The name &#8220;size&#8221; in two systems doesn&#8217;t guarantee that the whole structure matches. Also check units, bundles and personalised products. A configuration built with a plugin may need a separate module or a rebuild.</p>
<p>Compare taxes, discounts and delivery costs on the same carts. Pay attention to rounding and the order in which promotions are applied. A matching price for a single product isn&#8217;t enough if the discrepancy only appears with several items and a coupon covering part of the order.</p>
<p>Customer accounts and passwords are two different tasks. Moving the email address doesn&#8217;t mean the new system will correctly verify the old password hash. Check the actual authentication mechanism of both installations. If a compatible password migration isn&#8217;t available, prepare a secure way to set a new password and clear communication. Never export or send passwords in plain text.</p>
<p>The blog can stay on WordPress or be moved to an agreed tool. This decision affects URLs, menus, search and the editorial team&#8217;s work. Don&#8217;t assume that the store&#8217;s target platform will automatically reproduce every feature of the current site.</p>
<h2>Sales switchover plan</h2>
<ol>
<li>Launch a secured target environment and isolate its payments, email and integrations.</li>
<li>Run a trial migration, keeping an error report and an identifier map.</li>
<li>Check the data and complete processes together with the people who run the store.</li>
<li>Repeat the trial on fresh data and measure the time needed for the final operations.</li>
<li>Set the moment when changes and orders are paused, and how payments in progress will be handled.</li>
<li>Transfer the remaining data, enable the redirects and run a production test.</li>
<li>Confirm that monitoring works and that the team is ready to handle reports.</li>
</ol>
<p>The rollback plan must state the point up to which a simple return is possible. Once the new store starts taking orders, restoring the old database without reconciling the data may lose them. Agree who will make the decision and how transactions accepted after the switchover will be secured.</p>
<h2>The first two weeks after migration</h2>
<p>Check payments, order handover, stock updates and customer reports every day. A transaction error needs an immediate response. Don&#8217;t wait for a bigger data sample if the provider takes the money and the store doesn&#8217;t save the confirmation.</p>
<p>Also watch 404 errors, indexing and traffic on important pages. When comparing conversion, take into account whether the analytics is correct and the traffic sources. A drop in recorded purchases may come from a measurement error, but that has to be confirmed with order data. Keep observations separate from hypotheses and record the fixes you make.</p>
<p>Appoint one person to collect reports after launch. For each one, record the URL, the action, the expected result and the order number if the problem concerns one. With a shared list, customer service and developers won&#8217;t be investigating the same case in parallel across several channels.</p>
<h2>Frequently asked questions</h2>
<h3>Will I lose my Google rankings?</h3>
<p>Unchanged rankings can&#8217;t be guaranteed. A URL map, proper redirects and indexing checks reduce the risk of technical errors. Changes to content or structure need an additional assessment.</p>
<h3>Will customers keep their accounts and passwords?</h3>
<p>Accounts can be moved once the data mapping is agreed. Keeping passwords depends on the compatibility of the mechanisms and the chosen migration solution. If they aren&#8217;t compatible, plan for customers to set new passwords.</p>
<h3>How long does a store migration take?</h3>
<p>It depends on the data, integrations and functional differences. The timeline should include a trial migration, fixes and testing by staff. The import itself is only one stage.</p>
<h3>Does the store have to be offline the whole time?</h3>
<p>No. Preparation and most of the trials run in parallel with sales. At the end you need to agree a short period of controlled switchover and a consistent transfer of changes.</p>
<p>Before getting a quote, prepare a list of data, integrations and your hardest orders. It will help define the real scope of the <a href="/en/services/migrations-and-upgrades/">store migration</a> and check whether changing platforms pays off.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/migrating-woocommerce-to-prestashop/">Migrating from WooCommerce to PrestaShop: what needs to move</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Store abandoned by its developer: where to start</title>
		<link>https://ecommerceexpert.pl/en/store-abandoned-by-developer/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 09:06:07 +0000</pubDate>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[PrestaShop]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/store-abandoned-by-developer/</guid>

					<description><![CDATA[<p>Taking over a store from an agency: how to secure access and backups, assess the code and hand the project to a new contractor without a hasty rebuild.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/store-abandoned-by-developer/">Store abandoned by its developer: where to start</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>When your contractor stops responding, first secure access, data and the continuity of sales. Don&#8217;t start by ordering a new store. Taking over a store from an agency requires establishing what the company actually controls, making a backup and assessing the code and integrations. Only then can you decide what to keep, what to fix and whether a bigger rebuild is needed.</p>
<h2>The first 48 hours: access and a backup</h2>
<p>Appoint one person to gather information and coordinate changes. If every employee separately asks for a password reset or changes settings, it is easy to lose track. Prepare a register of services: name, account owner, login URL, provider contact, renewal date and who has access. Don&#8217;t write passwords in a shared spreadsheet.</p>
<p>Check the domain and DNS, hosting, store admin, database, repository, email, payment providers, courier integrations and the ERP. Include analytics accounts, advertising tools and services that store backups. Store administrator access doesn&#8217;t mean server access, and being able to pay for hosting doesn&#8217;t necessarily mean control over the domain.</p>
<p>When recovering accounts, use the providers&#8217; official procedures and documents confirming the company&#8217;s rights. First check the email addresses and phone numbers used for account recovery. Once the situation is under control, give the new team separate accounts. Plan password and key changes with the services that use them in mind, so you don&#8217;t accidentally stop a synchronisation.</p>
<p>Make a backup of the files and database before any bigger changes. Also secure the logs, the scheduled task configuration and the server settings needed to recreate the store. Don&#8217;t keep the archive in a public directory of the website. If you have no technical access, ask your host to secure the data within the rights you have.</p>
<h2>What you have and what is missing</h2>
<p>Separate the working version of the store from the materials needed to develop it. The server may hold PHP files but only built and minified JavaScript and CSS. The theme sources, tool configuration or deployment script may be missing. A server backup is valuable then, but it doesn&#8217;t replace a complete project.</p>
<p>Check the repository: does it contain the last deployed version, all custom modules and the change history? Access to an empty or long-outdated repository alone isn&#8217;t enough. A comparison with production will show whether fixes were made directly on the server and whether they can be reproduced.</p>
<ul>
<li>Collect the bespoke code, theme sources and build instructions.</li>
<li>Find the list of licences, invoices and extension vendor accounts.</li>
<li>Secure descriptions of the integrations, scheduled tasks and automated exports.</li>
<li>Check whether there are instructions for deployment and restoring backups.</li>
<li>Collect open tickets, accepted requirements and unfinished work.</li>
</ul>
<p>Where something is missing, record the consequence. Missing module documentation may mean the code needs analysing. Missing sources for part of the interface may force it to be rebuilt. Lacking the right to download an add-on&#8217;s updates requires contacting the vendor. Such a description is more useful than a general verdict that the previous agency left a mess.</p>
<h2>How to assess the state of the store</h2>
<p>The new contractor should first run a copy in an isolated environment. Access has to be restricted, real email sending disabled and automations that create documents or shipments disconnected. Only on such a copy can you test updates and the effect of disabling suspicious modules.</p>
<p>The review covers the platform and PHP versions, extensions, core changes, permissions, backups and how deployments are done. In PrestaShop, <a href="/en/prestashop-overrides/">overrides</a> need separate attention. The technical list should be tied to sales: which part is responsible for prices, availability, payments and passing on orders.</p>
<p>Check the tasks that run in the background. The store may look fine even though it hasn&#8217;t updated stock for a week or isn&#8217;t receiving confirmations. For each integration, establish the direction of exchange, frequency, log location and who responds to errors. Pay attention to processes that have so far been run from the previous contractor&#8217;s infrastructure.</p>
<p>The takeover report should group the work by consequences: urgent threats to sales and data, necessary maintenance and later development. Each item needs evidence, a proposed outcome and an estimate with its uncertainty marked. The age of the store alone doesn&#8217;t justify building a new system.</p>
<h2>Formal matters to clarify</h2>
<p>Collect the contract, orders, acceptance reports, correspondence and licence documents. Check what was agreed about the code, access to sources, modifications and handover after the end of cooperation. Don&#8217;t draw conclusions about rights to the whole project solely from an invoice or from the fact that you use the store.</p>
<p>Third-party components have their own terms. A module bought by the agency may require an account transfer, a change of assigned domain or a new licence; this depends on the vendor&#8217;s rules and your arrangements with the contractor. Ask for confirmation for each specific product. A general assurance that &#8220;everything is paid for&#8221; doesn&#8217;t explain access to updates.</p>
<p>If there is a dispute over the code or a refusal to hand over materials, give a lawyer the documents and a precise list of what is missing. In Poland the basic rules are set out in the <a href="https://eli.gov.pl/eli/DU/1994/83/ogl">Copyright and Related Rights Act</a>, but assessing rights requires taking the specific contract into account. Securing the store technically and pursuing claims are separate tasks.</p>
<p>Handing the database over to a new company also requires putting the rules for access to personal data in order. Verify roles, the data processing documentation and how the previous contractor&#8217;s access is ended with the person responsible for data protection. Agree what happens to working copies; the obligations related to ending services are covered in the <a href="https://uodo.gov.pl/pl/file/2110">Polish data protection authority&#8217;s (UODO) guidance on data processing</a>. Don&#8217;t send the full database to several potential contractors just so they can compare quotes.</p>
<h2>How to prepare the handover to the new team</h2>
<p>Prepare a short document describing how the company and the store work. List the key processes, campaign dates and deployment constraints. Add a few examples of orders with unusual conditions. The person taking over the store needs to know what behaviour to preserve, not just how to run the application.</p>
<p>Organise the materials into four groups: code and deployments, services and access, business processes, and a list of problems. Hand over secrets separately in a password manager. Assign an owner to every access, and once the takeover is complete remove unnecessary permissions and unused keys.</p>
<p>Define a measurable end to the takeover stage. The new team should be able to recreate the store, carry out a controlled deployment, find failure logs and show how to contact the providers. It should also present a list of gaps that haven&#8217;t been resolved yet. A takeover doesn&#8217;t have to mean fixing all historical problems at once.</p>
<h2>How to reduce dependence on the next contractor</h2>
<p>Your own accounts and up-to-date documentation should be part of normal work, not a package prepared only when you part ways. Take delivery of the code and a description of changes after each stage. Check that the deployed version is in the repository and that it is known how to recreate it.</p>
<p>Appoint someone on the company side to be responsible for renewal dates and access. Agree on a regular backup restore test and on keeping the list of integrations up to date. Even a good contractor may change their team, end the service or be temporarily unavailable. The store should have a documented way of running in that situation too.</p>
<p>Before a new contract, use the <a href="/en/how-to-evaluate-ecommerce-agency-offer/">list of questions for an e-commerce agency</a>. Check the terms for handing over the project and handling failures after launch particularly carefully.</p>
<p>Also agree on a contact channel for the takeover period. Employees should know whom to report a missing order, a wrong price or broken shipping to, and what information to include. The new contractor needs a single list of reports with priorities. Without it, it is easy to focus on visible details while a serious integration problem stays buried in private correspondence. After the first review, agree together on the order of fixes and a date for reassessing the state of the store.</p>
<h2>Frequently asked questions</h2>
<h3>The contractor won&#8217;t hand over access. What can I do?</h3>
<p>Collect the documents, identify the missing accounts and use their providers&#8217; official procedures. In parallel, clarify with a lawyer the obligations arising from the contract. Don&#8217;t try to access other people&#8217;s accounts outside the authorisation procedure.</p>
<h3>Are the modules bought by the agency mine?</h3>
<p>It depends on the licence, how they were bought and the contract. Check whether you can use them, update them and transfer their support to another contractor. You need confirmation for each specific extension.</p>
<h3>Does the store have to be rebuilt from scratch?</h3>
<p>No. First you need to assess whether it can be recreated, maintained and developed. A rebuild may be justified, but it should follow from a comparison of costs and limitations.</p>
<h3>How long does taking over a store take?</h3>
<p>It depends on access, documentation and the degree of modification. Separate securing current sales from fully understanding the project. The timeline for the second stage can be reliably set after the first review.</p>
<p>If you need help, prepare a list of access details, a description of current problems and information about the latest backup. It is a good starting point for <a href="/en/services/troubleshooting/">taking over and stabilising the store</a>.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/store-abandoned-by-developer/">Store abandoned by its developer: where to start</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AI is changing our world</title>
		<link>https://ecommerceexpert.pl/en/ai-is-changing-our-world/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Thu, 17 Sep 2026 19:03:30 +0000</pubDate>
				<category><![CDATA[AI in e-commerce]]></category>
		<category><![CDATA[Consulting]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/ai-is-changing-our-world/</guid>

					<description><![CDATA[<p>AI is changing how code is written, how the profession is learned and how implementations are priced. I describe how I see these changes in my own work and what they mean for a store owner.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/ai-is-changing-our-world/">AI is changing our world</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Just two years ago I spent most of my working day writing code. Today much more of my time goes into describing what is to be built, checking the results and making decisions. With the help of AI, more code gets written than I used to see in a week. I have to be able to judge whether it is fit to use.</p>
<p>This change affects the whole way projects are delivered. A developer uses their experience differently, an agency has to rethink its pricing, and a client can commission work that previously didn&#8217;t fit the budget. Each of these parties, however, has a different job to do.</p>
<h2>Experience matters when judging a solution</h2>
<p>In my work, defining the task precisely matters more and more. A model needs a description of what the application is supposed to do. If the description is incomplete, the generated code may look correct and still solve a different problem from the one the client came with.</p>
<p>That is why after the code is generated I have to go back to the assumptions and assess the result. This is where I draw on experience from earlier implementations. It helps me recognise a wrong solution before it reaches the store and decide what needs fixing. The speed of writing itself matters less and less in this process.</p>
<p>You can see this in the example of the <a href="/en/project-we-had-three-months-for/">PrestaShop experts directory</a> I once worked on. Three developers built it over three months. Today I estimate that with current tools I could do the same project alone in a month, including code review. Much of the work back then was repetitive, and that is exactly what is easiest for me to speed up now.</p>
<h2>It&#8217;s harder to start with simple tasks</h2>
<p>This way of working raises the problem of learning the profession. A junior developer used to gain experience on simpler, repetitive tasks. Someone had to do them, and the junior had the chance to write the code themselves and understand how it works.</p>
<p>When a model takes over these tasks, a beginner is expected sooner to assess a finished solution. But that assessment requires knowledge that used to be gained precisely by writing. I don&#8217;t yet have a good answer to how this kind of learning should look. What I do see is that the traditional way into the profession needs rethinking.</p>
<h2>Pricing has to reflect the new way of working</h2>
<p>For years agencies based their quotes on developer hours. They estimated the time needed to complete tasks and multiplied it by a rate. The accuracy of those estimates determined how much was left of the project after costs were covered.</p>
<p>If some tasks can be done several times faster, the old calculations no longer reflect the actual effort. Some agencies lower their prices and take on more work. Others keep their prices, basing their offer more on understanding the client&#8217;s needs and taking responsibility for the implementation. There are also contractors who still price projects on the old assumptions.</p>
<p>From the client&#8217;s point of view, what counts is an explanation of what the offer includes. How long will it take to understand the needs? How will the code be produced and who will check it? What will the contractor do if a problem appears after launch? The mere statement that AI is used answers none of these questions.</p>
<h2>Lower delivery costs open up new possibilities</h2>
<p>For a store owner, shorter working time can mean a cheaper module, a warehouse integration or a checkout rebuild. Changes postponed because of cost then become possible within the current budget. It is a very practical result of how these tools have developed.</p>
<p>The saving only makes sense, however, if it covers delivering a working solution together with checking it. Code can be generated quickly without any review too. A module launched after one evening&#8217;s work may work until the first platform update or the first unusual order.</p>
<p>I expect to see more and more such cases in audits. Finding the cause of a failure still requires understanding what happened, and it doesn&#8217;t get cheaper just because the code itself was written quickly. That is why, when choosing a contractor, I would ask about tests, code review and responsibility for later fixes.</p>
<h2>First you need to know what is worth building</h2>
<p>Whatever the tools, a store needs a solution that fits the way the company works. The data model has to be designed around its processes. For an ERP integration I still need to talk to the person who knows why the batch number ends up in the notes field. I won&#8217;t find that in an example in the documentation.</p>
<p>The same goes for a migration decision. Before I advise changing platforms, rebuilding the store or keeping the current solution, I have to compare the costs of these options. AI helps with doing the work, but without knowledge of the company it won&#8217;t choose the right direction for the client.</p>
<p>That is exactly why conversations, decisions and assessing results take up more of my work today. I can build a solution faster, so I want all the more to establish first whether the client really needs it and whether the cost of building it is justified.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/ai-is-changing-our-world/">AI is changing our world</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The project we had three months for</title>
		<link>https://ecommerceexpert.pl/en/project-we-had-three-months-for/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 16 Sep 2026 19:03:30 +0000</pubDate>
				<category><![CDATA[AI in e-commerce]]></category>
		<category><![CDATA[PrestaShop]]></category>
		<guid isPermaLink="false">https://ecommerceexpert.pl/project-we-had-three-months-for/</guid>

					<description><![CDATA[<p>Three developers, three months of work and the PrestaShop experts directory. I revisit this project to show how I would build it today with the help of AI and where the difference in delivery time comes from.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/project-we-had-three-months-for/">The project we had three months for</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>When I worked on the PrestaShop experts directory, we had three months to deliver it. Three developers took part in the project, and the work went on until the last day. Today, looking at the same scope and the tools I use, I estimate I could do it alone in a month.</p>
<p>I come back to this project because it shows well how my work has changed. I know its scope and I remember what we spent our time on. So I can compare specific tasks with how I would approach them now.</p>
<h2>A simple directory, a lot of work underneath</h2>
<p>The <a href="https://experts.prestashop.com/en/agencies" target="_blank" rel="noopener">PrestaShop experts directory</a> is a catalogue of certified agencies. A store owner browses their profiles, checks their specialisations and references, and then contacts the chosen contractor. Agencies manage their profiles and take care of how they present themselves against the competition.</p>
<p>From a visitor&#8217;s point of view the principle is simple. When building it, though, every stage needs attention: data entry, validation, search and presentation of results. A filter selected on the page must match the parameters in the URL and the database query. A form should accept valid data and catch invalid data. Everything has to work across different language versions.</p>
<p>On top of that comes the admin panel. The directory&#8217;s users never see it, but building it took as much work as the public part. These are the tasks that filled week after week for us: necessary, often repetitive, and each one requiring code to be written and checked.</p>
<h2>Three people also meant time spent on collaboration</h2>
<p>Splitting the tasks let us work in parallel, but it required daily coordination. We waited for code reviews, agreed on solutions and merged changes made in different parts of the application. In the schedule this collaboration looked smaller than it later turned out to be in practice.</p>
<p>That is why three months of work by three people is much more than just writing features. That time also included everything needed to turn separate pieces into one working application.</p>
<h2>What the work would look like today</h2>
<p>Over recent months I have built myself a set of tools based on language models. I hand a large part of repetitive programming work over to them. For a directory like this I would start by describing the data structure and the rules of operation, and then use that to create the application skeleton, migrations and the admin panel.</p>
<p>These are tasks where today I think in days rather than weeks. The same goes for forms, validation and language versions: a shared description lets me generate related pieces that previously had to be written separately. My job then is to check whether the result matches the assumptions. Places where the solution departs from the typical pattern need particular attention.</p>
<p>The place of testing in the whole process has changed too. Tests used to be left until the end, if there was time, and there rarely was. Now they are written together with the code. I can move straight on to review without waiting for a second developer to finish their task.</p>
<p>Hence my estimate: one month of solo work instead of nine person-months. A large part of that earlier effort went into activities that tools now handle. Working alone also removes the time needed to coordinate three people.</p>
<h2>What I account for in that month</h2>
<p>I would still need to talk to the people who will use the directory. To agree what an agency profile contains, who can edit it and how search works. The country filter is a good example. Should it indicate where the agency is based, or the market it serves? Both options can be programmed. The choice depends on how a store owner looks for a contractor.</p>
<p>A model can suggest an answer, but without knowing users&#8217; needs it is easy to make a wrong assumption. Writing code faster doesn&#8217;t relieve me of making that decision.</p>
<p>In the estimated month I also include reading and checking the generated code. It needs at least as much attention as code written by hand. A solution that looks finished can lull you into a false sense of security, and I am still the one responsible for how it works.</p>
<h2>What this comparison says about project pricing</h2>
<p>That month is my assessment of a specific project that I know. It shows how much the contractor&#8217;s way of working matters to the cost of an implementation. For years we mainly counted the time developers needed to write a solution. Today, for repetitive tasks, that effort can be much smaller.</p>
<p>If you are commissioning a similar panel, ask the contractor to explain what they will spend the quoted time on. How do they use AI? How much work do they plan for defining requirements, and how much for checking the result? You will learn more from that conversation than from the number of hours alone.</p>
<p>This comparison also led me to take a broader look at my profession and how implementations are billed. I write about it in the article <a href="/en/ai-is-changing-our-world/">AI is changing our world</a>.</p>
<p>Artykuł <a href="https://ecommerceexpert.pl/en/project-we-had-three-months-for/">The project we had three months for</a> pochodzi z serwisu <a href="https://ecommerceexpert.pl/en">eCommerce Expert</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
