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
- Obtain a
Client IDandClient secretfor your CDEK account. - Open Integrations → Delivery in EasyChat.
- Enable CDEK, enter both values and select Save.
- 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
- Enable the tracking API at tracking.pochta.ru.
- Enter the API login and password in the Russian Post section.
- Save the settings and check them with a real tracking number.
Connect Yandex Delivery
- Enable API access in the Yandex Delivery account and create an OAuth token for the integration.
- In EasyChat, open Integrations → Delivery, enable Yandex Delivery and save the token.
- Test it with the
claim_idof 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
- Get an API token in your ApiShip account.
- In EasyChat, open Integrations → Delivery, enable ApiShip and save the token.
- Test it with the
clientNumberof 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_ordertable. EasyChat reads the linked ApiShiporderIdin one batch and safely buildsclientNumberfrom the module prefix and local order number. - WooCommerce: EasyChat reads
integratorOrderandproviderNumberfrom 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.