P4 Software P4 Software / logisticaHQ-en

Add these docs to Claude

Ask Claude questions about these docs. Claude reads the published pages and links you back to them. Copy this address:

https://docs.p4software.cloud/mcp

In claude.ai or Claude Desktop: open Settings, then Connectors, choose Add custom connector and paste the address.

In Claude Code, run:

claude mcp add --transport http docs https://docs.p4software.cloud/mcp

Webhooks

A webhook makes LogisticaHQ tell another system, such as your ERP, e-commerce platform or accounting software, the moment something important changes: an order is shipped, a purchase order is received, a product's dimensions change. Instead of the other system asking LogisticaHQ again and again whether anything is new, LogisticaHQ sends it a message at the address you give, within seconds of the change.

Setting up a webhook is technical work, usually done by your IT team or LogisticaHQ partner together with the developers of the receiving system. Only administrators can create, change or delete webhooks.

The webhook list

Open Setup > System > Webhooks. The list shows each webhook's name, client, address and description. Click a name to change a webhook. Tick webhooks and click Delete on the selection bar to remove them.

The Webhooks list with its Name, Client, Url and Description columns and the New button

Create a webhook

  1. Click New.
  2. Fill in the dialog, described below.
  3. Click Submit. The webhook starts receiving events straight away.

The Webhook dialog filled in: Name ERP order updates, no client, the receiving address, two headers and a description

FieldWhat to enter
NameA name that says what the webhook is for. Required.
ClientLeave empty to receive the events of every client and of records that belong to no client. Choose a client to receive only that client's events, for example to send a 3PL client's order updates to that client's own system.
UrlThe address of the receiving system, which must accept an HTTP POST. Use an https:// address so the messages and headers travel encrypted. Required.
HeadersExtra HTTP headers to send with every message, usually a key or token the receiving system checks to be sure the message comes from you. Write each header as Name=Value and separate headers with semicolons, for example Authorization=Bearer your-token;X-Source=LogisticaHQ.
DescriptionA note for administrators, such as who owns the receiving system.

Which changes send a message

RecordA message is sent when this changes
Pick ticketsThe state (for example Waved, Picked, Shipped, Closed), the upload date, and the order's tracked location during delivery.
Purchase ordersThe state and the upload date.
Customer returnsThe state and the upload date.
Production ordersThe state and the upload date.
Surgery casesThe state, the dispatch date and the completion date.
Products and pack sizesDimensions, weight, unit cost and unit of measure, and a pack size's number of units.
UsersThe location tracked from their handheld.

A record that belongs to a client, such as a client's pick ticket, goes to the webhooks without a client and to that client's webhooks.

What the message looks like

Each message is an HTTP POST with a JSON body that says which record changed, how, by whom and when, and lists every field that changed with its old and new value:

{
  "ObjectId": "1829f328-30d9-4e93-b05b-06a4ef01133f",
  "ObjectType": "PickTicket",
  "ReferenceNumber": "SP-0019261",
  "Tenant": "newtenant",
  "EventType": "Modified",
  "Timestamp": "2026-09-26T14:05:12Z",
  "UserId": "...",
  "Changes": [
    { "PropertyName": "PickTicketState", "OldValue": "Picked", "NewValue": "Shipped" }
  ]
}

EventType is Added, Modified or Deleted. The receiving system can use ObjectId or ReferenceNumber to read the full record through the REST API.

When a message cannot be delivered

The receiving system must answer with a success status (2xx). When it does not, or cannot be reached, LogisticaHQ records the failure, with the status and the answer it received, in Logs, and moves on. Failed messages are not sent again. Build the receiving system to catch up on its own. For example, when it starts it can ask the REST API for orders in the state it is waiting for, so nothing is missed while it was down.

Was this page helpful?