Nova Poshta Shopify App
Ukraine's first Shopify app for Nova Poshta integration. Built to empower Ukrainian merchants, it evolved from a basic shipping calculator into a full-featured logistics tool — driven by real merchant needs.
Mar 2021 - currently

Shopify App that automates Nova Poshta shipping: live rates at checkout, pickup point selection, label printing, and tracking sync, built to speed up fulfillment and reduce delivery errors for Ukrainian merchants.
Our Nova Poshta Service Shopify app automates Nova Poshta shipping for Ukrainian merchants. It offers live rates at checkout, lets customers pick a pickup point, prints labels, and syncs tracking to help speed up fulfillment and reduce delivery mistakes.

Nova Poshta (Nova Post) is Ukraine's largest logistics company. In 2025, it delivered 522 million parcels, including 29 million international shipments, through over 50,000 service points: 15,817 branches and 34,186 parcel terminals. For Shopify merchants in Ukraine, Nova Poshta integration is essential, not optional.
The Challenge
Nova Poshta handles most eCommerce deliveries in Ukraine. Every Ukrainian online shopper knows and expects it at checkout. When merchants began growing on Shopify, Nova Poshta delivery was a must, but there was no built-in integration. Teams had to process shipments and check addresses manually, and help customers pick the right city or branch. Delivery options and costs were often unclear, which hurt sales, and support teams spent too much time answering questions like “Where is my parcel?” and “Why has the delivery price changed?”
Our Goal
We created Nova Poshta Service to help Ukrainian businesses grow on Shopify. The app calculates shipping costs, automates shipment creation and label printing, makes address and pickup-point selection easier, keeps tracking updated, and is simple to set up even for non-technical store owners. We set the price as low as possible to cover maintenance and provide stable updates and long-term support.
Solution overview (what the app does)
The Nova Poshta Service app integrates Nova Poshta shipping directly into Shopify, no coding required. A merchant installs the app, enters their Nova Poshta API key, a few settings and the integration is live. From that point, the app handles the full shipping workflow from checkout to delivery.
The app calculates real-time Nova Poshta shipping rates using order value, product size, weight, and distance.

Merchants can pick door-to-door or door-to-warehouse delivery. They can show a dropdown of Nova Poshta branches on the Thank You or Order Status page (for all Shopify plans), show the nearest branches at checkout (if Carrier Calculated Shipping is enabled), or display a branch dropdown at checkout (Shopify Plus only).

Merchants can set flat rates or offer free shipping above a certain order value. If Carrier Calculated Shipping isn’t available, a fixed-rate mode keeps the app working on any Shopify plan.
Once an order is placed, the app takes over the fulfilment side. Merchants can generate TTNs, the Nova Poshta tracking numbers, manually or automatically. Labels print in multiple formats directly from the Shopify admin. Every shipment is trackable in real time.

Beyond the basics, the app has grown to cover the edge cases that real merchants run into. We had multiple requests with incorrect cost calculation because of mistakes in shipping address filled in on the checkout. So we have added OpenAI-powered address correction catches typos and postal code mismatches before they cause failed deliveries. Product-level dimension metafields enable precise shipping cost calculation for stores with varied inventory. Nova Global support extends the same workflow to international shipments. And a packaging handling fee option lets merchants account for the true cost of getting an order out the door.

