> For the complete documentation index, see [llms.txt](https://api-portal.novapost.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://api-portal.novapost.com/methods/methods/webhooks/event-types-and-tracking-status-codes.md).

# Event types and tracking status codes

Two different sets of values are used when working with webhooks, and they must not be confused:

* **Event types** are the values you pass in the `eventTypes` parameter when creating or updating a subscription. They define which status changes generate webhook notifications.
* **Tracking status codes** are the numeric values that arrive in the webhook request body in the `history_tracking[].code` parameter. Your business logic is built on them. For the allowed values, see the [**Tracking status codes**](#tracking-status-codes) section.

#### Event types for the eventTypes parameter

```
{
  "eventTypes": ["AwaitingOnDivision", "Received"]
}
```

* An empty list or an absent parameter means that **all** supported events are sent.
* The values are case-sensitive. A misspelled name does not work as a filter, and you do not receive an error message when the subscription is created.

<table data-search="false"><thead><tr><th width="245">Event type</th><th>Description</th></tr></thead><tbody><tr><td><code>ReadyToShip</code></td><td>The shipment has been created and is ready for dispatch.</td></tr><tr><td><code>Deleted</code></td><td>The shipment has been deleted.</td></tr><tr><td><code>ParcelPlaceRemoved</code></td><td>A parcel has been removed from the shipment.</td></tr><tr><td><code>Received</code></td><td>The shipment has been received by the recipient.</td></tr><tr><td><code>MoneyTransfer</code></td><td>A money transfer related to the shipment has been created.</td></tr><tr><td><code>MoneyTransferReceived</code></td><td>The money transfer related to the shipment has been paid out to the recipient.</td></tr><tr><td><code>Returned</code></td><td>The shipment is being returned or has been returned to the sender.</td></tr><tr><td><code>Refused</code></td><td>The recipient has refused to accept the shipment.</td></tr><tr><td><code>Redirecting</code></td><td>The shipment is being redirected to another address or branch.</td></tr><tr><td><code>Utilization</code></td><td>The shipment has been disposed of.</td></tr><tr><td><code>Redelivery</code></td><td>A repeat delivery attempt for the shipment has been scheduled.</td></tr><tr><td><code>UndeliveryReason</code></td><td>A non-delivery reason has been recorded.</td></tr><tr><td><code>ChangeTime</code></td><td>The delivery date or time has been changed.</td></tr><tr><td><code>ArrivalSC</code></td><td>The shipment has arrived at the sorting center.</td></tr><tr><td><code>TransferToPartner</code></td><td>The shipment has been handed over to a partner for further delivery.</td></tr><tr><td><code>LoadingCourier</code></td><td>The shipment has been loaded onto the courier's vehicle.</td></tr><tr><td><code>ArrivalSenderWarehouse</code></td><td>The shipment has arrived at the sender's warehouse.</td></tr><tr><td><code>DepartureSenderWarehouse</code></td><td>The shipment has departed from the sender's warehouse.</td></tr><tr><td><code>InCityRecipient</code></td><td>The shipment has arrived in the recipient's city.</td></tr><tr><td><code>AwaitingOnDivision</code></td><td>The shipment is waiting at the branch or pickup point.</td></tr></tbody></table>

#### Tracking status codes

**Build your business logic on the** `code` **parameter, not on** `code_name`. The numeric code is stable, while the status name may change — it is provided only so that a person can immediately understand what it refers to. Different codes may have the same name.

The tracking status codes for which webhook notifications are sent are listed below.

<table data-search="false"><thead><tr><th width="85" align="center">Code</th><th>Tracking status name</th></tr></thead><tbody><tr><td align="center"><code>1</code></td><td>Ready to send</td></tr><tr><td align="center"><code>2</code></td><td>Deleted</td></tr><tr><td align="center"><code>4</code></td><td>Accepted for sending</td></tr><tr><td align="center"><code>5</code></td><td>Sent from the Sender's Division</td></tr><tr><td align="center"><code>6</code></td><td>Arrived in the city of the Recipient</td></tr><tr><td align="center"><code>7</code></td><td>Arrived (at the Division)</td></tr><tr><td align="center"><code>8</code></td><td>Arrived (at the Postomat)</td></tr><tr><td align="center"><code>9</code></td><td>Closed</td></tr><tr><td align="center"><code>10</code></td><td>The shipment is closed and the money transfer is sent to the Sender</td></tr><tr><td align="center"><code>11</code></td><td>The shipment is closed and the sender has received the money transfer</td></tr><tr><td align="center"><code>13</code></td><td>Arrival at the transit sorting center</td></tr><tr><td align="center"><code>16</code></td><td>Departure from the transit sorting center</td></tr><tr><td align="center"><code>17</code></td><td>ArrivalTransitWarehouse (currently not used)</td></tr><tr><td align="center"><code>19</code></td><td>DepartureFromTransitWarehouse (currently not used)</td></tr><tr><td align="center"><code>30</code></td><td>Arrived at customs terminal</td></tr><tr><td align="center"><code>31</code></td><td>Departed from customs terminal</td></tr><tr><td align="center"><code>70</code></td><td>Added to manifest</td></tr><tr><td align="center"><code>99</code></td><td>Delivery to Postomat is impossible (technical issues or oversized parcel)</td></tr><tr><td align="center"><code>101</code></td><td>Uploaded to the courier for delivery to the address</td></tr><tr><td align="center"><code>102</code></td><td>Returns (sender ordered a return)</td></tr><tr><td align="center"><code>103</code></td><td>Refusal of shipment</td></tr><tr><td align="center"><code>104</code></td><td>Redirecting</td></tr><tr><td align="center"><code>105</code></td><td>Utilization</td></tr><tr><td align="center"><code>106</code></td><td>Received and created return shipment of Documents/Document Subtypes</td></tr><tr><td align="center"><code>107</code></td><td>At pickup point</td></tr><tr><td align="center"><code>110</code></td><td>Shipment transferred to temporary storage</td></tr><tr><td align="center"><code>111</code></td><td>Failed delivery attempt (in case of targeted delivery)</td></tr><tr><td align="center"><code>112</code></td><td>Delivery date postponed (for targeted delivery)</td></tr><tr><td align="center"><code>113</code></td><td>Storage period expired (Postomat)</td></tr><tr><td align="center"><code>114</code></td><td>Awaiting customs clearance</td></tr><tr><td align="center"><code>115</code></td><td>Arrived at customs terminal</td></tr><tr><td align="center"><code>116</code></td><td>Broker refusal — under resolution</td></tr><tr><td align="center"><code>117</code></td><td>Cargo not found or lost (customs)</td></tr><tr><td align="center"><code>118</code></td><td>Forbidden content — delivery impossible (customs)</td></tr><tr><td align="center"><code>119</code></td><td>Customs clearance in progress</td></tr><tr><td align="center"><code>120</code></td><td>Customs clearance completed</td></tr><tr><td align="center"><code>121</code></td><td>Sent to destination city after customs</td></tr><tr><td align="center"><code>122</code></td><td>Preparing for transfer to customs</td></tr><tr><td align="center"><code>123</code></td><td>Awaiting information from the recipient</td></tr><tr><td align="center"><code>125</code></td><td>Preparing for transfer to customs</td></tr><tr><td align="center"><code>126</code></td><td>Preparing for transfer to customs</td></tr><tr><td align="center"><code>127</code></td><td>Customs declaration data verification in progress</td></tr><tr><td align="center"><code>128</code></td><td>Processing accompanying documents prior to customs</td></tr><tr><td align="center"><code>130</code></td><td>Import prohibited by customs</td></tr><tr><td align="center"><code>131</code></td><td>Return of uncleared cargo</td></tr><tr><td align="center"><code>132</code></td><td>Preparing for return</td></tr><tr><td align="center"><code>133</code></td><td>Client communication regarding a customs comment</td></tr><tr><td align="center"><code>134</code></td><td>The international shipment has been handed over to the customs broker for processing</td></tr><tr><td align="center"><code>135</code></td><td>The international shipment has been placed in Storage Area</td></tr><tr><td align="center"><code>138</code></td><td>Shipment delay due to incorrect recipient information</td></tr><tr><td align="center"><code>141</code></td><td>Storage period expired</td></tr><tr><td align="center"><code>144</code></td><td>Storage period expired</td></tr><tr><td align="center"><code>149</code></td><td>In storage</td></tr><tr><td align="center"><code>155</code></td><td>Shipment transferred for disposal</td></tr><tr><td align="center"><code>197</code></td><td>Processing customs documents</td></tr><tr><td align="center"><code>198</code></td><td>Cargo inspection by customs</td></tr><tr><td align="center"><code>199</code></td><td>Shipment requires customs clearance</td></tr><tr><td align="center"><code>999</code></td><td>Undetermined</td></tr></tbody></table>

#### Minimum handler algorithm

1. Validate the secret header.
2. Parse the request body.
3. Take the message UUID from the x-np-attempt header — the part before the dot.
4. If this UUID has already been processed — return 2xx and finish processing.
5. Save the data and the UUID in a single transaction.
6. Return 2xx.
7. Perform the business logic separately, outside this request.

### Things to keep in mind

<table data-search="false"><thead><tr><th width="257">Situation</th><th>What to do</th></tr></thead><tbody><tr><td>Business logic based on the status name is unreliable.</td><td>Use <code>code</code>. It is stable, while <code>code_name</code> may change, and different codes may have the same name.</td></tr><tr><td>Updating a subscription resets the parameters that were not passed.</td><td>When calling <code>PUT</code>, always pass the full set of parameters, even if you change only one. Retrieve the current settings with the <a href="/methods/methods/webhooks/subscription-list.md"><strong>Retrieve all subscriptions</strong></a> method before updating.</td></tr><tr><td>The subscription type cannot be changed.</td><td>To switch to another type, create a new subscription and delete the old one.</td></tr><tr><td>Deleting numbers returns a <code>200</code> code even when no numbers were deleted.</td><td>Check the status parameter in the response body, not the HTTP code.</td></tr><tr><td>Adding numbers may work only partially.</td><td>Always check <code>missedNumbers</code>. Numbers that do not yet exist in the system have to be added again later.</td></tr><tr><td>Every webhook notification contains the whole history, not only the new event.</td><td>Store the last processed state on your side and compare against it.</td></tr><tr><td>The same notification may arrive several times.</td><td>The handler must be resilient to repeats — use the UUID from the <code>x-np-attempt</code> header.</td></tr><tr><td>Events that occur while a subscription is disabled are not stored.</td><td>Missed events are not delivered after the subscription is enabled again. If you need the full history for that period, retrieve it via the tracking methods.</td></tr><tr><td>Several subscriptions for the same shipments do not produce more notifications.</td><td>A webhook notification is sent once, regardless of how many subscriptions cover the shipment. There is no need to duplicate subscriptions.</td></tr><tr><td>Numbers are not unlinked from a subscription automatically.</td><td>Even after a shipment has been delivered, its number remains in the subscription. Delete the numbers yourself when they are no longer needed.</td></tr><tr><td><code>text/plain</code> as the value of <code>contentType</code> will be discontinued.</td><td>Switch to <code>application/json</code>. The request body does not change.</td></tr><tr><td>In Sandbox, webhook notifications for real status changes are not sent.</td><td>Test the integration with the <a href="/methods/methods/webhooks/test-webhook.md"><strong>Checking the test webhook</strong></a> method. The absence of webhook notifications in Sandbox does not mean that the configuration is wrong.</td></tr></tbody></table>

<br>

<br>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://api-portal.novapost.com/methods/methods/webhooks/event-types-and-tracking-status-codes.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
