PrestaShop synchronization
PrestaShop is the sales channel; the platform holds authority over stock. Three flows feed the platform from your shop:
- the order sync, every 3 h;
- the product sync, every 3 h, with vendor reconciliation;
- real-time webhooks, which apply exactly the same import, one event at a time.
This page covers what to configure, what each flow imports, and what it does not import: stock.
Configuring the connection
Everything is set in the back office, on the PrestaShop configuration page
(/manage/integrations/prestashop/settings).
1. Connect the shop ("API & Connexion" tab)
- In the PrestaShop back office, open Advanced Parameters → Webservice, enable the webservice and create a key. The key must be active.
- In Inklura, add a PrestaShop remote site with the shop URL and that key.
The platform reads customers, orders, products, categories, manufacturers and suppliers from your shop, read-only, through the Inklura synchronization module installed on the shop. Every read is authenticated with this key.
2. Enable webhooks ("Webhooks" tab)
Webhooks remove the wait for the next sync: an order placed on the shop is taken into account within seconds.
- Enable webhooks and choose a signature secret. This secret is what identifies your shop: pick a long value, unique to this shop.
- Register, on the PrestaShop side, the URLs shown on the tab, of the form
https://<your back-office domain>/api/webhooks/prestashop/{entity}withentity=customers,productsororders. - Configure the sender to put the secret in the
X-Webhook-Signatureheader. The secret is sent as is: it is not an HMAC signature of the body.
Each call is a POST (Content-Type: application/json) whose body holds a batch of
events:
{
"events": [
{ "entity": "orders", "action": "update", "id": 1234, "timestamp": "2026-01-15T10:30:00+01:00" }
]
}
| Field | Required | Description |
|---|---|---|
id |
yes | PrestaShop ID of the item (number or string) |
action |
yes | create, update or delete |
entity |
no | If present, must match the {entity} of the URL |
timestamp |
no | Event date (ISO 8601), copied into the log |
Events are processed in order. For create and update, the platform reads the item
back from the shop: the body does not need to carry its data. An event without id or
action is marked as failed in the results, without blocking the next ones.
Example call:
curl -X POST "https://<your back-office domain>/api/webhooks/prestashop/orders" \
-H "Content-Type: application/json" \
-H "X-Webhook-Signature: <your secret>" \
-d '{"events":[{"entity":"orders","action":"update","id":1234,"timestamp":"2026-01-15T10:30:00+01:00"}]}'
200 response:
{
"success": true,
"entity": "orders",
"events_processed": 1,
"results": [
{
"event_id": 1234,
"action": "update",
"success": true,
"processing_time_ms": 412,
"errors": [],
"warnings": []
}
]
}
The response also carries total_processing_time_ms, timestamp and session_id. A
failed event has success: false and its cause in error or errors.
| Response | Meaning |
|---|---|
200 |
Batch processed; check each event's success in results |
400 |
Unknown entity, invalid JSON, missing events array, or an event whose entity does not match the URL. In that last case processing stops at that event: the ones before it have already been processed. |
401 |
Missing secret, or a secret that matches no configured shop |
429 |
More than 600 requests per minute for the same shop; retry after the delay given by the Retry-After header (in seconds) |
500 |
Unexpected error; resend the batch later |
A GET request on the same URL returns a description of the endpoint (accepted actions,
URL, method, authentication), which is a handy way to check the address.
Every event received is logged (received, processing, completed or failed, with its
processing time). The log is available at /manage/integrations/prestashop/webhooks.
The flows at a glance
| Flow | Cadence | Imports |
|---|---|---|
| Order sync | every 3 h, orders from the last 40 days | Customers, orders, order lines |
| Product sync | every 3 h, recently changed products | Products (prices, references, vendor links), vendors, categories |
| Webhooks | on every event | The same as the syncs, one item at a time |
The scheduled syncs catch anything a webhook missed. Where these syncs sit in the day is described on the daily timeline.
Order sync
The order sync imports orders from the last 40 days, with their customers and lines. Each order is keyed on its PrestaShop ID, and each line on a stable key: a new sync updates the existing order and lines instead of creating duplicates.
The order sync does not decrement stock
Importing an order removes nothing from stock. Stock goes down on delivery:
- when you validate the delivery or the round in the back office, when it happens (the normal gesture);
- otherwise through automatic validation, which seals forgotten deliveries 12 h after their planned date.
An imported order does count straight away as demand: it feeds the supplier-order calculation. See Write paths and Supplier orders.
Product sync
For each product, the sync imports: name, description, reference, sale price, purchase price (the cost, used for stock valuation), weight and dimensions, SKU, tax rate, manufacturer, default vendor, categories, bundle components and classification. The fields PrestaShop carries are updated; the extra data the platform attaches to a product (for example whether its stock is trusted) is kept.
Stock stays managed by the platform
The product sync does not change the stock of existing products: the platform's ledger holds authority. A new imported product starts at 0; enter its real stock in the back office (manual movement or physical count), so every unit in stock has its journal line.
If your shop displayed fictional stock (for example a large number so sales are never blocked), do not copy it over as is. The Stock gaps screen in the back office helps spot inflated stock before it skews supplier orders.
Vendor reconciliation
On every product sync, the platform aligns its vendors with the shop's before linking products:
flowchart TD
A["Product sync"] --> B["1. Read PrestaShop<br/>manufacturers and suppliers"]
B --> C["2. Update the active status<br/>of known vendors"]
C --> D["3. Create vendors<br/>missing from the platform"]
D --> E["4. Link each product<br/>to its vendor"]
E --> F[(Products linked to vendors)]
- Read the shop's manufacturers and suppliers. Both become vendors on the platform.
- Status: if a vendor was enabled or disabled in PrestaShop, only that status is updated; the rest of the vendor record (contacts, send slots, vendor-portal access) is kept.
- Create missing vendors. A company registered as both a manufacturer and a supplier under the same name creates a single record; under two different names, it creates two.
- Link products to their vendor. A product with no manufacturer or supplier (ID
0in PrestaShop) is simply skipped. A product that references a vendor not yet known triggers its creation.
In PrestaShop, manufacturers and suppliers are numbered separately: manufacturer #110 and supplier #110 can be two different companies. The platform always keeps them apart. If a product looks linked to the wrong vendor, first check in PrestaShop whether it is linked to a manufacturer or a supplier.
To avoid duplicates, keep the same name for a company registered on both sides.
Real-time webhooks
Webhooks apply the same import as the scheduled syncs: a product received by webhook is handled exactly as by the product sync, an order as by the order sync. They change the frequency (on every event instead of every 3 h), not the result.
After each product or order event, the affected supplier orders are usually recomputed within a minute. An order imported by the scheduled sync is taken into account at the latest on the next supplier-order generation pass (every 30 min).
Deletions
A delete event never removes data on the platform:
| Deleted in PrestaShop | Effect on the platform |
|---|---|
| Product | Deactivated and flagged as deleted from PrestaShop |
| Order | Cancelled; its pending stock forecasts are cancelled, movements already applied stay. Supplier orders are recomputed right away to release the demand. |
| Customer | Flagged as deleted from PrestaShop |
See also
- Overview: the stock and ordering model on one page
- The stock ledger: the journal that holds authority
- Write paths: who may change stock, and how
- Supplier orders: the ordering these syncs feed
- Daily timeline: the day's scheduled tasks
- Safety nets: consistency checks
- Configuration: engine settings