Everything can be set up directly in the Shopify admin. There are no extra dashboards or separate logins needed.
Our First Shopify App. Store Development and App Development Are Not the Same
We had worked with Shopify before, building and customising stores for merchants. But creating a public app is a different story. A store is scoped to one business. An app has to function correctly across every store that installs it, regardless of plan, theme, or configuration. The infrastructure, the testing, the support, and the update cycle all work differently. And it’s a higher chance to face Shopify limitations.
With this in mind, we started with a simple MVP that only calculated Nova Poshta shipping costs. We wanted to prove the integration worked before adding more features. As we continued, the platform showed us where the real challenges were.
The checkout experience Ukrainian shoppers expect is straightforward: see the delivery cost, pick the nearest Nova Poshta branch from a dropdown, and complete the order. Intuitive, familiar, and completely standard on other platforms. On Magento, you can implement it easily. On Shopify, this checkout customization is available only in Shopify Plus. Deep checkout customisation is locked behind the top-tier plan, putting it out of reach for the vast majority of merchants we were trying to help.
Our first solution was the Nova Post branches dropdown on the Thank You page (and Order Status page). It is customisable on all Shopify plans, so we placed the branch selection dropdown there. After payment, but before the order was fully processed. Workable, but not what merchants wanted. And what is more important, not what customers expect. The requests came in steadily: hundreds of merchants asking the same thing — can you please make the branch selection appear during checkout, not after it?
We responded with a second approach: displaying the nearest Nova Poshta warehouses as selectable shipping options directly on the checkout page. But it requires using Carrier Calculated Shipping. Customers can now choose their preferred branch before paying, within the boundaries of what Shopify allows on standard plans. A meaningful step forward.
The full experience merchants and customers still expect is a branch selection dropdown embedded in the checkout address field, it remains behind the Shopify Plus wall. It is a known platform limitation, an open item on our roadmap, and a story that is still in progress. It’s understandable that Shopify is trying to keep Checkout safe and avoid conflicts there. But as Shopify continues to evolve its checkout extensibility, so will the app.
Growing With Merchants. Feature Evolution
The app was never meant to be finished. Every significant addition came from direct merchant feedback, and that principle has not changed since the first version shipped. We built the foundation. Merchants told us what was missing. We built that too.
“Can the app generate TTNs directly from Shopify? We are creating them manually in the Nova Poshta cabinet for every single order.”
TTN generation was one of the first big features we added after launch. Merchants could create tracking numbers manually for single orders or automatically for many orders. This meant they no longer had to switch between platforms to ship a parcel. We soon added label printing in different formats and real-time shipment tracking inside the Shopify order view. Now, the whole post-checkout process—from creating a tracking number to printing a label to tracking a delivery—can be managed without leaving Shopify admin.
“We have started selling to Poland. Our customers are there. Can the app handle international delivery?”
Nova Global support extended the app beyond Ukraine, applying the same rate calculation logic to cross-border shipments through Nova Post’s international network. For Ukrainian merchants whose customer base had partially relocated abroad during the war, this was not a nice-to-have. It was a lifeline. Merchants already familiar with the domestic setup needed no relearning — the interface was identical, the rates calculated automatically.
“We keep having issues with address errors — wrong postal codes, mixed Cyrillic and Latin, typos in street names. Parcels are coming back.”
Address correction, powered by OpenAI, was built in direct response to a problem that no checkout UX improvement can fully prevent: human error. Customers mistype street names, mix Cyrillic and Latin characters, enter postal codes that don’t match the city. These are the quiet causes of failed deliveries, and they cost merchants time, money, and customer trust. The integration catches and corrects errors automatically before the order reaches the carrier — no extra steps for the merchant, no friction for the customer.
A packaging handling fee option let merchants price shipping to reflect their true fulfilment costs. Multiple payment and COD scenarios were built out to reflect the reality of Ukrainian eCommerce, where the split between online card payment and payment at the Nova Poshta branch does not fit neatly into Shopify’s default checkout assumptions.
Each feature has a conversation behind it. That is still how the app evolves today: open to requests, honest about platform constraints, and never quite done.
Results
The Nova Poshta Service app has over 550 installs and a 4.7 rating on the Shopify App Store. It supports Ukrainian merchants on every Shopify plan, from Basic to Plus. We keep updating it as the platform changes and as merchants share new ideas.
Building and maintaining it has made us significantly better at Shopify as a platform. Not just theme and store development, but the deeper layer - API constraints, checkout extensibility, plan-based feature limitations, App Store publishing, versioning, and merchant support at scale. The difference between building for one merchant and building for hundreds of them simultaneously is something you only truly understand by doing it.
We have kept the price at the minimum needed to cover maintenance since the beginning. This was a deliberate choice and still is. The app was built to support Ukrainian merchants, and that commitment hasn’t changed.