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)

  1. In the PrestaShop back office, open Advanced Parameters → Webservice, enable the webservice and create a key. The key must be active.
  2. 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.

  1. Enable webhooks and choose a signature secret. This secret is what identifies your shop: pick a long value, unique to this shop.
  2. Register, on the PrestaShop side, the URLs shown on the tab, of the form https://<your back-office domain>/api/webhooks/prestashop/{entity} with entity = customers, products or orders.
  3. Configure the sender to put the secret in the X-Webhook-Signature header. 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.

Note

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)]
  1. Read the shop's manufacturers and suppliers. Both become vendors on the platform.
  2. 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.
  3. 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.
  4. Link products to their vendor. A product with no manufacturer or supplier (ID 0 in PrestaShop) is simply skipped. A product that references a vendor not yet known triggers its creation.
Warning

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