{"id":363059,"date":"2026-09-07T19:38:17","date_gmt":"2026-09-07T19:38:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dopravio\/"},"modified":"2026-10-25T19:50:19","modified_gmt":"2026-10-25T19:50:19","slug":"dopravio","status":"publish","type":"plugin","link":"https:\/\/ko.wordpress.org\/plugins\/dopravio\/","author":23559416,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.6","stable_tag":"1.0.6","tested":"7.1.3","requires":"5.8","requires_php":"7.2","requires_plugins":null,"header_name":"Dopravio","header_author":"Dopravio","header_description":"Pri ka\u017edej objedn\u00e1vke automaticky vypo\u010d\u00edta najlacnej\u0161ieho dopravcu a prirad\u00ed ho k objedn\u00e1vke v admine. Do ko\u0161\u00edka ani pokladne nezasahuje.","assets_banners_color":"f2f6fc","last_updated":"2026-10-25 19:50:19","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.dopravio.sk\/integracie","header_author_uri":"https:\/\/www.dopravio.sk","rating":0,"author_block_rating":0,"active_installs":0,"downloads":412,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"dopravio","date":"2026-09-07 19:37:53","revision":3685477},"1.0.2":{"tag":"1.0.2","author":"dopravio","date":"2026-09-17 18:24:09","revision":3700792},"1.0.3":{"tag":"1.0.3","author":"dopravio","date":"2026-09-26 13:50:42","revision":3714307},"1.0.4":{"tag":"1.0.4","author":"dopravio","date":"2026-10-01 16:32:19","revision":3723489},"1.0.5":{"tag":"1.0.5","author":"dopravio","date":"2026-10-22 20:07:42","revision":3760478},"1.0.6":{"tag":"1.0.6","author":"dopravio","date":"2026-10-25 19:50:19","revision":3765177}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3685475,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3685475,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500-sk_SK.png":{"filename":"banner-1544x500-sk_SK.png","revision":3730297,"resolution":"1544x500","location":"assets","locale":"sk_SK","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3730297,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-sk_SK.png":{"filename":"banner-772x250-sk_SK.png","revision":3730297,"resolution":"772x250","location":"assets","locale":"sk_SK","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3730297,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3685475,"resolution":"1","location":"assets","locale":"","width":560,"height":1374},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3685475,"resolution":"2","location":"assets","locale":"","width":2480,"height":674},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3685475,"resolution":"3","location":"assets","locale":"","width":2560,"height":1730}},"screenshots":{"1":"The recommended carrier on the order detail screen, with the price breakdown.","2":"The Carrier (Dopravio) column in the orders list.","3":"The ERP connection screen with the exact field names."}},"plugin_section":[],"plugin_tags":[5566,24151,16281,3546,286],"plugin_category":[45],"plugin_contributors":[279612],"plugin_business_model":[],"class_list":["post-363059","plugin","type-plugin","status-publish","hentry","plugin_tags-carrier","plugin_tags-logistics","plugin_tags-orders","plugin_tags-shipping","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-dopravio","plugin_committers-dopravio"],"banners":{"banner":"https:\/\/ps.w.org\/dopravio\/assets\/banner-772x250.png?rev=3730297","banner_2x":"https:\/\/ps.w.org\/dopravio\/assets\/banner-1544x500.png?rev=3730297","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/dopravio\/assets\/icon-128x128.png?rev=3685475","icon_2x":"https:\/\/ps.w.org\/dopravio\/assets\/icon-256x256.png?rev=3685475","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/dopravio\/assets\/screenshot-1.png?rev=3685475","caption":"The recommended carrier on the order detail screen, with the price breakdown."},{"src":"https:\/\/ps.w.org\/dopravio\/assets\/screenshot-2.png?rev=3685475","caption":"The Carrier (Dopravio) column in the orders list."},{"src":"https:\/\/ps.w.org\/dopravio\/assets\/screenshot-3.png?rev=3685475","caption":"The ERP connection screen with the exact field names."}],"raw_content":"<!--section=description-->\n<p>Dopravio compares your own negotiated carrier rates for every incoming order and\nassigns the cheapest suitable carrier to it \u2014 in the WooCommerce admin, after the\norder is placed.<\/p>\n\n<p><strong>It does not touch the cart or the checkout.<\/strong> No shipping method is registered,\nno rate is shown to the customer, nothing about the buying experience changes.\nThe plugin works purely in the back office: the order arrives, the carrier is\ncalculated, and you see it on the order.<\/p>\n\n<h4>What the plugin does<\/h4>\n\n<ul>\n<li>On every new order it sends the shipment parameters (weight, destination\ncountry, postcode, cash-on-delivery flag) to Dopravio and stores the result.<\/li>\n<li>Shows the recommended carrier in a metabox on the order detail screen \u2014\nincluding the price breakdown, how the shipment splits into parcels, the other\navailable carriers and the ones that cannot take the shipment (with a reason).<\/li>\n<li>Adds a <strong>Carrier (Dopravio)<\/strong> column to the orders list.<\/li>\n<li>If a physical product has no weight, no carrier is assigned. Instead the\naffected SKUs are reported on the order, because guessing a weight would mean\nguessing the price.<\/li>\n<li>Saves the chosen carrier in public order fields so your ERP or accounting\nsystem can read it (see below).<\/li>\n<\/ul>\n\n<h4>Pulling the carrier into an ERP<\/h4>\n\n<p>The chosen carrier is stored on the order under four public meta keys:<\/p>\n\n<ul>\n<li><code>dopravio_carrier<\/code> \u2014 carrier name, e.g. <code>DPD<\/code><\/li>\n<li><code>dopravio_price<\/code> \u2014 shipping price in EUR, dot as the decimal separator<\/li>\n<li><code>dopravio_parcels<\/code> \u2014 number of parcels (labels)<\/li>\n<li><code>dopravio_status<\/code> \u2014 <code>assigned<\/code>, <code>missing_weight<\/code>, <code>unavailable<\/code> or <code>no_shipping<\/code> (store pickup)<\/li>\n<\/ul>\n\n<p>They are readable through the standard WooCommerce REST API\n(<code>\/wp-json\/wc\/v3\/orders<\/code>) using the API keys your integration already has \u2014\nboth in <code>meta_data<\/code> and in a dedicated <code>dopravio<\/code> block with the full detail.\nThe plugin's <strong>Dopravio \u2192 ERP connection<\/strong> admin screen shows the exact keys and\na live sample response from your own shop.<\/p>\n\n<h4>A Dopravio account is required<\/h4>\n\n<p>The plugin is a client for the Dopravio service. Without an account and an API\nkey it does nothing. Dopravio is a paid service for the Slovak and Czech market\nand its carrier catalogue covers carriers operating there.<\/p>\n\n<ul>\n<li>Service homepage, pricing and sign-up: https:\/\/www.dopravio.sk<\/li>\n<li>Supported platforms and how the connection works:\nhttps:\/\/www.dopravio.sk\/integracie<\/li>\n<\/ul>\n\n<h4>Slovensky<\/h4>\n\n<p>Plugin pri ka\u017edej objedn\u00e1vke vyberie najlacnej\u0161ieho dopravcu a prirad\u00ed ho\nk objedn\u00e1vke v administr\u00e1cii WooCommerce. Do ko\u0161\u00edka ani do pokladne nezasahuje \u2014\nz\u00e1kazn\u00edk ni\u010d nov\u00e9 nevid\u00ed. Rozhranie pluginu je po slovensky. Vybran\u00e9ho dopravcu\nsi vie\u0161 vytiahnu\u0165 do ERP (Helios, Pohoda, Money\u2026) cez REST API alebo z pol\u00ed\nobjedn\u00e1vky; n\u00e1vod je v administr\u00e1cii v sekcii Dopravio \u2192 Napojenie na ERP.<\/p>\n\n<p>\u010co Dopravio rob\u00ed a ko\u013eko stoj\u00ed: https:\/\/www.dopravio.sk\nKtor\u00e9 platformy podporuje a ako napojenie prebieha:\nhttps:\/\/www.dopravio.sk\/integracie<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Dopravio API at https:\/\/www.dopravio.sk to calculate\nwhich carrier is cheapest for a given shipment. It is required for the plugin to\nwork and only communicates once you have entered your Dopravio API key.<\/p>\n\n<p><strong>When data is sent and what is sent:<\/strong><\/p>\n\n<ol>\n<li><em>When an order is created, and when you click Recalculate on an order<\/em> \u2014\nthe plugin sends the destination country, the destination postcode, the total\nweight and the weights of the individual items, the dimensions of the items\nwhere set, and whether the order is cash on delivery. If your store address\n(WooCommerce \u2192 Settings \u2192 General) is in Slovakia, the postcode of that store\naddress is sent too, because pallet carriers price by the region the shipment\nleaves from. The shipping method the customer chose at checkout is sent too\n(its internal ID and its name, e.g. \"Courier\" or \"Pickup point\"), so that the\nservice compares only carriers that deliver the same way. The order number,\nyour site URL and your shop name are sent so the result can be attributed to\nyour shop. No customer name, address, e-mail or phone number is sent.<\/li>\n<li><em>Right after the order is processed (in the background)<\/em> \u2014 a short report\nof the result: the order number, the assigned carrier and its price, the\nshipment details listed above, and \u2014 when a product has no weight \u2014 the SKU\nof that product (or its name and ID when it has no SKU), so the Dopravio\ndashboard can tell you which product to fix.<\/li>\n<li><em>At most once every three minutes \u2014 after an order is processed, while a shop\nmanager or administrator browses the WordPress admin, and when the plugin's\nown admin screens are opened<\/em> \u2014 aggregated statistics of the last 90 days:\nthe number of orders per day, the number of orders and total shipping cost\nper carrier, the sums of order values and of shipping charged to customers,\na histogram of order values, and the store currency. These are totals only;\nno individual order or customer data is included.<\/li>\n<li><em>Update check (only for copies downloaded from dopravio.sk, not for this\nversion)<\/em> \u2014 this build takes its updates from WordPress.org.<\/li>\n<\/ol>\n\n<p>Terms of service: https:\/\/www.dopravio.sk\/podmienky\nPrivacy policy: https:\/\/www.dopravio.sk\/ochrana-osobnych-udajov<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Create a Dopravio account at https:\/\/www.dopravio.sk \u2014 the plugin is a client\nfor the service and does nothing without an API key.<\/li>\n<li>Install and activate the plugin.<\/li>\n<li>Go to <strong>Dopravio \u2192 Settings<\/strong>, enter <code>https:\/\/www.dopravio.sk<\/code> and your API\nkey, or click <strong>Connect through Dopravio<\/strong> to have the key filled in for you.<\/li>\n<li>Place a test order, or open an existing one and click <strong>Calculate through\nDopravio<\/strong>.<\/li>\n<\/ol>\n\n<p>You need WooCommerce 7.0 or newer. Both the classic order storage and High\nPerformance Order Storage (HPOS) are supported.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20change%20what%20the%20customer%20sees%20at%20checkout%3F\"><h3>Does it change what the customer sees at checkout?<\/h3><\/dt>\n<dd><p>No. The plugin registers no shipping method and no checkout hooks. It only works\nwith orders that already exist.<\/p><\/dd>\n<dt id=\"why%20is%20no%20carrier%20assigned%20to%20some%20orders%3F\"><h3>Why is no carrier assigned to some orders?<\/h3><\/dt>\n<dd><p>Because a physical product in the order has no weight set. Without a weight the\nprice cannot be calculated, and a guessed weight would mean a guessed carrier.\nThe order shows which SKUs are missing a weight \u2014 fill them in and click\nRecalculate.<\/p><\/dd>\n<dt id=\"can%20my%20accounting%20system%20read%20the%20chosen%20carrier%3F\"><h3>Can my accounting system read the chosen carrier?<\/h3><\/dt>\n<dd><p>Yes. See <strong>Pulling the carrier into an ERP<\/strong> above, or open\n<strong>Dopravio \u2192 ERP connection<\/strong> in the admin for the exact keys and a live sample.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20a%20dopravio%20account%3F\"><h3>Does it work without a Dopravio account?<\/h3><\/dt>\n<dd><p>No. The plugin is a client for the Dopravio service and needs an API key.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Security hardening of the \"Connect via Dopravio\" flow: the one-time token now\nexpires after 10 minutes, belongs to the administrator who started it and is\ncompared in constant time.<\/li>\n<li>The order screen no longer fails when the service returns an unexpected value.<\/li>\n<li>Deleting the plugin now removes its settings (the API key and the service URL).<\/li>\n<li>The External services section now lists everything the plugin sends.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>The calculation now sends each item with its own weight and dimensions. Express\ncarriers (DHL, UPS, FedEx) charge the higher of the real and the volumetric\nweight, and pallet carriers charge by volume too \u2014 with only the list of\ndistinct dimensions the service could not tell how many items had which size,\nso a light but bulky shipment looked cheaper with them than it is.<\/li>\n<li>When a carrier cannot be priced because the distance band for the recipient's\npostcode is not known yet, the order screen now says so instead of \"no price list\".<\/li>\n<li>The calculation now sends the shipping method the customer chose at checkout.\nOnce you tell Dopravio what each method is (to the address, pickup point,\nparcel locker, pallet or store pickup), the recommended carrier is the cheapest\none that delivers the same way, and the order screen shows when another way of\ndelivery would have been cheaper. Store pickup orders get no carrier.<\/li>\n<li>The order screen now shows when part of the price could not be calculated, for\nexample a surcharge that is not in your carrier documents.<\/li>\n<li>The carrier is now calculated in the background right after the order is created.\nThe customer no longer waits for Dopravio at checkout, and order statistics are\nno longer gathered while the order is being placed.<\/li>\n<li>Virtual and downloadable products no longer add to the shipment weight, and an\norder with nothing to ship gets no carrier.<\/li>\n<li>After a plugin update, orders that already have a carrier keep it \u2014 opening an\nolder order no longer recalculates it with today's prices.<\/li>\n<li>When your Dopravio account has no carrier yet, the order screen now says so\ninstead of reporting an error on Dopravio's side.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>The calculation now also sends the postcode of your store address (only for\nstores in Slovakia). Pallet carriers such as Geis price by zone, and the zone\ndepends on where the shipment leaves from, not only on where it goes \u2014 without\nthe store postcode the service could not tell which zone applies.<\/li>\n<li>When a carrier cannot be priced because the warehouse postcode is unknown, the\norder screen now says so instead of \"no price list\".<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>The order statistics call now also reports the shipment it was calculated for\n(total weight, individual item weights, destination country, cash on delivery,\npostcode). Without those values the service could count the order but could not\nwork out what the same shipment would have cost with the other carriers, so the\nsavings figure in the dashboard stayed empty. Carrier assignment itself is\nunchanged \u2014 it already used all of these values.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Documentation only, no change in behaviour: the plugin page now links to the\nservice homepage and to the list of supported platforms, so it is clear what\nthe plugin is a client for before installing it. Setting up an account is now\nthe first step of the installation instructions, because the plugin does\nnothing without an API key.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>When no carrier can be assigned, the order box now names every carrier and the\nreason (over the weight limit, over the size limit, no price list), instead of\na single vague sentence.<\/li>\n<li>If Dopravio returns no carriers at all, the box says plainly that the fault is\non the Dopravio side, so it is not mistaken for a problem with the shipment.<\/li>\n<li>Recalculating no longer reports success when nothing was assigned; the notice\nnow states the actual outcome.<\/li>\n<li>The order box always shows the country and weight used for the calculation.<\/li>\n<li>Orders left without a carrier by a temporary failure are retried automatically\nwhen the order is opened, instead of staying unassigned forever. Orders with a\nmissing product weight are not retried, as that cannot resolve on its own.<\/li>\n<li>New bulk action on the \"Recent orders\" screen recalculates orders that have no\ncarrier, so a batch left behind by an outage does not have to be fixed one by one.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release in the WordPress.org directory.<\/li>\n<li>The chosen carrier is now also stored in public order fields and exposed in\nthe WooCommerce REST API, so ERP and accounting systems can read it.<\/li>\n<li>New admin screen documenting the ERP connection, with a live sample response.<\/li>\n<\/ul>","raw_excerpt":"Picks the cheapest carrier for every WooCommerce order and assigns it in the admin. No checkout changes, no shipping method added to the cart.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/363059","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=363059"}],"author":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dopravio"}],"wp:attachment":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=363059"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=363059"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=363059"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=363059"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=363059"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=363059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}