A free-text «delivery address» field in the order form looks like a saving: the buyer writes it, the manager works it out. And he does work it out — by phone, on every single order. While there are ten orders a week, the scheme holds. At several dozen a day, moving data by hand turns into a job of its own and into the main source of typos.
This article is about what has to work in the checkout so that the question «which branch do we ship to» is closed before the manager even opens the order. On 31 July 2026 we measured our own portfolio: Nova Poshta is confirmed either in the checkout or on the delivery page in 16 stores. The carrier is connected almost everywhere, and the difference is not in the fact of the connection but in its depth: down to picking a branch from a list — or all the way to a waybill created from the admin panel.
Two sides of one failure
The buyer sees a form where something has to be typed by hand. The manager sees a line of text that has to be decoded: «NP 12, Dnipro» — is that branch number 12 or a street? The mistake surfaces when the parcel arrives at the wrong place, and it costs a return and a second shipment.
About what to expect from the integration, straight away. It removes several minutes of manual work from every sale and removes a whole class of mistakes — decoding the address. It does not make sales grow, it does not reduce the carrier's tariff, and it does not make the carrier deliver faster. The mechanism here is about the cost of processing an order, and that is exactly what the work should be judged by.
Through the buyer's eyes: four things
When the Nova Poshta integration is done, the buyer goes through the checkout like this.
The city comes as a suggestion from a list, not as whatever text was typed. Then the branch or the parcel locker — also from a list, taken from the carrier's directory. New branches are not entered by hand: they appear on their own when the directory refreshes on a schedule.
An estimated delivery cost in the cart, calculated from weight and declared value. Estimated is the operative word: the exact amount is calculated by the carrier at the branch anyway, and a note should say so. But something has to be there — how the delivery cost calculation in the cart is built is covered separately.
Courier delivery to an address, with a service-zone check. The buyer should not be offered an option that does not exist for their address.
The parcel locker deserves a separate mention, because it is often treated as a checkbox in the settings. It is a directory of its own and a branch of its own in the cost calculation. For small shipments it saves the buyer the queue at a branch, which is precisely why it gets asked for. Every added scenario is a separate block of testing, not one more line in the list of methods.
Through the manager's eyes: an identifier instead of a string
What sits in the order is not «NP 12, Dnipro» but the identifier of a specific branch. That is the difference between «the manager guesses» and «the system knows».
Then a button in the order: create an express waybill. The manager clicks it, gets a number and a printable form, without switching to the carrier's own cabinet and without entering the same data twice. The waybill number goes back into the order and into the email to the buyer — the question «where is my parcel» is closed before it gets asked.
For that button to work at all, the order has to carry a surname, a phone number in a valid format, weight and declared value. Without those fields the waybill will not be created no matter how much API is connected, and it is exactly the reworking of the order form that most often stretches the timeline to its upper bound.
One technical detail worth saying out loud: the branch directory must not be pulled from the carrier at the moment the order is placed. That looks fine right up until the carrier slows down. The moment it does, your cart slows down with it — the most expensive step on the site starts depending on someone else's server. The data lives locally and is refreshed by a separate background run.
A separate case is when part of the orders travels with different carriers, or one order has to go out as several parcels. Then splitting shipments is added to the integration, and it is estimated separately from the checkout itself.
What breaks most often
The failures repeat, and there are not many of them.
A manual «address» field. Often it is not even a delivery field but a comment to the order. The buyer writes as best they can, the manager decodes as best they understand. An honest limit: a list from the directory removes the decoding error, not the choice error. If the buyer knowingly picked the wrong branch, no integration will save that.
A stale directory. A branch opened, it is not in the list, the buyer cannot find theirs and goes to order elsewhere. The same point about scheduled refreshes, seen from the side of lost orders.
Delivery with no price, or with a zero. We saw both variants in one measured store: Nova Poshta was shown in the checkout with no price at all, and the second carrier as «0 UAH», while the information page of that same site quoted 35–80 UAH. A zero in the checkout is a promise the site does not keep, and the buyer finds that out at the branch.
A «Delivery and payment» page the checkout does not confirm. A terms page is text somebody wrote once, not the current settings. In an official garden tool store the measurement of 31 July 2026 showed four delivery services and eight payment methods on the terms page — and that is the rare case where the text and the settings agreed. More often they diverge, and the owner hears about it from a buyer.
A small thing from the same sample that costs little and shows up late: in one store the carrier names are images with no alt text. A person sees them, a search crawler and a screen reader do not.
Checking your own checkout in two minutes
You do this yourself, no access required.
Put your own product into your own cart and start the checkout as a guest, not as an administrator. That is the whole point: what the site gives an ordinary buyer is the truth.
Then look at four things. First: is the branch picked from a list or typed as text. Second: is there a delivery price and is it not a zero. Third: which delivery and payment methods you are offered at all — and whether that list matches your own terms page. Fourth: does the form have the fields without which a waybill cannot be created.
We run that check on every store before quoting. In a store selling automatic irrigation systems on 1 August 2026 it produced two carriers, six delivery methods and three payment methods — figures from a real checkout, not from a terms page. Something else is telling: that same store answered its first request in 235 ms, while /sitemap.xml returned HTTP 200 with a zero-byte body, no JSON-LD block was found at all, and no analytics was installed. Delivery still worked. The state of the checkout and the state of the technical layer are two different questions, and the answers do not match.
The other side of the same checkout is the buttons on the product card: one-click purchase, instalments, a free-shipping threshold. We measured those across thirty stores in the breakdown of the product card through Google's eyes, so we will not repeat it here. If you are reworking the checkout as a whole, form steps and guest ordering included, that is checkout optimisation.
How long it takes
3–10 working days, five stages.
| Stage | Duration |
|---|---|
| Checking the checkout and the order fields | 1–2 working days |
| API key, directories, refresh schedule | 1–2 working days |
| Delivery methods and cost calculation | 1–3 working days |
| Waybill from the admin panel and printing | 0–3 working days |
| A live order and handover to the manager | on the delivery day |
Three days is when only the branch scenario is switched on, the order fields are already correct, and you keep creating waybills in the carrier's cabinet: the waybill stage simply drops out of the estimate. Ten is when all three scenarios are switched on, a create-waybill button in the admin panel is needed, and the order form has to be reworked.
The platform moves the timeline too. For OpenCart and WooCommerce ready-made builds exist, and the work comes down to configuration, directories and order fields; on a custom checkout every step is written by hand, and we say so before the estimate, not after. How timelines look across a whole project rather than a single integration is laid out in the timeline for building a store.
What is not included
The contract with the carrier and the API key are issued to you, not to the contractor: access to shipments has to stay with the business owner. We work with the key during setup and testing; after handover you can reissue it whenever you like — the site keeps working as soon as the value is updated in the admin panel.
Logistics and tariffs are not included either, nor is handling returns and reverse shipments, nor claims against the carrier. Connecting other delivery services is estimated separately.
Honest limits
The integration saves two things: the manager's time on every order and returns caused by address errors. Nothing more. It does not reduce the cost of delivery, it does not make the carrier faster, and it does not affect the site's positions in search. And an hour freed up for a manager becomes money only when that hour is actually redirected to other work.
So the recommendation before starting is simple: measure two numbers — how many minutes one waybill takes now, and how many orders a month come back because of the address. A month after the work, those two will show whether it paid off.
If you are not sure what state your checkout is in, we check it free of charge in 1–2 working days: we put a product into your cart, go through guest ordering and look at what the site actually returns. You get a report and an estimate split into the necessary and the desirable. If configuring an existing module on your platform is enough instead of writing an integration, we will say so. After that comes a contract with a fixed sum and timeline, and a 30 calendar day warranty on the delivered work, counted from the day the acceptance act is signed.



