Zeyvro n8n Connector for PrestaShop: documentation

Version 1.3.9 · Updated on · Tested on PrestaShop 8.0.5, 8.1.7, 8.2.6, 9.0.0 and 9.1.3 · PHP 8.1 to 8.4

Documentation for Zeyvro n8n Connector: how to install it, which events your store sends to n8n and in what format, how to check in n8n that they come from your store, what n8n can ask the store through the inbound webhook, and what to do when something doesn’t arrive.

What the module does

It connects your PrestaShop store and n8n both ways, without coding the request or the signature.

  1. 8 outbound events. New order, order status change, new customer, updated customer, new product, updated product, stock change and cart.
  2. HMAC signature. Every request carries the X-Zeyvro-Signature header and, if you set one, a fixed token in X-Webhook-Token.
  3. Per-event toggles. Turn on only the events your workflow uses.
  4. Inbound webhook. n8n can update stock, change an order’s status, create a customer or look up an order.
  5. Log and resend. Every request is logged with its HTTP code, and failed ones can be resent from the back office.
  6. Connection test. A button sends a test event and shows the HTTP code your n8n returns.

Installation

  1. Back office → Modules → Module Manager → Upload a module.
  2. Select zeyvro_n8nconnector-1.3.9.zip and wait for it to finish.
  3. Click Configure on the module. The module also adds Zeyvro → n8n Connector to the menu, where the send log lives.

There is no key to enter. The module works as soon as it is installed: no activation key.

On install it leaves the module enabled, all 8 events checked, the send log on, 1 attempt per request and a generated secret for the signature. All that’s missing is your n8n webhook URL.

Configuration

The module’s Configure page starts with a collapsible quick guide and five figures: total sent, successful, errors, today and success rate.

General settings

FieldWhat it does
Enable moduleIf unchecked, no events are sent to n8n.
n8n Webhook URLThe Production URL of the Webhook node in your workflow (POST method), the one containing /webhook/.
Static token (optional)If filled in, every request adds the X-Webhook-Token header with that value, on top of the signature.
Retries on failure1, 2, 3 or 5 attempts per request, waiting 1 s, 2 s and 4 s between attempts. With 1 there is no retry.
Save delivery logStores every request (payload, code and status) in the log. Without it there is nothing to resend.

Active events

One checkbox per event, with the PrestaShop hook that fires it. Only checked events are sent.

Incoming webhook

Shows the URL n8n must call, the secret requests are signed with (only a SuperAdmin can see it, with the Show and Copy buttons) and the list of available actions. Regenerate secret creates a new one: from then on your workflows must sign with it or the store rejects them.

Connection test

Send test webhook sends a test event to your URL and shows the HTTP code n8n answers with. A 200 is what you want. Save the settings before testing: the test uses the saved URL.

Events it sends

EventPrestaShop hookWhat it carries
order_createdactionValidateOrderOrder (id, reference, status, totals, shipping, currency, payment method, date and product lines), customer and delivery address.
order_status_changedactionOrderStatusUpdateOrder with its new status, total and date, and the customer.
customer_createdactionCustomerAccountAddCustomer: id, email, first name, last name, title, birthday, newsletter, sign-up date and groups.
customer_updatedactionObjectCustomerUpdateAfterThe same customer data, already updated.
product_addactionObjectProductAddAfterProduct: id, name in the default language, reference, price, active, available quantity, categories and dates.
product_updateactionObjectProductUpdateAfterThe same product data, already updated.
stock_updateactionUpdateQuantityid_product, id_product_attribute, new quantity, difference and, if it comes from an order, its id.
cart_updatedactionCartSaveCart (id, total, products) and customer. Only carts of signed-in customers.

The cart event is sent once PrestaShop has assigned the cart to the visit. If it hasn’t yet, it is sent at the end of that same request. If it can’t be built, the page carries on and the error goes to the log.

Request format

Each event is a POST with a JSON body to the configured URL:

{
  "event": "order_created",
  "source": "prestashop",
  "shop": "Your store name",
  "timestamp": "2026-09-29T10:15:00+02:00",
  "data": { "order": { … }, "customer": { … }, "shipping_address": { … } }
}

Headers of every request:

HeaderValue
Content-Typeapplication/json
X-Zeyvro-EventThe event name, for example order_created.
X-Zeyvro-SignatureHMAC-SHA256 of the exact body with your secret, in hexadecimal.
X-Webhook-TokenYour static token, only if you filled it in.

Each attempt waits at most 3 s to connect and 8 s in total. A request counts as delivered if n8n answers with a 2xx code.

Checking in n8n that a request is yours

There are two ways, and you can use both at once:

  • Static token (the simplest). Fill in Static token in the module. In the n8n Webhook node, choose Header auth and create the credential with the name X-Webhook-Token and that same value. Requests without the token are rejected before they reach your workflow.
  • HMAC signature. In n8n, compute the HMAC-SHA256 of the received body, exactly as it arrives, with the secret shown under Incoming webhook, and compare it with X-Zeyvro-Signature. It must be the exact body: turn on the Webhook node’s Raw Body option, because if you turn it back into JSON before signing it, the signature won’t match.

Inbound webhook: from n8n to the store

Copy the URL from the module’s Incoming webhook panel. n8n calls it with an HTTP Request node:

  1. Method POST and a JSON body with action and data.
  2. An X-Zeyvro-Signature header with the hexadecimal HMAC-SHA256 of that exact body, signed with your secret.
  3. Send as the body the same text you signed.
{ "action": "update_stock", "data": { "id_product": 12, "id_product_attribute": 0, "quantity": 30 } }
Actiondata fieldsAnswer in result
update_stockid_product (required), id_product_attribute (0 = product without combination), quantityupdated, id_product, quantity
update_order_statusid_order and id_order_state (required)updated, id_order, new_status. It is added to the order history.
create_customeremail (required), first_name, last_namecreated, id_customer, email. The customer is created active, with a random password.
get_orderid_order (required)id, reference, total, status, date

