A ready-made module is worth choosing when it supports the required process and method of data exchange. A dedicated integration is justified when you need to adapt rules that the available solution does not implement. For the quotation, prepare a description of the systems, the flow direction, responsibility for the data, and measurable acceptance criteria.

Two data exchange systems, modular connection elements, and a paper integration scope for quotation

This guide helps PrestaShop store owners and people coordinating implementations prepare the scope of the discussion with the contractor. At the end, you will find a completed demonstration brief that can be treated as a template for your own request.

1. Describe the business outcome before choosing the technology

“Integration with ERP” may mean importing the catalogue, transferring orders, updating stock levels, retrieving invoices, or handling returns. These are different tasks, with different errors and acceptance criteria. A list of system names alone does not define the scope of work.

Start with a sentence describing the need: “Availability in the store should result from warehouse stock, and staff should not have to re-enter accepted orders into the ERP.” Then break it down into two flows. For each one, determine the starting point, the outcome, and the person who will make the decision in the event of an error.

If you only need periodic retrieval of a supplier catalogue, check the importer’s capabilities first. The XML import guide without duplicates helps organise identifiers and the update scope. An advanced integration is not a prerequisite for solving every problem with a product file.

2. Compare a ready-made module, customisation, and a separate implementation

How to match the solution scope to the process
SituationWhat to considerWhat to confirm before making a decision
Standard flow, known format, and documented functionsReady-made module with configuration.Supported fields, system versions, identifiers, and behaviour in case of errors.
The process fits, but a few fields or mapping rules are missingCustomisation or a separate adapter.Available extension points and the impact of future module updates.
Multiple sources, custom statuses, and arrangements between systemsDedicated integration with a defined scope.The owner of each field, the order of operations, and conflict resolution.
No documentation or limited access to the systemTechnical discovery first.Whether the data and required operations are available for integration at all.

Compare the entire process, not the number of items on the feature list. A module may support products but not update a specific combination field. It may send orders but not transfer the pickup point used by your checkout. These details should be included in the input examples and the expected outcome.

Customisation also requires agreeing on how the changes will be maintained. If the modification is made directly in the files of a purchased module, specify how it will be recreated or transferred during an update. Do not assume that installing the next version will automatically preserve your custom code.

3. Check access to data and operations

Ask for the API documentation or file specification, system version, scope of permissions, limits, and a test environment. The sample should include representative cases: a product with variants, different tax rates, an order to a pickup point, or a cancellation. Replace customer data with demonstration data.

The official PrestaShop documentation describes the Webservice as a CRUD API, that is, an interface for operations on store resources. However, its presence does not mean that any business process is a ready-made single-request operation. You need to verify the resources, fields, and invocation method for the specific store version and on the side of the other system.

Also include in the scope who provides access and who can renew it. A separate integration account should have the permissions needed for the agreed tasks. Do not include keys and passwords in the brief or in sample logs; provide them through a separate, agreed channel.

4. Every field should have an owner

Two-way synchronisation is an incomplete description until it is clear what to do with a simultaneous change. If an employee corrects the price in the store and the ERP sends an older value, which record should apply? The answer should result from a rule, not from the accidental order of executions.

Separate data owners at the field level. The warehouse may decide the quantity, PrestaShop the descriptions and SEO, and a separate price list the price for a selected group. Also define the meaning of a missing field, an empty value, and zero. For stock level, these three cases may require completely different behaviour.

A stable key is needed to link the product and combination. The name alone is not enough, and the SKU must actually be unique within the agreed scope. Describe what will happen after a code change, the disappearance of a product from the source, and its re-addition after a break.

5. Separate sending data from processing it

Confirmation of request acceptance may only mean that it has been placed in the queue of the other system. Agree on how you will know that the order has actually been created there: by the document identifier, status readout, or return notification. Each solution requires defining the waiting state and further control.

A timeout after sending is particularly important. No response does not prove that the recipient saved nothing. Before retrying, you need to check the result by a stable identifier or use an agreed mechanism preventing multiple execution of the same operation.

