{"id":306949,"date":"2026-05-12T11:25:32","date_gmt":"2026-05-12T11:25:32","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/orderkrab-for-woocommerce\/"},"modified":"2026-05-12T11:26:15","modified_gmt":"2026-05-12T11:26:15","slug":"orderkrab-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/eo.wordpress.org\/plugins\/orderkrab-for-woocommerce\/","author":23409503,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.2.2","stable_tag":"1.2.2","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"OrderKrab for WooCommerce","header_author":"OrderKrab","header_description":"Thin integration between WooCommerce and OrderKrab for rates, fulfillment, and tracking sync.","assets_banners_color":"e4e4e4","last_updated":"2026-05-12 11:26:15","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/orderkrab.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":31,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.2":{"tag":"1.2.2","author":"orderkrab","date":"2026-05-12 11:26:15"}},"upgrade_notice":{"1.2.2":"<p>Adds an uninstall handler that fully removes plugin data on deletion, plus a per-IP rate limit on the public locker-search endpoint and several escape-on-output security hardenings. No configuration changes required.<\/p>","1.2.1":"<p>WooCommerce is now declared as a required plugin via the <code>Requires Plugins<\/code> header; WordPress will block activation if WooCommerce is missing.<\/p>","1.2.0":"<p>First release on WordPress.org. Updates will be delivered through the WordPress plugin directory going forward; no separate updater is needed.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3529731,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3529731,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":501}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3529731,"resolution":"1","location":"assets","locale":"","width":1748,"height":1550},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3529731,"resolution":"2","location":"assets","locale":"","width":2900,"height":2480},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3529731,"resolution":"3","location":"assets","locale":"","width":1250,"height":1116},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3529731,"resolution":"4","location":"assets","locale":"","width":2320,"height":1282}},"screenshots":{"1":"The Connection tab \u2014 paste your OrderKrab access token and connect the store to the OrderKrab API.","2":"The Display tab \u2014 choose between the Native and Shopify-style shipping blocks and customize the styling. Includes a live preview.","3":"The Shopify-style shipping block at checkout \u2014 distance-based parcel locker options with carrier logos and selectable lockers.","4":"The Native shipping block at checkout \u2014 WooCommerce shipping methods with an inline parcel locker search field."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[13906,65950,262650,3546,286],"plugin_category":[45],"plugin_contributors":[262651],"plugin_business_model":[],"class_list":["post-306949","plugin","type-plugin","status-publish","hentry","plugin_tags-fulfillment","plugin_tags-order-sync","plugin_tags-parcel-locker","plugin_tags-shipping","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-orderkrab","plugin_committers-orderkrab"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/orderkrab-for-woocommerce\/assets\/icon-256x256.png?rev=3529731","icon_2x":"https:\/\/ps.w.org\/orderkrab-for-woocommerce\/assets\/icon-256x256.png?rev=3529731","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/orderkrab-for-woocommerce\/assets\/screenshot-1.png?rev=3529731","caption":"The Connection tab \u2014 paste your OrderKrab access token and connect the store to the OrderKrab API."},{"src":"https:\/\/ps.w.org\/orderkrab-for-woocommerce\/assets\/screenshot-2.png?rev=3529731","caption":"The Display tab \u2014 choose between the Native and Shopify-style shipping blocks and customize the styling. Includes a live preview."},{"src":"https:\/\/ps.w.org\/orderkrab-for-woocommerce\/assets\/screenshot-3.png?rev=3529731","caption":"The Shopify-style shipping block at checkout \u2014 distance-based parcel locker options with carrier logos and selectable lockers."},{"src":"https:\/\/ps.w.org\/orderkrab-for-woocommerce\/assets\/screenshot-4.png?rev=3529731","caption":"The Native shipping block at checkout \u2014 WooCommerce shipping methods with an inline parcel locker search field."}],"raw_content":"<!--section=description-->\n<p>OrderKrab for WooCommerce is a thin integration between WooCommerce and the OrderKrab fulfillment platform. It lets a WooCommerce store offer carrier-driven shipping rates and parcel locker selection at checkout, then keeps order state in sync with OrderKrab as the order moves through fulfillment.<\/p>\n\n<p><strong>What it does<\/strong><\/p>\n\n<ul>\n<li>Adds a shipping method that returns rates from the OrderKrab API, including parcel locker pricing per carrier.<\/li>\n<li>Renders a parcel locker search field at checkout (native or Shopify-style block).<\/li>\n<li>Syncs newly created and updated WooCommerce orders to OrderKrab.<\/li>\n<li>Provides an hourly batch reconciliation for any orders that didn't sync in real time.<\/li>\n<li>Receives webhooks from OrderKrab for order, product, and connection status updates.<\/li>\n<\/ul>\n\n<p><strong>Who it's for<\/strong><\/p>\n\n<p>Stores that already use (or plan to use) the OrderKrab fulfillment platform to manage shipping with carriers like DPD, LP Express, Omniva, InPost, FedEx, DHL, and others.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the OrderKrab API (<code>https:\/\/api.orderkrab.com<\/code>) \u2014 the configured base URL is shown in the plugin's Connection settings and can be overridden by store administrators.<\/p>\n\n<p><strong>What is sent and when:<\/strong><\/p>\n\n<ul>\n<li>When a customer reaches checkout, the plugin sends the shipping destination (country, postcode, city) and cart contents to OrderKrab to retrieve available shipping methods and prices.<\/li>\n<li>When a customer searches for a parcel locker, the plugin sends the search query plus destination country\/city to OrderKrab to retrieve matching locker locations.<\/li>\n<li>When an order is created or updated in WooCommerce, the plugin sends the order details (line items, shipping address, totals, selected shipping method) to OrderKrab so fulfillment can be coordinated.<\/li>\n<li>The plugin authenticates each request using an access token that the store administrator pastes into the plugin's Connection tab.<\/li>\n<\/ul>\n\n<p><strong>Why an external service is required:<\/strong> carrier rate calculation, parcel locker availability lookups, and label\/tracking generation depend on real-time data from carriers, which is aggregated by OrderKrab and cannot be performed locally by the plugin.<\/p>\n\n<p><strong>Provider links:<\/strong><\/p>\n\n<ul>\n<li>OrderKrab website: https:\/\/orderkrab.com<\/li>\n<li>Terms of Service: https:\/\/orderkrab.com\/terms<\/li>\n<li>Privacy Policy: https:\/\/orderkrab.com\/privacy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>, or extract the folder into <code>wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Make sure WooCommerce is installed and active (the plugin requires it).<\/li>\n<li>Go to <strong>OrderKrab \u2192 Connection<\/strong> in the WordPress admin, paste your OrderKrab access token, and click <strong>Connect to OrderKrab<\/strong>.<\/li>\n<li>Configure shipping methods and display options under <strong>OrderKrab \u2192 Display<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20orderkrab%20account%3F\"><h3>Do I need an OrderKrab account?<\/h3><\/dt>\n<dd><p>Yes. The plugin is a client for the OrderKrab fulfillment service; you'll need an account and an access token to use it.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20without%20woocommerce%3F\"><h3>Does the plugin work without WooCommerce?<\/h3><\/dt>\n<dd><p>No. WooCommerce is a hard requirement; the plugin will not bootstrap if WooCommerce isn't active.<\/p><\/dd>\n<dt id=\"what%20wordpress%20and%20php%20versions%20are%20supported%3F\"><h3>What WordPress and PHP versions are supported?<\/h3><\/dt>\n<dd><p>WordPress 6.0 or higher and PHP 7.4 or higher.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20help%3F\"><h3>Where can I get help?<\/h3><\/dt>\n<dd><p>Reach the OrderKrab team via https:\/\/orderkrab.com.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Removed code that filtered another plugin's admin notices, per WordPress.org Guideline 11.<\/li>\n<li>Added an <code>uninstall.php<\/code> handler that removes the integration user, the WooCommerce REST API key row, and all plugin options when the plugin is deleted.<\/li>\n<li>Added a per-IP transient rate limit to the public <code>\/orderkrab\/v1\/shipping-points<\/code> REST endpoint to protect against abuse of the merchant's upstream API.<\/li>\n<li>Replaced inline <code>file_get_contents()<\/code> SVG output in the parcel locker search with <code>&lt;img&gt;<\/code> tags pointing at the bundled asset URLs, in line with WordPress's escape-on-output rule.<\/li>\n<li>Wrapper, style, and method-id attributes in the parcel locker search are now built and escaped at the point of output rather than passed through pre-baked attribute strings.<\/li>\n<li>Removed the manual WooCommerce REST API key fallback (and its <code>SHOW COLUMNS<\/code> introspection queries). With WooCommerce now declared as a hard dependency, <code>wc_rest_generate_keys()<\/code> is always available.<\/li>\n<li>Removed the diagnostic <code>error_log()<\/code> call that ran when WooCommerce REST helpers were unavailable.<\/li>\n<li>Excluded screenshots from the production ZIP; they live in the WordPress.org <code>\/assets\/<\/code> SVN folder instead.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Declared WooCommerce as a formal plugin dependency via the <code>Requires Plugins<\/code> header.<\/li>\n<li>Removed an unreliable hardcoded fallback to <code>WP_PLUGIN_DIR . 'woocommerce\/'<\/code> when locating WooCommerce REST helper files; the plugin now relies on WooCommerce's own getters and <code>WC_ABSPATH<\/code> constant.<\/li>\n<li>Renamed the main plugin file to match the plugin slug (<code>orderkrab-for-woocommerce.php<\/code>).<\/li>\n<li>Excluded the development-only <code>wp-stubs.php<\/code> shim from the published build.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Activated the batch order sync (hourly reconciliation of pending\/on-hold\/processing orders).<\/li>\n<li>Refactored admin assets to use <code>wp_enqueue_style<\/code> \/ <code>wp_enqueue_script<\/code> \/ <code>wp_add_inline_style<\/code> \/ <code>wp_localize_script<\/code> instead of inline <code>&lt;style&gt;<\/code> and <code>&lt;script&gt;<\/code> blocks.<\/li>\n<li>Fixed: API access tokens are now preserved verbatim instead of being passed through <code>sanitize_text_field()<\/code>, which could silently corrupt valid tokens.<\/li>\n<li>Modernized <code>register_setting()<\/code> registration with explicit <code>type<\/code> and <code>sanitize_callback<\/code> keys.<\/li>\n<li>Removed the call to <code>load_plugin_textdomain()<\/code>. WordPress automatically loads translations for plugins hosted in the directory since WordPress 4.6.<\/li>\n<li>Added <code>defined( 'ABSPATH' )<\/code> guard to template files that execute code on inclusion.<\/li>\n<li>Removed the self-hosted plugin updater. Updates are now delivered through the WordPress.org plugin directory.<\/li>\n<li>Removed the <code>test-weight-logic.php<\/code> development test harness from the published plugin.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Previous internally distributed release.<\/li>\n<\/ul>","raw_excerpt":"Connect WooCommerce to the OrderKrab fulfillment platform: dynamic shipping rates, parcel locker selection, and two-way order sync.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/eo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/306949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/eo.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/eo.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=306949"}],"author":[{"embeddable":true,"href":"https:\/\/eo.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/orderkrab"}],"wp:attachment":[{"href":"https:\/\/eo.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=306949"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/eo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=306949"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/eo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=306949"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/eo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=306949"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/eo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=306949"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/eo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=306949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}