{"id":347185,"date":"2026-10-06T12:07:18","date_gmt":"2026-10-06T12:07:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/gls-clickship-denmark\/"},"modified":"2026-10-06T12:06:58","modified_gmt":"2026-10-06T12:06:58","slug":"gls-clickship-denmark","status":"publish","type":"plugin","link":"https:\/\/gl.wordpress.org\/plugins\/gls-clickship-denmark\/","author":23184507,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.1.3","stable_tag":"4.1.3","tested":"7.1.3","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"GLS Click&Ship (Denmark)","header_author":"GLS Click & Ship","header_description":"GLS for WooCommerce","assets_banners_color":"5456a9","last_updated":"2026-10-06 12:06:58","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/gls-denmark.com\/","rating":0,"author_block_rating":0,"active_installs":20,"downloads":65,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"4.1.3":{"tag":"4.1.3","author":"glsdenmark","date":"2026-10-06 12:06:58","revision":3730745}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3730745,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3730745,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3730745,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3730745,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["4.1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3730745,"resolution":"1","location":"assets","locale":"","width":1386,"height":945},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3730745,"resolution":"2","location":"assets","locale":"","width":1385,"height":952},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3730745,"resolution":"3","location":"assets","locale":"","width":1379,"height":988},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3730745,"resolution":"4","location":"assets","locale":"","width":1124,"height":923}},"screenshots":{"1":"Plugin settings page inside WooCommerce.","2":"Generating labels from the WooCommerce order list.","3":"Pickup point map selection during checkout.","4":"Tracking information displayed in customer emails."}},"plugin_section":[],"plugin_tags":[13827,47696,3808,3546,286],"plugin_category":[45],"plugin_contributors":[284676],"plugin_business_model":[],"class_list":["post-347185","plugin","type-plugin","status-publish","hentry","plugin_tags-delivery","plugin_tags-gls","plugin_tags-labels","plugin_tags-shipping","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-glsdenmark","plugin_committers-glsdenmark"],"banners":{"banner":"https:\/\/ps.w.org\/gls-clickship-denmark\/assets\/banner-772x250.png?rev=3730745","banner_2x":"https:\/\/ps.w.org\/gls-clickship-denmark\/assets\/banner-1544x500.png?rev=3730745","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/gls-clickship-denmark\/assets\/icon-128x128.png?rev=3730745","icon_2x":"https:\/\/ps.w.org\/gls-clickship-denmark\/assets\/icon-256x256.png?rev=3730745","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/gls-clickship-denmark\/assets\/screenshot-1.png?rev=3730745","caption":"Plugin settings page inside WooCommerce."},{"src":"https:\/\/ps.w.org\/gls-clickship-denmark\/assets\/screenshot-2.png?rev=3730745","caption":"Generating labels from the WooCommerce order list."},{"src":"https:\/\/ps.w.org\/gls-clickship-denmark\/assets\/screenshot-3.png?rev=3730745","caption":"Pickup point map selection during checkout."},{"src":"https:\/\/ps.w.org\/gls-clickship-denmark\/assets\/screenshot-4.png?rev=3730745","caption":"Tracking information displayed in customer emails."}],"raw_content":"<!--section=description-->\n<p>GLS Click &amp; Ship for WooCommerce allows you to effortlessly connect your online store with GLS Denmark\u2019s Click &amp; Ship platform.<br \/>\nThis integration streamlines your entire delivery process \u2014 from order creation to label generation and parcel tracking \u2014 directly inside your WooCommerce dashboard.<\/p>\n\n<p><strong>Main features:<\/strong>\n* Automatically send order details to GLS Click &amp; Ship\n* Generate and print GLS shipping labels directly from WooCommerce\n* Track shipments with real-time status updates\n* Offer flexible delivery options, including pickup point selection\n* Works seamlessly with popular shipping extensions like WooCommerce Weight Based Shipping\n* Reduce manual work and eliminate export\/import hassles<\/p>\n\n<p><strong>Requirements<\/strong>\n* A valid GLS Click &amp; Ship account \u2014 <a href=\"https:\/\/clickandship.gls.dk\/\">Create one here<\/a>\n* WooCommerce 5.8 or later\n* PHP 7.4 or higher<\/p>\n\n<h3>External services<\/h3>\n\n<p><strong>GLS Click &amp; Ship<\/strong> \u2013 To enable you to create shipping labels for your orders via this integration, the plugin sends shipping data (shipping address, order item list, and shipping method name) to the GLS Click &amp; Ship API.\nAPI endpoint: <a href=\"https:\/\/clickandship.gls.dk\/\">https:\/\/clickandship.gls.dk\/<\/a>\nTerms of use: <a href=\"https:\/\/gls-group.com\/DK\/da\/generelle-betingelser\/\">https:\/\/gls-group.com\/DK\/da\/generelle-betingelser\/<\/a>\nPrivacy policy: <a href=\"https:\/\/gls-group.com\/DK\/da\/data-og-sikkerhed\/\">https:\/\/gls-group.com\/DK\/da\/data-og-sikkerhed\/<\/a><\/p>\n\n<p><strong>Google Maps API<\/strong> \u2013 This plugin uses Google Maps API to display pickup locations on an interactive map.<br \/>\nThe following data is sent to Google Maps API:\n- User's location (when searching for nearby pickup points)\n- Pickup point addresses\n- Map center coordinates<\/p>\n\n<p>This service is used to help customers locate and select their preferred pickup points during checkout.<br \/>\nGoogle Maps API Terms of Service: <a href=\"https:\/\/developers.google.com\/maps\/terms\">https:\/\/developers.google.com\/maps\/terms<\/a><br \/>\nGoogle Maps API Privacy Policy: <a href=\"https:\/\/policies.google.com\/privacy\">https:\/\/policies.google.com\/privacy<\/a><\/p>\n\n<p><strong>OpenStreetMap<\/strong> \u2013 When the OpenStreetMap map or address lookup is used, the browser requests map tiles from tile.openstreetmap.org and address search results from nominatim.openstreetmap.org. Tile requests identify the viewed map area; search requests contain the address or postcode and country. These services also receive the browser's IP address and ordinary HTTP request metadata. Requests occur when the pickup map is opened, moved or searched using these providers.\nTerms of use: https:\/\/osmfoundation.org\/wiki\/Terms_of_Use\nPrivacy policy: https:\/\/osmfoundation.org\/wiki\/Privacy_Policy<\/p>\n\n<p><strong>WooCommerce Weight Based Shipping<\/strong> \u2013 If you are using this plugin, GLS Click &amp; Ship integrates with it to correctly transmit the shipping method name.<\/p>\n\n<h3>4.0.4 - 2025-10-17<\/h3>\n\n<p>Fix - Enforce pickup point selection when mandatory\nFix - Make Pickup Location Button available for all carriers with pickup capability.<\/p>\n\n<h3>4.0.5 - 2025-11-21<\/h3>\n\n<p>Fix - Add compatibility function to make the map display with elementor checkout\nFix - Add event listeners that actively monitors and restores the pickup button dissapearing on shipping method change.\nFix - Added type validation using <code>is_object()<\/code> and <code>is_array()<\/code> to fix CarrierId Property Assignment Error<\/p>\n\n<h3>4.0.6 - 2025-12-09<\/h3>\n\n<p>Fix - Correct the Automatic Export status-saving logic to ensure automatic exports run as expected. \nFeature - Add support for importing HTS Code and Country of Origin from WooCommerce custom product attributes when available.<\/p>\n\n<h3>4.0.7 - 2026-01-12<\/h3>\n\n<p>Fix - Resolved a fatal error when creating labels via Bulk Actions, ensuring bulk label generation works reliably without crashing.\nFix - Improved API authentication error handling to prevent generic \u201cInvalid keys\u201d messages and provide clearer, actionable feedback when connection or credential issues occur.<\/p>\n\n<h3>4.0.8 - 2026-02-11<\/h3>\n\n<p>Fix \u2014 Settings page crash preventing access to the plugin settings<\/p>\n\n<p>Fix \u2014 Added custom method to resolve error \"Call to undefined method WC_Countries::get_country_alpha3()\" that was preventing label printing and order export<\/p>\n\n<p>Enhancement \u2014 Added a \"Reset Export Status\" button in the order actions dropdown that lets merchants reset the status and re-export orders<\/p>\n\n<h3>4.0.9 - 2026-03-16<\/h3>\n\n<p>Fix - Carrier ID not being passed to the pickup widget before map open on classic checkout templates causing the PUDO map to fail<\/p>\n\n<p>Fix - Map markers now display correctly with the right size and fallback image<\/p>\n\n<p>Fix - Fatal error on checkout page now resolved<\/p>\n\n<p>Fix - Checkout page no longer freezes after re-selecting a pickup point<\/p>\n\n<p>Fix - Pickup button visibility detection across different checkout types including Classic<\/p>\n\n<p>Fix - Deprecated get_meta() usage causing PHP fatal error on newer WooCommerce versions when visiting cart page<\/p>\n\n<p>Fix - Label printing infinite spinner caused by large PDF payload being sent to the browser<\/p>\n\n<h3>4.1.0 - 2026-05-06<\/h3>\n\n<p>Fix - Resolved block and classic checkout incompatibility causing the pickup point to not display correctly on the order received page<\/p>\n\n<p>Fix - Pickup point now correctly displayed inside the shipping address block on the order confirmation page<\/p>\n\n<p>Fix - Mandatory pickup point is now properly enforced, orders cannot be completed without selecting a pickup location when required by the carrier<\/p>\n\n<p>Fix - API error responses are now correctly captured and displayed, giving clearer feedback when an export fails<\/p>\n\n<p>Fix - Resolved fatal error on WooCommerce 10.8.1 caused by unsupported method call on shipping rate object<\/p>\n\n<p>Fix - Geocoding no longer crashes the map when the address lookup returns no results<\/p>\n\n<p>Enhancement - Google Maps key is now fetched automatically from the API, no longer requires manual entry in plugin settings<\/p>\n\n<p>Enhancement - Improved checkout performance and stability through internal code optimisation<\/p>\n\n<h3>4.1.1 - 2026-06-18<\/h3>\n\n<p>Fix - Pickup point button unresponsive in certain server environments due to a conflict between PHP-rendered markup and the JavaScript event handler<\/p>\n\n<h3>4.1.2 - 2026-07-01<\/h3>\n\n<p>Enhancement - Customer delivery address now shown as a pin on the pickup point map for easier navigation<\/p>\n\n<p>Enhancement - Pickup point details now included in WooCommerce order confirmation emails<\/p>\n\n<p>Enhancement - Map now validates address fields upfront and guides the customer before attempting to load pickup points<\/p>\n\n<p>Enhancement - Mandatory pickup reminder now surfaces at the most relevant stage of checkout for a clearer user experience<\/p>\n\n<p>Enhancement - Pickup point label in checkout now displays the full location details consistent with the map and list view<\/p>\n\n<h3>4.1.3 - 2026-09-28<\/h3>\n\n<p>Enhancement - Restored service-level selection, with carrier options limited to combinations supported by the selected service level.<\/p>\n\n<p>Enhancement - Replaced runtime-generated carrier classes with class_alias()-based registration for more reliable upgrades and broader hosting compatibility.<\/p>\n\n<p>Enhancement - Added HMAC v2 support for complete and consistent order status and tracking callbacks.<\/p>\n\n<p>Enhancement - Improved activation and dependency handling across WordPress and WooCommerce environments.<\/p>\n\n<p>Enhancement - Improved database operations, WooCommerce logging, and AJAX-loaded shipping settings.<\/p>\n\n<p>Fix - Corrected settings-page controls, carrier option persistence, and callback field handling.<\/p>\n\n<p>Fix - Corrected the external-service terms and privacy links.<\/p>\n\n<h3>Legal notice<\/h3>\n\n<p>This plugin communicates with the GLS Click &amp; Ship API service operated by GLS Denmark.<br \/>\nBy using this plugin, you agree to GLS Click &amp; Ship\u2019s applicable <a href=\"https:\/\/gls-group.com\/DK\/da\/generelle-betingelser\/\">Terms and Conditions<\/a> and <a href=\"https:\/\/gls-group.com\/DK\/da\/data-og-sikkerhed\/\">Privacy Policy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/gls-clickship-denmark\/<\/code> directory, or install it via the WordPress Plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Settings \u2192 Shipping \u2192 GLS Click &amp; Ship<\/strong> to configure your settings.<\/li>\n<li>Enter your GLS Click &amp; Ship API credentials.<\/li>\n<li>Once configured, you can generate shipping labels directly from the WooCommerce order page.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20gls%20account%20to%20use%20this%20plugin%3F\"><h3>Do I need a GLS account to use this plugin?<\/h3><\/dt>\n<dd><p>Yes. You need an active GLS Click &amp; Ship account to use this integration. You can register at <a href=\"https:\/\/clickandship.gls.dk\/\">https:\/\/clickandship.gls.dk\/<\/a>.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20plugin%20for%20international%20shipments%3F\"><h3>Can I use this plugin for international shipments?<\/h3><\/dt>\n<dd><p>Yes. GLS Click &amp; Ship supports both domestic and international shipping services depending on your account configuration.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20support%20pickup%20point%20deliveries%3F\"><h3>Does this plugin support pickup point deliveries?<\/h3><\/dt>\n<dd><p>Yes. Customers can select GLS ParcelShops during checkout using the pickup-point map. OpenStreetMap is used by default. Google Maps is used only when a valid Google Maps API key is configured.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20with%20weight-based%20shipping%20plugins%3F\"><h3>Does the plugin work with weight-based shipping plugins?<\/h3><\/dt>\n<dd><p>Yes. It integrates seamlessly with WooCommerce Weight Based Shipping, ensuring accurate label data transmission.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.0.0 - 2025-03-10<\/h4>\n\n<p>Enhancement \u2013 Added support for block-based checkout and theme compatibility with pickup point maps.<br \/>\nEnhancement \u2013 Increased security with nonce validation and user role verification.<br \/>\nEnhancement \u2013 Implemented field sanitization and escaping throughout the plugin.<br \/>\nEnhancement \u2013 Replaced direct SQL with prepared statements for enhanced security.<br \/>\nEnhancement \u2013 Removed unnecessary input fields from shipping method creation.<br \/>\nFix \u2013 Removed unused marker assets from pickup point maps.<br \/>\nFix \u2013 Updated frontend geolocation and recompiled assets.<br \/>\nFix \u2013 Added translations for all backend and frontend text strings.<\/p>\n\n<h4>4.0.2 - 2025-05-29<\/h4>\n\n<p>Fix \u2013 Corrected tracking URL display in the Order Details \u201cCustom Fields\u201d section after label creation.<br \/>\nFix \u2013 Removed \u201cLabel Printing Consent\u201d option from settings and defaulted to consent.<br \/>\nFix \u2013 Updated translation strings.<br \/>\nFix \u2013 Prevented \u201cInvalid JSON\u201d and \u201cPHP Fatal\u201d errors for specific WooCommerce versions.<br \/>\nEnhancement \u2013 Improved design of pickup point buttons and checkout map.<br \/>\nEnhancement \u2013 Enhanced mobile-friendly layout for the checkout map.<br \/>\nEnhancement \u2013 Mapped product SKU to \u201cArticle Number\u201d field.<\/p>\n\n<h4>4.0.3 - 2025-06-24<\/h4>\n\n<p>Fix \u2013 Resolved PHP compatibility warnings and deprecated <code>strpos()<\/code> usage (PHP 8.1+).<br \/>\nFix \u2013 Order status now updates correctly when exported.<br \/>\nFix \u2013 Prevented print label action from re-triggering when paginating callback URLs.<br \/>\nEnhancement \u2013 Updated database schema to include the required <code>labelurl<\/code> column.<br \/>\nEnhancement \u2013 Added database upgrade routine with improved error handling.<br \/>\nEnhancement \u2013 Declared all properties explicitly, removing deprecated dynamic properties.<br \/>\nEnhancement \u2013 Improved JSON parsing with stronger error handling.<br \/>\nEnhancement \u2013 Secured SQL queries using prepared statements.<\/p>\n\n<h4>4.0.4 - 2025-10-15<\/h4>\n\n<p>Fix \u2013 Default pickup behavior bug when using Free Shipping.<br \/>\nFix \u2013 AJAX error (400 Bad Request) when clearing pickup sessions.<br \/>\nFix \u2013 Missing button for mandatory pickup points in Flat Rate carriers. \nFix \u2013 Removed Service Level option from Weight-Based Shipping.<br \/>\nFix \u2013 Pickup session now correctly clears when switching from pickup to non-pickup shipping methods.\nEnhancement \u2013 Added automatic database schema update for Label URL storage to prevent \"No Labels to Print\" errors.<br \/>\nEnhancement \u2013 Added loader before the map loads to improve user experience.<br \/>\nEnhancement \u2013 Made the pickup point map fully responsive across all devices.<\/p>","raw_excerpt":"Easily create and manage GLS shipping labels directly from your WooCommerce store using GLS Click &amp; Ship.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/347185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=347185"}],"author":[{"embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/glsdenmark"}],"wp:attachment":[{"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=347185"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=347185"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=347185"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=347185"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=347185"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/gl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=347185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}