FlowKit

Connecting PrestaShop to n8n: Webservice API, stock and e-commerce automations

Published 30 July 2026 · 5 min read

PrestaShop remains one of the most widely installed e-commerce platforms in France and French-speaking Europe, driven by its free license and self-hosting. Unlike WooCommerce or Shopify, it has no official n8n node and no native webhook pushing events in real time: automating a PrestaShop store means knowing a couple of specific details about its Webservice API. This guide covers activation, authentication, the two strategies for receiving events (polling or hook module), the available resources, and the most profitable automations.

Enabling the Webservice and generating an API key

PrestaShop's REST API is disabled by default. In the back office:

  1. Advanced Parameters → Webservice;
  2. Switch "Enable PrestaShop's webservice" to Yes;
  3. Click Add a new webservice key, generate a 32-character key (the "Generate" button, rather than a hand-picked key that's easier to guess);
  4. In the Permissions section, check exactly the resources you need (orders, customers, products, stock_availables…) and, for each one, the GET/POST/PUT/DELETE rights actually required — a read-only key for a reporting workflow, a separate write key for a workflow that modifies the store.

As with any automation key, one key per use and least privilege apply — the same reflexes as our API credential security guide.

Authenticating from n8n: Basic Auth with the key

The Webservice API authenticates with HTTP Basic Auth: the webservice key is the username, and the password stays empty. In n8n, on the HTTP Request node, create a Generic Auth → Basic Auth credential with the key as "User" and nothing as "Password". Then test a simple call:

GET https://your-store.com/api/orders?output_format=JSON

Two things to know: the API answers in XML by default — always add output_format=JSON as a query parameter to get JSON directly usable by the next n8n nodes; and a 401 error almost always signals insufficient permissions on the called resource rather than an authentication problem itself.

No native trigger: two strategies for real time

This is the real difference from WooCommerce or Shopify: PrestaShop pushes nothing outward by default. Two approaches, depending on how fresh you need the data:

  • Scheduled polling (the simplest, zero installation on the store side): a Schedule Trigger queries /api/orders?output_format=JSON&filter[date_upd]=[YYYY-MM-DD HH:MM:SS,YYYY-MM-DD HH:MM:SS]&date=1 every few minutes, processes only the records modified since the last run, and logs the last processed timestamp to avoid gaps. Proper pagination on limit avoids missing orders on high-volume stores;
  • Hook module (genuine real time): a small PrestaShop module hooked on actionOrderStatusUpdate (status change) or actionObjectOrderAddAfter (new order) that POSTs JSON to your n8n Webhook node's URL. It's a few dozen lines of PHP, but it requires developer access to the store — community nodes like n8n-nodes-prestashop8 actually bundle this mechanism so you don't have to write it yourself.

Whichever option you pick, your n8n instance must be reachable over HTTPS, and the same event can arrive more than once (module retry, overlapping polling windows) — an idempotency key on the order ID protects the rest of the workflow.

The resources: Order, Customer, Product, Stock

The Webservice API exposes most of the back office as CRUD:

  • orders: read and update status, carriers, notes;
  • customers and addresses: customer accounts and their associated addresses;
  • products: catalog, price, description, categories;
  • stock_availables: available quantities per product combination — the key resource for any stock sync;
  • carts: carts, including ones never converted into an order — the natural entry point for abandoned-cart recovery.

Every resource can be filtered with filter[field]=value syntax and sorted with sort=[field_ASC|DESC], directly in the HTTP Request node's URL.

The most profitable automations

  • Order → invoice → CRM: new order detected (webhook or polling) → PDF invoice → customer upsert into the CRM (HubSpot/Pipedrive) → Slack notification. The same foundation described in our e-commerce order automation guide;
  • Stock synchronization between PrestaShop, an ERP and any marketplaces, following the four-flow model (sales → stock, supply → store, alerts, daily reconciliation) detailed in our Shopify stock sync article — the logic is identical, only the stock_availables resource shape changes;
  • Abandoned cart recovery: Schedule Trigger on the carts resource filtered on carts unconverted for more than two hours, then the same pipeline as our AI abandoned cart recovery guide;
  • Product content and translation: AI-enriched sheets (description, SEO) automatically translated for multi-market stores, common among PrestaShop merchants selling into France, Belgium and Switzerland from a single instance;
  • Customer reviews: scheduled review request after delivery, then AI-powered analysis to prioritize which product feedback needs attention.

Making this synchronization reliable isn't cosmetic: a study by Nicole DeHoratius and Ananth Raman, "Inventory Record Inaccuracy: An Empirical Analysis" (Management Science, 2008, see on Google Scholar), measured across nearly 370,000 in-store records that 65% of stock records were inaccurate compared to physical counts — and showed that the complexity of the environment and distribution structure worsens the gap. In e-commerce, that complexity shows up as systems silently diverging — the store, the ERP, a marketplace — each one believing it holds the truth. An n8n pipeline that centralizes writes and reconciles daily, as described above, is exactly the answer to that kind of documented drift.

PrestaShop, WooCommerce or Shopify for automation?

All three can be driven from n8n, but with different friction at the entry point: WooCommerce and Shopify offer a native trigger that pushes events with nothing to code; PrestaShop requires either accepting polling (simple but with a few minutes of delay) or installing a hook module for genuine real time. Once past that step, the automation patterns — orders, stock, reviews, recovery — transfer almost identically from one platform to another, as shown in our WooCommerce + n8n and Shopify + n8n guides.

In short

Connecting PrestaShop to n8n comes down to three steps: enable the Webservice and generate a key with precise permissions, use it as Basic Auth on an HTTP Request node with output_format=JSON, then choose between scheduled polling (quick to set up) and a hook module (genuine real time). Start with the order → invoice → CRM trio and stock synchronization — the costliest risk of a poorly tooled store — before extending into cart recovery and AI-assisted product content.

FAQ

Frequently asked questions

Is there an official PrestaShop node in n8n?

No. n8n doesn't ship a native PrestaShop node the way it does for WooCommerce or Shopify. Two options: install a community node (n8n-nodes-prestashop8, for instance) on a self-hosted instance, or consume the Webservice REST API directly with the HTTP Request node — the more stable option, since it depends on no third-party maintenance.

How do I enable PrestaShop's Webservice API?

In the back office: Advanced Parameters → Webservice → turn on "Enable PrestaShop's webservice", then "Add a new webservice key". Generate the key (32 characters), and check precisely which resources and rights (GET, POST, PUT, DELETE) that key is allowed.

Does PrestaShop have a native webhook like the WooCommerce Trigger?

Not natively. The PrestaShop core doesn't push events to an external URL. For real time, you need either a lightweight module hooked on actionOrderStatusUpdate or actionObjectOrderAddAfter that calls your n8n webhook, or a dedicated webhook module from the PrestaShop marketplace. Failing that, a Schedule Trigger polling resources filtered by modification date (date_upd) covers most cases with nothing to install on the store side.

How do I get JSON instead of XML from the PrestaShop API?

The Webservice API answers in XML by default. Add the output_format=JSON query parameter to every call (e.g. /api/orders?output_format=JSON) to get JSON directly usable by n8n nodes, with no extra XML parsing step.

Bundle FlowKit Complet

€269