Skip to content

InPost integration (Paczkomaty)

The InPost integration covers shipment tracking. You store the ShipX API token, type the tracking number on the order, and the order screen shows the live status and event history pulled from InPost. Label creation is planned but is not part of the plugin today, so nothing here generates a shipment in ShipX.

Go to Polski > Modules and turn on Fulfillment. The module is off by default, and while it is off the tracking fields, the tracking column and the customer facing tracking blocks are not registered at all.

The InPost credentials live in the polski_pro_shipping option:

Key Description
inpost_enabled Must be true, otherwise the live lookup is skipped
inpost_api_token Authorization token from the InPost Manager panel (manager.paczkomaty.pl)
inpost_organization_id Stored, but not used by the tracking lookup
inpost_environment Stored, but not used. Lookups always go to the production ShipX host

There is no rendered settings screen for these fields yet. Save them through the PRO settings REST route:

PUT /wp-json/polski-pro/v1/settings
Content-Type: application/json
X-WP-Nonce: {wp_rest nonce}
{
"shipping": {
"inpost_enabled": true,
"inpost_api_token": "eyJhbGciOi..."
}
}

The route requires the manage_woocommerce capability. The saved payload replaces the whole polski_pro_shipping option, so send the keys of your other carriers in the same request if they are already configured.

WP-CLI works too:

Terminal window
wp option patch update polski_pro_shipping inpost_api_token "eyJhbGciOi..."
wp option patch update polski_pro_shipping inpost_enabled 1

The token is passed in the Authorization: Bearer {token} header with every ShipX request. Read access to tracking is enough, no shipment creation permissions are needed.

On the order edit page, under the shipping address, the Shipment Tracking block provides three fields:

Field Description
Carrier InPost, DPD, DHL, Poczta Polska or Other
Tracking number Entered by hand, for example 6230000123456789
Tracking URL Leave empty and it is built from the carrier and the number

For InPost the generated link is:

https://inpost.pl/sledzenie-przesylek?number={tracking_number}

The fields are saved with the order. Nothing fills them in automatically, the number comes from wherever you created the shipment (InPost Manager, a courier app, a packing slip).

Once a tracking number or URL is saved, a Refresh live tracking button appears in the same block, above the live preview. It clears the cached response and reloads the order screen, which triggers a fresh call to:

GET https://api-shipx-pl.easypack24.net/v1/tracking/{tracking_number}

The response is cached for 10 minutes in a WordPress transient, so repeated views of the order do not hit the API again. The preview shows the carrier status, the carrier name, the tracking number, a Track shipment link and up to eight of the most recent shipment events with date and location.

There is no scheduled status poll and no automatic order status change. Live data is fetched when an order screen renders with an expired cache, or when you press the button.

  • Orders list - a “Tracking” column with the carrier, the number, the live status and a track link
  • Order edit page - the fields plus the live preview described above
  • My Account > Orders - a “Track shipment” row action, and a “Shipment Tracking” section under the order details
  • Customer emails - the same tracking block after the order table, in customer emails only, not in the admin copies

The module registers three WooCommerce order statuses after “Processing”: packed, shipped and delivered. On the orders list they are available as bulk actions:

Bulk action Result
Change status to Packed Order marked as packed, “Your order has been packed” email
Change status to Shipped Order marked as shipped, “Your order has been shipped” email
Change status to Delivered Order marked as delivered, “Your order has been delivered” email

Each email repeats the carrier, the tracking number and the tracking link when they are filled in. These statuses are set by you, they are not driven by the InPost status.

Label generation is planned but not shipped. The plugin contains no code that creates a shipment in ShipX, so there is no Generate, Download or Print label button, no bulk label action, no ZIP download and no parcel size setting. The Paczkomat picker map at checkout and a dedicated InPost shipping method are also not implemented, and no polski_pro/inpost/* filters or actions exist. Select the Paczkomat with a separate plugin or a checkout field if you need one today.

The Shipment Tracking block does not appear The Fulfillment module is off, or the order has neither a tracking number nor a tracking URL saved. The live preview and the refresh button only render once one of them is present.

The number and the link show, but there is no live status inpost_enabled is false or inpost_api_token is empty, so the provider is treated as unavailable and the lookup is skipped. For carriers other than InPost, DPD, DHL and Poczta Polska only the link is built, there is no live lookup at all.

“Refresh live tracking” changes nothing The token has expired or is invalid, and the failed response leaves the status empty. Test it outside WordPress: curl -H "Authorization: Bearer {token}" https://api-shipx-pl.easypack24.net/v1/tracking/{number}. Also check that the number itself is a ShipX tracking number.

This page is for informational purposes only and does not constitute legal advice. Consult a lawyer before implementation. Polski for WooCommerce is open source software (GPLv2) provided without warranty.