In the brief, define a limited number of retries, delays compliant with the source limits, the place where error information appears, and manual resumption. Not every error is suitable for repetition: a missing required value must be corrected, while temporary service unavailability can be handled according to the agreed policy.

6. One-page brief — example to complete

The example below concerns the fictional “Warehouse A”. The figures describe demonstration requirements, not performance measurement or a guarantee of the capabilities of a specific module. Before quotation, the documentation and availability of operations in the actual system must be confirmed.

Completed brief of a demonstration integration
Brief fieldExample answer
GoalUpdate availability and transfer accepted orders without manual re-entry.
EnvironmentPrestaShop 8.2.8, one store, PLN, catalogue of 4000 products; exact theme, modules, and PHP to be confirmed in the copy.
External systemWarehouse A with REST documentation and a test environment; API version and status read operation to be confirmed.
Direction and fieldsWarehouse → store: availability of products and combinations. Store → warehouse: items, addresses, delivery, and order identifier.
Data ownerThe warehouse determines quantity; the store retains descriptions, images, and SEO. Prices outside the scope of the first stage.
LinksPermanent product and warehouse variant identifier stored in the mapping. Unrecognised items go for clarification.
Frequency and loadRequirement: check stock changes every 15 minutes, approximately 200 orders per day. Peak size and acceptable delay to be agreed.
Condition for transferring the orderAgreed store status indicating acceptance; creating the cart alone does not start the export.
Confirmation and errorsSave the document identifier in Warehouse A. After a timeout, check the result before retrying. Report repeatable errors to the operator.
AcceptanceOne order after retry, correct variants and addresses, control of an older message, documented resumption after failure.
Outside the first stageInvoices, returns, B2B prices, new products, and additional stores. Each area requires a separate decision.
ResponsibilityThe store owner approves the rules; the warehouse provider makes the API available; the contractor delivers the mapping, acceptance procedure, and operating instructions.

7. Enter acceptance criteria into the scope before quotation

Good acceptance covers both the successful flow and situations that require a decision. Check duplicate delivery of the same message, timeout after saving, unknown combination, missing address, older stock update, and resumption after interruption. For each case, define the outcome and the method of confirming it in both systems.

Also agree separately on the first launch: linking the existing catalogue, migrating identifiers, the first full run, and the switchover moment. An integration that works on new data does not automatically solve the problems of historical records.

In the quotation, separate API discovery, implementation, data clean-up, deployment, and maintenance. Specify who responds to an external system version change, expired access, and operational errors. If the project also includes a store version change, prepare separately the scope of the PrestaShop update.

Next step: send the brief as part of PrestaShop development and integration. Describe the systems, the direction of exchange, and the expected outcome. On this basis, it is possible to verify the fit of a ready-made solution and determine the scope requiring separate implementation.

Prepared on 13/09/2026. Technical basis: official PrestaShop 9 Webservice documentation. The brief is a demonstration example for store 8.2.8; specific API resources, versions, and limits require confirmation in the target environment. The stated volumes are not the result of a performance test.

See the author's articles
Patryk Marek

Patryk Marek — owner of PrestaDev.pl and a developer specializing in PrestaShop. For many years, he has been involved in creating, developing, and maintaining online stores. He combines work on store and module code with the configuration of the server environment in which these solutions operate.

He designs and develops PrestaShop modules, customizes existing features, and prepares integrations with wholesalers and external services. He works on product data import and updates, catalog management automation, the order process, and tools supporting the store owner's daily work.

His experience also includes store updates and migrations, error diagnosis, performance analysis, and the configuration of servers and services required for PrestaShop to operate. When solving problems, he takes into account the dependencies between modules, the theme, PHP, the database, and hosting settings.

On the blog, he shares knowledge gained from many years of programming practice and working with the technical backend of stores. The guides focus on specific problems, ways to verify them, and the limitations of the described solutions. They help store owners and technical specialists prepare changes, assess their scope, and verify the result.

Comments (0)

No comments at this moment

New comment

You are replying to a comment