</>
maximorum.com

How to integrate Nova Poshta API with WooCommerce: automated shipping for Ukrainian e-commerce

D

Ukrainian online stores lose hours each week manually copying delivery details into Nova Poshta's cabinet. Connecting Nova Poshta's API to WooCommerce eliminates that overhead entirely — and gives customers a faster, more professional checkout experience.

WooCommerce admin panel with Nova Poshta API integration — automated shipping and tracking

Why manual shipping entry is a hidden cost

A warehouse operator copying 150 orders per day into Nova Poshta's web cabinet spends roughly 22 minutes on data entry alone. Mistakes in addresses trigger redeliveries, customer complaints, and refund requests. Automating the handoff between WooCommerce and Nova Poshta removes all three problems at once.

What the WooCommerce + Nova Poshta integration covers

A PHP-based WooCommerce plugin communicates directly with Nova Poshta's JSON API (v2) and handles the full shipping lifecycle:

  • City and warehouse autocomplete — customers type a city name at checkout; the plugin queries Nova Poshta's Address.searchSettlements endpoint and returns matching results in real time.
  • Automatic consignment creation — when an order moves to "Processing" or "Completed," the plugin calls InternetDocument.save and generates a Nova Poshta TTN (tracking number) automatically.
  • Tracking number on the order — the TTN is stored in WooCommerce order meta and displayed in the admin order view and in the customer's My Account page.
  • Customer tracking notification — a WooCommerce email template sends the customer their tracking link (novaposhta.ua/tracking) immediately after consignment creation.
  • Webhook-based status updates — Nova Poshta's delivery status is polled via a WP-Cron job and synced to the WooCommerce order status: "Delivered" closes the order automatically.

How the plugin is structured

Clean architecture matters for maintainability. We separate the integration into three layers:

  • Config layer — API key and sender details stored in wp-config.php constants, not in the database, to keep credentials out of exports.
  • Data layer — warehouse and city lists are cached in WordPress transients with a 24-hour TTL, avoiding repeated API calls and Nova Poshta's rate limits.
  • UI layer — checkout fields hook into WooCommerce's native woocommerce_checkout_fields filter, so the integration is theme-agnostic and compatible with block-based checkouts in WooCommerce 8+.

The business outcome

For stores processing 200+ orders per day, this integration removes approximately 15 minutes of manual data entry per 100 orders — roughly 30 minutes saved daily at that volume. More importantly, it eliminates the class of errors (wrong address, missed phone number) that create costly redeliveries.

Customers receive accurate tracking information within minutes of payment, which reduces "where is my order?" support tickets and improves post-purchase satisfaction.

Stack and compatibility

The integration is built on PHP 8.2+, tested against WooCommerce 8.x and WordPress 6.x, and works with both classic and block checkout. It is compatible with LiqPay and Monobank payment gateways, so Ukrainian merchants can run a fully localised checkout stack.

Ready to automate your shipping?

MaxiMoruM has delivered Nova Poshta integrations for WooCommerce and custom Laravel platforms across multiple Ukrainian e-commerce projects. We handle the API mapping, error handling, and ongoing compatibility as Nova Poshta updates its endpoints.

Discuss your project at maximorum.com.