With webhooks in Picqer, you can get push notifications when certain events happen in your Picqer account. With these webhooks, you do not need to poll the API anymore to see if a picklist is closed. You can just 'subscribe' to this event with our webhooks.

New to webhooks?

Receiving and processing webhooks is really simple. To give you a head start as a beginner, view our PHP example of a 4-line script that receives and processes a webhook.

Available events

We have a couple of events you can subscribe to. If you need an event we do not support yet, please let us know.

orders.allocated Triggered when an order is allocated
orders.closed Triggered when you process an order
orders.status_changed Triggered when the status of an order changes, e.g. from concept to processing or from completed to cancelled
orders.completed Triggered when an order is completed, this is when all products are shipped to the customer
picklists.created Triggered when a picklist is created
picklists.closed Triggered when a picklist is closed
picklists.shipments.created Triggered when a shipment is created on a picklist (can happen 0, 1 or multiple times per picklist)
picklists.snoozed Triggered when a picklist is snoozed
picklists.unsnoozed Triggered when a picklist is unsnoozed, either automatically or manually
products.free_stock_changed Triggered when the free stock of a product is changed.This trigger generates a lot of notifications, use with caution.
products.changed Triggered when a product is added or edited
purchase_orders.receipts.created Triggered when a purchase order receipt is created


When an event is triggered, you get a POST request on the given address. In the POST data we give information about the trigger and all data about the object involved. An example of the request we send you:

View examples of all webhook types

POST http(s)://example.com/your-endpoint
{ "idhook":228, "name":"Stock change notifications", "event":"products.free_stock_changed", "data": { "idproduct":138, "idvatgroup":18, "idsupplier":null, "productcode":"postit20", "name":"Post it", "price":2.95, "fixedstockprice":2.44, "productcode_supplier":"postit20", "deliverytime":null, "description":"", "barcode":"", "minimumstock":0, "maximumstock":null, "unlimitedstock":false, "weight":1, "stocklocation":null, "stock": [ { "idwarehouse":18, "stock":35, "reserved":0, "reservedbackorders":0, "reservedpicklists":0, "freestock":35, "freepickablestock":35 } ] } }
HTTP/1.1 200 OK

We expect you to give a 200 OK status code as a response. We ignore the content you send us. You have a maximum of 10 seconds to process the request, otherwise we also see it as a failure and we will retry.

Failures and retries

When we do not get a 200 OK status back from you, we consider the call as failed. We will retry to send the message 15 times in 24 hours. After 15 retries we delete the call from our queues.

Important: If a webhook fails to many times, we inactive the hook. You can only reactive the hook by registering a new one with the steps below. So make sure you handle possible errors on your side properly. Perhaps ignore a call and give a 200 state if you cannot process the request after multiple tries.

Registering your hooks

Adding and removing your subscriptions to these events, or 'hooks' as we call them, is only possible via the API. Below you find the documentation for managing your hooks.


Name Type Required Description
idhook integer generated Unique Picqer reference
name string required Your own reference for this hook
event string required The event you want subscribe to
address string required Your full endpoint for this hook, for example http://www.example.com/triggers/picqer-stock-change

Get all hooks

GET https://example.picqer.com/api/v1/hooks
HTTP/1.1 200 OK [ { "idhook": 727, "name": "When picklists are created", "event": "picklists.created", "address": "http://requestb.in/1llnmzl71", "active": true }, { "idhook": 1922, "name": "Stock is changed", "event": "products.free_stock_changed", "address": "http://requestb.in/y7wgw6ny7", "active": true } ]

Get single hook

GET https://example.picqer.com/api/v1/hooks/{idhook}
HTTP/1.1 200 OK { "idhook": 1922, "name": "Stock is changed", "event": "products.free_stock_changed", "address": "http://requestb.in/y7wgw6ny7", "active": true }

Create new hook

POST https://example.picqer.com/api/v1/hooks
{ "name": "Stock is changed", "event": "products.free_stock_changed", "address": "http://requestb.in/y7wgw6ny7", }
HTTP/1.1 201 Created { "idhook": 1922, "name": "Stock is changed", "event": "products.free_stock_changed", "address": "http://requestb.in/y7wgw6ny7", }

Delete a hook

DELETE https://example.picqer.com/api/v1/hooks/{idhook}
HTTP/1.1 204 No Content