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