To test the connection without signing anything: a GET request to the URL with ?action=ping returns the module status and version.

Responses:

  • 200: {"status":"ok","result":{…}}.
  • 400: empty body or no action.
  • 401: the signature doesn’t match. The store records it in the PrestaShop log with the IP.
  • 405: the request isn’t a POST (except the ping).
  • 500: the action failed, for example an order that doesn’t exist, an email already registered or an invalid name. The body carries {"error":"…","status":"error"} with the reason.

Send log

Menu Zeyvro → n8n Connector, or View logs from the settings.

  • Outgoing webhooks: event, HTTP code, attempts, status, error and date, 30 per page. Failed requests have a Resend button that sends the same data to the same URL again.
  • Incoming webhooks: the last 20 requests from n8n, with their action, status (received, processed or error) and result.

The outbound log is only written with Save delivery log on, which it is after installing.

How it works inside

The module listens to the 8 hooks in the events table and to displayBackOfficeHeader, which loads its styles only on its own pages. Data lives in two tables of its own: zeyvro_n8n_log (outbound requests) and zeyvro_n8n_incoming (requests from n8n). Settings are 14 ZN8N_* keys.

Each event is sent when it happens, within the same request: the order one, when the order is confirmed. If n8n doesn’t respond, the store waits at most 8 s per attempt (3 s to connect) and carries on; with more than one attempt, it waits 1 s, 2 s and 4 s between them. The cart event is the exception: if the cart isn’t ready yet, it is sent at the end of the request.

Updating, uninstalling and support

  • To update, upload the new ZIP from Modules → Upload a module, without uninstalling. Settings, secret and log are kept.
  • When you uninstall, the module removes its hooks and its menu tab but keeps both log tables and its 14 settings, in case you reinstall.
  • Technical support by email: hola@zeyvro.com.

Download the PDF guide

Troubleshooting

The test doesn’t return 200

Check that the URL is the Webhook node’s Production URL, not the Test URL (that one only listens for 120 s after clicking Listen for test event), that the workflow is published in n8n and that the node accepts POST. If the code shows 0, the store never connected: the error next to it says why (DNS, certificate or timeout). Save the settings before testing again.

n8n rejects requests on authentication

If you use the static token, the value in the module and in n8n’s header authentication must be identical, and the header name must be X-Webhook-Token. If you check the signature, compute it over the exact body received, without turning it back into JSON.

The inbound webhook answers 401

The signature doesn’t match. Check that you sign with the current secret (if you regenerated it, the old one no longer works), that the result is hexadecimal and that the body you send is exactly the text you signed.

The inbound webhook answers 500

The store received the request but couldn’t perform the action. The reason is in the error field of the response and in the Result column of the incoming webhooks: a required field is missing, the order doesn’t exist, the email already has an account, the name fails PrestaShop’s validation or the action doesn’t exist.

An event doesn’t arrive

Check, in this order: that the module is enabled, that the URL is saved, that the event is checked under Active events and, in the send log, whether it went out and with which code. The cart is only sent for signed-in customers.

PrestaShop 9.1 says “cannot be updated this time” when uploading the ZIP

It happened when updating from 1.3.5 or earlier: the 9.1 core saw the upgrade scripts the module had already run as duplicates. Fixed in 1.3.9. It doesn’t happen on 8.x or 9.0.

Version history

  • 1.3.9 · 2026-09-27 — Fixes the PrestaShop 9.1 “cannot be updated” warning when updating from 1.3.5 or earlier. Declared compatibility: PrestaShop 8.0.0 to 9.1.3.
  • 1.3.8 · 2026-09-26 — Inbound webhook: any internal error answers 500 and marks the request as error. update_order_status and create_customer only answer success if the change is really saved. First and last names are validated as in PrestaShop. The connection test shows the result of the request it has just made.
  • 1.3.7 · 2026-09-23 — The page after the first “add to cart” no longer fails with the cart event enabled.
  • 1.3.6 · 2026-09-12 — First fix for the PrestaShop 9.1 upgrade warning.

Frequently asked questions

How do I connect PrestaShop to n8n?

Create an n8n workflow with a Webhook node (POST method), copy its Production URL, paste it into the module’s “n8n Webhook URL”, save and click “Send test webhook”. If you see a 200, the store is already sending the checked events.

What happens if n8n doesn’t respond?

The failed request stays in the log with its error and you can resend it from Zeyvro → n8n Connector. Automatic retries are configured in the module. While n8n doesn’t respond, the store waits at most 8 seconds per attempt; with the Webhook node’s «Immediately» response, n8n answers as soon as it receives the event.

Can I send the events to a tool other than n8n?

Yes. The module sends a POST with signed JSON to whatever URL you give it; any service that accepts webhooks can receive it. It is designed and documented for n8n.

What happens if I regenerate the secret?

From then on the signature of outbound requests changes and the inbound webhook only accepts requests signed with the new secret. Update it in your n8n workflows.

Do I need an activation key?

No. Install the module and it works: no key, no activation.

Does the log store personal data?

Yes: it stores the content of each request, which for orders, customers and carts includes name, email and address. If you don’t need it, turn off “Save delivery log”; then there is nothing to resend.

Do I lose data when updating or uninstalling?

No. Updating keeps the settings, the secret and the log. When you uninstall, the module keeps its two tables and its 14 settings, in case you reinstall.

Scroll to Top