Skip to content
Delivery: CDEK, Russian Post, Yandex Delivery and ApiShip

Delivery: CDEK, Russian Post, Yandex Delivery and ApiShip

EasyChat enriches an order with the latest shipment status returned by the carrier’s official API. The integration is read-only: it cannot create, edit or cancel shipments.

Each carrier is connected independently. Enable only the services you use: CDEK, Russian Post, Yandex Delivery and ApiShip.

What operators see

The order card shows the carrier, tracking number, latest status, location and update time. An operator can open the order, use the official tracking page or insert the verified status into a reply. The same context is available in the Android app.

EasyChat fetches commerce context once and then uses a local cache. Each tracking number has its own cache and single-flight lock: when several panels open at the same time, one process calls the carrier API and the others reuse its result. If the first request is still running, another screen shows the saved state or a concise refresh state; it does not send a duplicate request.

Delivered, cancelled and returned orders are not refreshed automatically. A delivered or returned shipment is cached for one day, an active shipment normally for five minutes, and a carrier error for one minute. An explicit manual refresh can request a shipment again. Changing carrier credentials invalidates the old cache scope.

Connect CDEK

  1. Obtain a Client ID and Client secret for your CDEK account.
  2. Open Integrations → Delivery in EasyChat.
  3. Enable CDEK, enter both values and select Save.
  4. Enter a tracking number visible to that account and select Check.

CDEK API is not a public search for every parcel. Credentials only expose shipments authorised for their owner.

Connect Russian Post

  1. Enable the tracking API at tracking.pochta.ru.
  2. Enter the API login and password in the Russian Post section.
  3. Save the settings and check them with a real tracking number.

Connect Yandex Delivery

  1. Enable API access in the Yandex Delivery account and create an OAuth token for the integration.
  2. In EasyChat, open Integrations → Delivery, enable Yandex Delivery and save the token.
  3. Test it with the claim_id of a real Yandex Delivery claim.

Yandex Delivery returns a status by claim_id (32–64 characters), not by a public parcel tracking number.

Connect ApiShip

  1. Get an API token in your ApiShip account.
  2. In EasyChat, open Integrations → Delivery, enable ApiShip and save the token.
  3. Test it with the clientNumber of a real ApiShip order.

ApiShip returns a status by clientNumber, not by an arbitrary carrier number. Tracking orders routed through ApiShip is part of its standard flow; tracking external orders can be charged separately under the ApiShip tariff, so check your plan before enabling regular refreshes.

Automatic detection from the official module

EasyChat recognises verified records written by the official ApiShip modules without any manual field mapping:

  • OpenCart 2.1, 2.3 and 3.x: the ApiShip module creates the *_apiship_order table. EasyChat reads the linked ApiShip orderId in one batch and safely builds clientNumber from the module prefix and local order number.
  • WooCommerce: EasyChat reads integratorOrder and providerNumber from the shipping-line metadata written by the official ApiShip plugin. This works with both legacy WooCommerce storage and HPOS.

When the module stores an ApiShip orderId, EasyChat queries that immutable identifier: clientNumber can be reused after an order is cancelled or deleted. If the official module is absent, the export record does not exist, or data is ambiguous, EasyChat never tries to infer a shipment from a phone number, email address, or an arbitrary tracking number.

How shipments are found

OpenCart: shipping method and carrier

For OpenCart 1.5–3.x the adapter reads the native order fields shipping_method, shipping_code and tracking. In OpenCart 4, shipping_method may be JSON; EasyChat extracts its name and code. The name is shown to the operator, while the technical code is used as the stable matching key.

Known module codes such as cdek.* and apiship.* are matched automatically. When EasyChat encounters a new code in an order with tracking, the delivery page shows one clear row: the method name, number of affected orders and a carrier selector. Choose CDEK, Russian Post, Yandex Delivery, ApiShip or “Do not track” and save. No JSON or technical-code entry is required. The result is stored for this installation and applies only to that exact module code. Unknown or ambiguous mappings never trigger a carrier API request, but the order and its raw tracking number remain visible. A tracking-number pattern alone is not treated as carrier proof. The order card also shows the decision source, for example “Matched by shipping code” or “Shipping method code was not recognized”.

OpenCart, WooCommerce, Shop-Script and 1C-Bitrix expose orders through the shared Commerce Context 2.0 contract. OpenCart and WooCommerce additionally recognise the verified official ApiShip records described above. For Shop-Script, 1C-Bitrix and MoySklad, automatic ApiShip mapping is added only after their specific official contract has been verified, never by guesswork. When the platform or an installed shipping module stores a standard tracking number, its adapter reads it in a batch together with the orders. MoySklad remains an independent secondary source. Ambiguous contacts are never merged, and missing status is never replaced with a guess.

Credentials are encrypted on the installation server and never sent to central EasyChat. API TLS certificates are always verified. A separate cache and single-flight lock apply to every carrier and shipment identifier, so several open panels do not duplicate a request.

Last updated on