Contents
On this page

Look Up Order - Plugixa Chat

POST /plugixa-chat/v1/orders/lookup

Look up a WooCommerce order by its number and billing e-mail, as the widget’s Order status form does, and answer with a short summary.

Public: no login. Needs Plugixa Chat Pro and an active WooCommerce: without WooCommerce the route does not exist. The request needs the page token for lead (see Public routes) and is limited to 10 per visitor every five minutes, counted apart from contact form messages.

Note. The e-mail must match the order’s billing e-mail (case does not matter). A wrong e-mail, an unknown number and a filled trap field all answer the same 404, so the route cannot be used to find out which order numbers exist.

Request

POST https://your-site.example/wp-json/plugixa-chat/v1/orders/lookup

Request body

Content type: application/json

Field Type Required Description
fields.email string Yes The billing e-mail of the order.
fields.order string Yes The order number. A leading # is ignored. Sequential-number plugins that use WooCommerce’s tracking filter are honoured.
website string No The trap field. Must be empty.
token string No The page token, when it is not sent in the X-Plugixa-Chat-Token header.
{
  "fields": {
    "email": "jane@example.com",
    "order": "1042"
  },
  "website": ""
}

Responses

200 OK. The order was found.

{
  "success": true,
  "data": {
    "lines": [
      "Order #1042: Processing",
      "Placed on November 10, 2026",
      "2 × Blue mug, Tea towel",
      "Total: €34.00"
    ],
    "link": {
      "url": "https://your-site.example/my-account/view-order/1042/",
      "label": "See the order in your account"
    }
  }
}
Field Type Meaning
data.lines array Sentences in the site’s language: the number and status, the date, up to three items, the total, then one line per parcel tracking number
data.link object|null A parcel tracking link when there is one, else the order page in the customer’s account for an order placed with an account, else null
data.link.url string The address
data.link.label string The text for the link

Tracking lines come from the order’s shipment tracking data, when a tracking plugin has stored it.

Errors

Status Code When
400 plugixa_chat_order_invalid The e-mail is not valid or the number is empty. data.fields holds a message per field.
404 plugixa_chat_order_not_found No order matches that number and e-mail.
403 plugixa_chat_missing_token No page token was sent.
403 plugixa_chat_stale_token The token has expired. Fetch a fresh one from Get Context.
403 plugixa_chat_bad_origin The Origin or Referer header names another site.
429 plugixa_chat_rate_limited This visitor has used its 10 look-ups for the current five minutes.

Plus the errors every endpoint can return.

Examples

curl -s -X POST "https://your-site.example/wp-json/plugixa-chat/v1/orders/lookup" \
  -H "X-Plugixa-Chat-Token: $PLUGIXA_CHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"fields":{"email":"jane@example.com","order":"1042"},"website":""}'
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-chat/v1/orders/lookup');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'X-Plugixa-Chat-Token: ' . getenv('PLUGIXA_CHAT_TOKEN'),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS     => json_encode([
        'fields'  => [
            'email' => 'jane@example.com',
            'order' => '1042',
        ],
        'website' => '',
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const response = await fetch('https://your-site.example/wp-json/plugixa-chat/v1/orders/lookup', {
  method: 'POST',
  headers: {
    'X-Plugixa-Chat-Token': process.env.PLUGIXA_CHAT_TOKEN,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ fields: { email: 'jane@example.com', order: '1042' }, website: '' }),
});
const { data } = await response.json();

Quick Links

Share