{"id":300726,"date":"2026-07-20T17:16:48","date_gmt":"2026-07-20T17:16:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/printarex-shipping\/"},"modified":"2026-07-21T04:36:49","modified_gmt":"2026-07-21T04:36:49","slug":"printarex-integration-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/printarex-integration-for-woocommerce\/","author":23481202,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.4","stable_tag":"1.1.4","tested":"7.0.2","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"PrintaRex Integration for WooCommerce","header_author":"PrintaRex","header_description":"Real-time zone-based shipping rates from PrintaRex for WooCommerce stores.","assets_banners_color":"","last_updated":"2026-07-21 04:36:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/printarex.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":145,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"ibrahimsiam","date":"2026-07-20 17:16:13"},"1.0.6":{"tag":"1.0.6","author":"ibrahimsiam","date":"2026-07-20 17:43:09"},"1.0.7":{"tag":"1.0.7","author":"ibrahimsiam","date":"2026-07-21 02:39:51"},"1.1.0":{"tag":"1.1.0","author":"ibrahimsiam","date":"2026-07-21 02:39:51"},"1.1.1":{"tag":"1.1.1","author":"ibrahimsiam","date":"2026-07-21 04:10:22"},"1.1.2":{"tag":"1.1.2","author":"ibrahimsiam","date":"2026-07-21 04:15:16"},"1.1.3":{"tag":"1.1.3","author":"ibrahimsiam","date":"2026-07-21 04:36:49"},"1.1.4":{"tag":"1.1.4","author":"ibrahimsiam","date":"2026-07-21 04:36:49"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3615605,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3615605,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5","1.0.6","1.0.7","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"PrintaRex Shipping settings page in WooCommerce (WooCommerce &gt; Settings &gt; Shipping &gt; PrintaRex Shipping).","2":"Real-time shipping rate displayed at checkout, calculated per customer city.","3":"Auto-configured store connection after plugin activation."}},"plugin_section":[],"plugin_tags":[272502,150051,3546,286,272503],"plugin_category":[45],"plugin_contributors":[272504],"plugin_business_model":[],"class_list":["post-300726","plugin","type-plugin","status-publish","hentry","plugin_tags-printarex","plugin_tags-real-time-rates","plugin_tags-shipping","plugin_tags-woocommerce","plugin_tags-zone-based","plugin_category-ecommerce","plugin_contributors-ibrahimsiam","plugin_committers-ibrahimsiam"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/printarex-integration-for-woocommerce\/assets\/icon-128x128.png?rev=3615605","icon_2x":"https:\/\/ps.w.org\/printarex-integration-for-woocommerce\/assets\/icon-256x256.png?rev=3615605","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>PrintaRex Integration for WooCommerce connects your store to the PrintaRex fulfillment network, providing accurate per-city, per-item shipping rates at checkout.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Real-time rates<\/strong> - Shipping costs are calculated based on the customer's exact city, not just country or state.<\/li>\n<li><strong>Per-item pricing<\/strong> - Each product is priced individually based on its provider's shipping zones.<\/li>\n<li><strong>Zero-configuration setup<\/strong> - Connect your store to PrintaRex, install the plugin, done. The connection, signing secret, and shipping zone are configured automatically.<\/li>\n<li><strong>Mixed cart support<\/strong> - Non-PrintaRex items are silently ignored; they use your existing WooCommerce shipping zones.<\/li>\n<li><strong>Fallback rate<\/strong> - If the PrintaRex API is temporarily unavailable, a configurable flat rate is used.<\/li>\n<li><strong>Caching<\/strong> - Rates are cached for 5 minutes (configurable) to minimize API calls.<\/li>\n<li><strong>PrintaRex admin page<\/strong> - A dedicated PrintaRex menu in WordPress lets you connect your store, review your setup status, and open your PrintaRex dashboard without leaving WordPress.<\/li>\n<\/ul>\n\n<p><strong>Supported Countries:<\/strong><\/p>\n\n<p>The plugin provides per-city zone rates for all countries in the PrintaRex network, including UAE and Egypt - even for countries where WooCommerce has no built-in state\/province definitions.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the <strong>PrintaRex API<\/strong> (<code>https:\/\/api.printarex.com<\/code> by default; configurable in the plugin settings) to provide real-time shipping rates. Requests are made in the following scenarios:<\/p>\n\n<ul>\n<li><strong>Plugin activation &amp; admin auto-configuration<\/strong> \u2014 A GET request is sent to <code>{api_url}\/carrier-service\/woocommerce\/lookup<\/code> with your site domain to retrieve your store connection ID. This runs on activation and is retried periodically from the WordPress admin if the connection ID is missing (with a 1-hour backoff between attempts). Rate requests are signed with the WooCommerce REST API consumer secret that your own store created when connecting to PrintaRex \u2014 the plugin reads it locally from your WordPress database and never transmits it.<\/li>\n<li><strong>Checkout rate calculation<\/strong> \u2014 A POST request is sent to <code>{api_url}\/carrier-service\/woocommerce\/{connectionId}\/rates<\/code> each time a customer enters their shipping address at checkout.<\/li>\n<\/ul>\n\n<p><strong>Data transmitted to PrintaRex:<\/strong><\/p>\n\n<ul>\n<li>Your store's domain (during activation lookup)<\/li>\n<li>Customer destination city and country code (during rate calculation)<\/li>\n<li>Cart item WooCommerce product\/variation IDs and quantities<\/li>\n<li>Store currency code<\/li>\n<\/ul>\n\n<p><strong>No personal customer data<\/strong> (name, email, phone, payment details, IP address) is transmitted.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/printarex.com\">PrintaRex Website<\/a><\/li>\n<li><a href=\"https:\/\/printarex.com\/terms\">PrintaRex Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/printarex.com\/privacy\">PrintaRex Privacy Policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Connect your store to PrintaRex (PrintaRex Dashboard &gt; Stores &gt; Add Store &gt; WooCommerce).<\/li>\n<li>In your WordPress admin, go to <strong>Plugins &gt; Add New<\/strong>, search for <strong>PrintaRex Integration for WooCommerce<\/strong>, click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>That's it. The plugin configures itself: it finds your store's PrintaRex connection, sets up signed rate requests, and creates a shipping zone automatically.<\/li>\n<\/ol>\n\n<p><strong>Verify the setup:<\/strong><\/p>\n\n<ol>\n<li>Go to <strong>WooCommerce &gt; Settings &gt; Shipping &gt; PrintaRex Shipping<\/strong>.<\/li>\n<li>Confirm that the <strong>Store Connection ID<\/strong> field is populated.<\/li>\n<li>If it is empty, make sure your store is connected to PrintaRex, then click <strong>Save changes<\/strong> on this screen to retry.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20a%20printarex%20account%3F\"><h3>Does this plugin require a PrintaRex account?<\/h3><\/dt>\n<dd><p>Yes. You must have an active PrintaRex merchant account with a connected WooCommerce store. The plugin communicates with the PrintaRex API to fetch shipping rates for your products.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20printarex%20api%20is%20down%3F\"><h3>What happens if the PrintaRex API is down?<\/h3><\/dt>\n<dd><p>The plugin uses a configurable fallback rate (default: 30 in your store currency) so customers can still complete checkout.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20variable%20products%3F\"><h3>Does this work with variable products?<\/h3><\/dt>\n<dd><p>Yes. The plugin sends the WooCommerce variation ID for variable products, which maps to the correct PrintaRex product variant.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20alongside%20other%20shipping%20methods%3F\"><h3>Can I use this alongside other shipping methods?<\/h3><\/dt>\n<dd><p>Yes. PrintaRex Shipping only calculates rates for products fulfilled through PrintaRex. Other products in the cart will use your existing WooCommerce shipping zones and methods.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20the%20api%20url%20for%20development%3F\"><h3>How do I change the API URL for development?<\/h3><\/dt>\n<dd><p>Go to WooCommerce &gt; Settings &gt; Shipping &gt; PrintaRex Shipping and update the API URL field.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Added a Disconnect store button to the Connect tab \u2014 it opens your store's page on PrintaRex, where the disconnect is confirmed with your PrintaRex login.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>The Connect tab now shows your connection details once the store is linked, instead of the connect call-to-action.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>The PrintaRex admin page now completes an unfinished setup automatically: if your store is connected to PrintaRex but the plugin's local configuration is missing (for example when the store was connected after the plugin was activated), opening the page stores the connection and creates the shipping zone by itself.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>The admin menu now uses the PrintaRex logo.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New PrintaRex admin page in WordPress: connect your store, check setup status, and jump to your PrintaRex dashboard without leaving WordPress.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Zero-configuration setup: the API URL now defaults to the production PrintaRex API, and the signing secret is discovered automatically from the WooCommerce REST API key created when your store was connected to PrintaRex. No manual configuration needed.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Saving the shipping settings now retries auto-configuration immediately \u2014 previously the hourly backoff could delay the first connection lookup after entering the API URL.<\/li>\n<li>Installation instructions rewritten for installs from the WordPress.org plugin directory.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Renamed plugin to PrintaRex Integration for WooCommerce.<\/li>\n<li>Updated text domain to printarex-integration-for-woocommerce to match the requested new slug.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Updated WordPress tested-up-to version to 7.0 and WooCommerce tested-up-to version to 10.9.<\/li>\n<li>Rate requests are now always HMAC-signed using the WooCommerce consumer secret configured in the shipping method settings; if no secret is configured the fallback rate is used instead of sending an unsigned request.<\/li>\n<li>The API secret is no longer stored from the lookup response \u2014 it is entered by the merchant in the shipping method settings.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Renamed plugin display title to PrintaRex Shipping for WooCommerce for clearer discoverability.<\/li>\n<li>Added Requires Plugins header for WooCommerce dependency.<\/li>\n<li>Updated WordPress tested-up-to version to 6.9.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fixed contributor username in readme.<\/li>\n<li>Fixed license header format inconsistency.<\/li>\n<li>Updated tested-up-to versions.<\/li>\n<li>Removed hardcoded API URL fallback \u2014 plugin returns early if no URL configured.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added uninstall.php for clean option and transient removal.<\/li>\n<li>Added External Services disclosure for WordPress.org compliance.<\/li>\n<li>Fixed malformed API response handling \u2014 invalid JSON now triggers fallback rate.<\/li>\n<li>Fixed multi-currency cache key \u2014 currency is now included in rate cache.<\/li>\n<li>Fixed auto-configuration retry loop \u2014 1-hour backoff between failed attempts.<\/li>\n<li>Fixed double URL encoding in domain lookup.<\/li>\n<li>Fixed multisite WooCommerce detection (network-activated support).<\/li>\n<li>Fixed zone creation when store base country is not configured.<\/li>\n<li>Fixed WPCS escaping in admin notice output.<\/li>\n<li>Updated readme accuracy (external services disclosure, feature descriptions).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Real-time zone-based shipping rate calculation.<\/li>\n<li>Zero-config auto-setup via domain lookup.<\/li>\n<li>Transient-based rate caching.<\/li>\n<li>HMAC-SHA256 request signing for API security.<\/li>\n<li>Configurable fallback rate, request timeout, and cache duration.<\/li>\n<li>WooCommerce HPOS compatibility.<\/li>\n<\/ul>","raw_excerpt":"Real-time zone-based shipping rates from PrintaRex for WooCommerce stores.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/300726","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=300726"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ibrahimsiam"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=300726"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=300726"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=300726"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=300726"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=300726"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=300726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}