{"id":276457,"date":"2026-05-14T15:20:26","date_gmt":"2026-05-14T15:20:26","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/qapla-pudo\/"},"modified":"2026-05-22T14:58:31","modified_gmt":"2026-05-22T14:58:31","slug":"qapla-pudo","status":"publish","type":"plugin","link":"https:\/\/hu.wordpress.org\/plugins\/qapla-pudo\/","author":23231223,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.03","stable_tag":"2.03","tested":"6.9.4","requires":"6.3","requires_php":"8.1","requires_plugins":null,"header_name":"Qapla' Pudo","header_author":"Qapla'","header_description":"Collection points for your shipments.","assets_banners_color":"536d86","last_updated":"2026-05-22 14:58:31","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":75,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.03":{"tag":"2.03","author":"qaplawoocommerce","date":"2026-05-22 14:58:31"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3532202,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3544003,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3544003,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"qapla-pudo-v2\/shipping-block":{"name":"qapla-pudo-v2\/shipping-block","title":"Qapla"}},"tagged_versions":["2.03"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3532225,"resolution":"1","location":"assets","locale":"","width":809,"height":792},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3532225,"resolution":"2","location":"assets","locale":"","width":325,"height":588},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3532225,"resolution":"3","location":"assets","locale":"","width":815,"height":785},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3532225,"resolution":"4","location":"assets","locale":"","width":692,"height":562},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3532225,"resolution":"5","location":"assets","locale":"","width":1580,"height":806},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3532225,"resolution":"6","location":"assets","locale":"","width":1651,"height":772}},"screenshots":[]},"plugin_section":[],"plugin_tags":[264013,184916,262931,3546,286],"plugin_category":[45],"plugin_contributors":[262932],"plugin_business_model":[],"class_list":["post-276457","plugin","type-plugin","status-publish","hentry","plugin_tags-collection-points","plugin_tags-pickup-points","plugin_tags-pudo","plugin_tags-shipping","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-qaplawoocommerce","plugin_committers-qaplawoocommerce"],"banners":{"banner":"https:\/\/ps.w.org\/qapla-pudo\/assets\/banner-772x250.png?rev=3544003","banner_2x":"https:\/\/ps.w.org\/qapla-pudo\/assets\/banner-1544x500.png?rev=3544003","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/qapla-pudo\/assets\/icon.svg?rev=3532202","icon":"https:\/\/ps.w.org\/qapla-pudo\/assets\/icon.svg?rev=3532202","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/qapla-pudo\/assets\/screenshot-1.png?rev=3532225","caption":""},{"src":"https:\/\/ps.w.org\/qapla-pudo\/assets\/screenshot-2.png?rev=3532225","caption":""},{"src":"https:\/\/ps.w.org\/qapla-pudo\/assets\/screenshot-3.png?rev=3532225","caption":""},{"src":"https:\/\/ps.w.org\/qapla-pudo\/assets\/screenshot-4.png?rev=3532225","caption":""},{"src":"https:\/\/ps.w.org\/qapla-pudo\/assets\/screenshot-5.png?rev=3532225","caption":""},{"src":"https:\/\/ps.w.org\/qapla-pudo\/assets\/screenshot-6.png?rev=3532225","caption":""}],"raw_content":"<!--section=description-->\n<p><strong>Pickup Points for WooCommerce \u2013 Offer Your Customers the Flexibility They Want<\/strong><\/p>\n\n<p>Transform your checkout by adding a new shipping method: pickup points. With Qapla' Pudo, your customers choose when and where to collect their orders, without waiting at home for a courier.<\/p>\n\n<h4>A complete solution that grows with your business<\/h4>\n\n<p>This plugin integrates seamlessly into WooCommerce (via Qapla' or GLS) and puts you on par with major market players. Your customers get a reliable and convenient delivery option, while you reduce logistics costs and inventory buildup.<\/p>\n\n<p><strong>What you can do:<\/strong><\/p>\n\n<ul>\n<li>Enable pickup points at checkout with simple configuration<\/li>\n<li>Customize shipping costs for this method (or make it free above a threshold)<\/li>\n<li>Choose between interactive maps (Google Maps or OpenStreetMap) or list view: desktop and mobile adapt automatically<\/li>\n<li>Access thousands of pickup points across Europe \u2013 Qapla' integrates 20+ couriers (UPS, DHL, GLS, FedEx, TNT, InPost, and many others)<\/li>\n<\/ul>\n\n<p><strong>Compatible with:<\/strong><\/p>\n\n<ul>\n<li><strong>Qapla' Platform<\/strong> \u2013 access a network of European couriers with extensive coverage<\/li>\n<li><strong>GLS Platform<\/strong> \u2013 use exclusively the GLS pickup network<\/li>\n<\/ul>\n\n<p>The plugin is free to use. You'll need an active contract with Qapla' or GLS to use it.<\/p>\n\n<h3>Third Party Services<\/h3>\n\n<p>This plugin connects to the following external services:<\/p>\n\n<h4>Qapla' API<\/h4>\n\n<ul>\n<li>Service URL: https:\/\/api.qapla.it<\/li>\n<li>Purpose: Retrieve pickup points (PUDO) near a shipping address, and retrieve the list of available couriers (admin settings page only).<\/li>\n<li>Terms of Service: https:\/\/www.qapla.it\/terms-and-conditions\/<\/li>\n<li>Privacy Policy: https:\/\/www.qapla.io\/privacy-policy<\/li>\n<li>Data transmitted: Shipping address (postcode, city, country, street) is sent on checkout to find nearby pickup points. The private API key is sent with each request for authentication. For the couriers list, only the private API key is transmitted (no user data).<\/li>\n<\/ul>\n\n<h4>GLS Italy API<\/h4>\n\n<ul>\n<li>Service URL: https:\/\/api.sellsend2.gls-italy.com<\/li>\n<li>Purpose: Alternative API for GLS pickup points (when GLS platform is selected)<\/li>\n<li>Terms of Service: https:\/\/www.gls-italy.com\/it\/chi-siamo\/legal\/condizioni-di-trasporto\/<\/li>\n<li>Privacy Policy: https:\/\/gls-group.eu\/IT\/it\/privacy-policy<\/li>\n<li>Data transmitted: Shipping address (postcode, city, street) to find nearby pickup points<\/li>\n<\/ul>\n\n<h4>OpenStreetMap Nominatim<\/h4>\n\n<ul>\n<li>Service URL: https:\/\/nominatim.openstreetmap.org<\/li>\n<li>Purpose: Geocoding service to convert addresses to coordinates for map display<\/li>\n<li>Terms of Service: https:\/\/operations.osmfoundation.org\/policies\/nominatim\/<\/li>\n<li>Privacy Policy: https:\/\/wiki.osmfoundation.org\/wiki\/Privacy_Policy<\/li>\n<li>Data transmitted: Shipping address for geocoding<\/li>\n<\/ul>\n\n<h4>Google Maps API (Optional)<\/h4>\n\n<ul>\n<li>Service URL: https:\/\/maps.googleapis.com<\/li>\n<li>Purpose: Map display when Google Maps view is configured by the user<\/li>\n<li>Terms of Service: https:\/\/cloud.google.com\/maps-platform\/terms<\/li>\n<li>Privacy Policy: https:\/\/policies.google.com\/privacy<\/li>\n<li>Data transmitted: User location data for map rendering<\/li>\n<li>Note: Requires user to provide their own Google Maps API key<\/li>\n<\/ul>\n\n<h4>Qapla' Tracking Service<\/h4>\n\n<ul>\n<li>Service URL: https:\/\/tracking.qapla.it, https:\/\/api.qapla.it and https:\/\/cdn.qapla.it<\/li>\n<li>Purpose: Display shipment tracking widget and live status on the order detail page. Shipment event status icons are loaded from https:\/\/cdn.qapla.it as part of the tracking data returned by the Qapla' API.<\/li>\n<li>Terms of Service: https:\/\/www.qapla.it\/terms-and-conditions\/<\/li>\n<li>Privacy Policy: https:\/\/www.qapla.io\/privacy-policy<\/li>\n<li>Data transmitted: Tracking number and API key are sent to retrieve tracking events. Status icon images are loaded directly from cdn.qapla.it as part of the service response.<\/li>\n<li>Note: Only active when a tracking number has been assigned to the order and the Tracking View setting is not set to \"Hide tracking\".<\/li>\n<\/ul>\n\n<h3>Development<\/h3>\n\n<h4>Building Assets<\/h4>\n\n<p>The plugin uses npm for building JavaScript assets. To build:<\/p>\n\n<ol>\n<li>Navigate to the plugin directory<\/li>\n<li>Run <code>npm install<\/code> to install dependencies<\/li>\n<li>Run <code>npm run build<\/code> to build production assets<\/li>\n<\/ol>\n\n<h4>Source Code<\/h4>\n\n<p>The source code for all compiled\/minified files is included in this plugin package under js\/src\/.<\/p>\n\n<ul>\n<li><p>js\/dist\/qapla-pudo-block.js<\/p>\n\n<ul>\n<li>Built from: js\/src\/qapla-pudo-block.js (included in this plugin)<\/li>\n<li>Build command: npm install &amp;&amp; npm run build<\/li>\n<\/ul><\/li>\n<li><p>js\/google-markerclusterer.min.js<\/p>\n\n<ul>\n<li>Library: Google Maps MarkerClusterer v2.5.3<\/li>\n<li>License: Apache 2.0<\/li>\n<li>Original upstream source: https:\/\/github.com\/googlemaps\/js-markerclusterer<\/li>\n<li>TypeScript source included in this plugin at: js\/src\/google-markerclusterer\/\n(files: index.ts, markerclusterer.ts, cluster.ts, renderer.ts, marker-utils.ts,\noverlay-view-safe.ts, algorithms\/)<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h4>Third Party Libraries<\/h4>\n\n<ul>\n<li>Leaflet.js (v1.9.4) - BSD 2-Clause License - https:\/\/leafletjs.com\/<\/li>\n<\/ul>\n\n<h4>CARTO Tile Service (Optional)<\/h4>\n\n<ul>\n<li>Service URL: https:\/\/basemaps.cartocdn.com<\/li>\n<li>Purpose: Alternative map tile styles (Voyager, Positron, Dark Matter) when OpenStreetMap view is configured<\/li>\n<li>Terms of Service: https:\/\/carto.com\/legal\/<\/li>\n<li>Privacy Policy: https:\/\/carto.com\/privacy\/<\/li>\n<li>Data transmitted: Map tile coordinates for rendering<\/li>\n<li>Note: Only used when user selects a CARTO tile style in plugin settings<\/li>\n<\/ul>\n\n<h3>High-Performance Order Storage (HPOS)<\/h3>\n\n<p>This plugin is compatible with WooCommerce High-Performance Order Storage (HPOS).<\/p>\n\n<p>To enable HPOS in WooCommerce:\n1. Go to WooCommerce \u2192 Settings \u2192 Advanced \u2192 Features\n2. Enable \"High-Performance Order Storage\"\n3. Click \"Save changes\"<\/p>\n\n<p>The plugin uses the WooCommerce Order API (<code>$order-&gt;get_meta()<\/code>, <code>$order-&gt;update_meta_data()<\/code>) for all order data operations, ensuring full compatibility with HPOS.<\/p>\n\n<!--section=installation-->\n<h4>Part 1: Plugin Installation<\/h4>\n\n<p><strong>Method 1: From WordPress Plugin Directory (Recommended)<\/strong><\/p>\n\n<ol>\n<li>Log in to your WordPress admin<\/li>\n<li>Go to <strong>Plugins \u2192 Add New Plugin<\/strong><\/li>\n<li>Search for \"Qapla' Pickup Points\"<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<p><strong>Method 2: Manual Upload<\/strong><\/p>\n\n<ol>\n<li>Download the .zip file from https:\/\/wordpress.org\/plugins\/qapla-pudo\/<\/li>\n<li>Go to <strong>Plugins \u2192 Add New Plugin \u2192 Upload Plugin<\/strong><\/li>\n<li>Upload the .zip file and click <strong>Install Now<\/strong><\/li>\n<li>Click <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<h4>Part 2: Contract and API Credentials<\/h4>\n\n<p>The plugin requires an active contract with either <strong>Qapla'<\/strong> or <strong>GLS<\/strong> to retrieve pickup points. Without valid API credentials, no pickup points will be shown.<\/p>\n\n<p><strong>If you are a Qapla' customer:<\/strong><\/p>\n\n<ol>\n<li>Log in to your Qapla' account at https:\/\/app.qapla.it<\/li>\n<li>Go to the <strong>Channel<\/strong> section<\/li>\n<li>Copy your <strong>Public API Key<\/strong> and <strong>Private API Key<\/strong><\/li>\n<li>Verify that the PUDO service is active \u2014 you should see a \"Pickup Points\" menu item in the couriers configuration section<\/li>\n<li>If the service is not visible, contact your Qapla' representative<\/li>\n<\/ol>\n\n<p><strong>If you are a GLS customer (with Sell&amp;Send):<\/strong><\/p>\n\n<ol>\n<li>Log in to your GLS Sell&amp;Send account at https:\/\/sellsend2.gls-italy.com<\/li>\n<li>Go to the <strong>Channel<\/strong> section and locate your API key<\/li>\n<li>If the PUDO service is not listed as active, contact your GLS representative<\/li>\n<\/ol>\n\n<p><strong>If you are a GLS customer (without Sell&amp;Send):<\/strong><\/p>\n\n<ol>\n<li>Contact your GLS area representative<\/li>\n<li>Explain that you want to use the WordPress plugin \"Qapla' Pudo\" for pickup points<\/li>\n<li>Request the GLS API key for PUDO integration<\/li>\n<li>Once received, save the key \u2014 you will need it in the next step<\/li>\n<\/ol>\n\n<h4>Part 3: Plugin Configuration<\/h4>\n\n<ol>\n<li>In the WordPress admin left menu, click on <strong>Qapla' Pudo<\/strong> (separate menu item, not under Plugins)<\/li>\n<li>Choose your platform tab: <strong>Qapla'<\/strong> or <strong>GLS<\/strong><\/li>\n<li>Enter your API credentials in the appropriate fields and test the connection<\/li>\n<\/ol>\n\n<p><strong>Map display \u2014 choose one:<\/strong><\/p>\n\n<ul>\n<li><strong>Google Maps<\/strong> \u2013 more recognizable by customers; requires a Google Maps API key\n\n<ul>\n<li>Get your key at https:\/\/console.cloud.google.com \u2192 APIs &amp; Services \u2192 Credentials \u2192 Create API Key<\/li>\n<li>Enable <strong>Maps JavaScript API<\/strong> for the key<\/li>\n<li>Paste the key in the \"Google Maps API Key\" field in the plugin settings<\/li>\n<\/ul><\/li>\n<li><strong>OpenStreetMap<\/strong> \u2013 free, no API key required; choose from 4 tile styles (Voyager, Positron, Dark Matter, Standard)<\/li>\n<li><strong>List view<\/strong> \u2013 no map; shows pickup points sorted by distance; ideal for mobile<\/li>\n<\/ul>\n\n<p><strong>Search parameters:<\/strong><\/p>\n\n<ul>\n<li><em>Default search radius<\/em> (km) \u2013 recommended: 15\u201320 km<\/li>\n<li><em>Maximum pickup points to display<\/em> \u2013 recommended: 8\u201312<\/li>\n<\/ul>\n\n<p><strong>Tracking (optional):<\/strong> choose between Link, Widget, or Both to show shipment tracking on the customer's order page.<\/p>\n\n<ol>\n<li>Click <strong>Save Settings<\/strong><\/li>\n<\/ol>\n\n<h4>Part 4: Add Shipping Method to WooCommerce<\/h4>\n\n<ol>\n<li>Go to <strong>WooCommerce \u2192 Settings \u2192 Shipping<\/strong><\/li>\n<li>Select an existing shipping zone (e.g. \"Italy\") or create a new one<\/li>\n<li>Click <strong>Add Shipping Method<\/strong> and select <strong>Qapla' Pudo<\/strong><\/li>\n<li>Configure the method:\n\n<ul>\n<li><strong>Title<\/strong> \u2013 the label customers see at checkout (e.g. \"Pickup at partner location\")<\/li>\n<li><strong>Cost<\/strong> \u2013 leave empty for free, or enter an amount (e.g. 2.50)<\/li>\n<li><strong>Free Shipping Threshold<\/strong> \u2013 optional; order amount above which this method becomes free<\/li>\n<\/ul><\/li>\n<li>Click <strong>Save<\/strong><\/li>\n<\/ol>\n\n<h4>Configuration Checklist<\/h4>\n\n<p>Before going live, verify:<\/p>\n\n<ul>\n<li>Plugin installed and activated<\/li>\n<li>Active contract with Qapla' or GLS confirmed (PUDO service enabled)<\/li>\n<li>API key entered and connection test passed<\/li>\n<li>Map type or list view selected<\/li>\n<li>Google Maps API key inserted (if using Google Maps)<\/li>\n<li>Search radius and max PUDO configured<\/li>\n<li>Tracking option selected<\/li>\n<li>Settings saved<\/li>\n<li>Shipping method \"Qapla' Pudo\" added to the correct WooCommerce zone(s)<\/li>\n<li>Title, cost, and free shipping threshold configured in WooCommerce<\/li>\n<li>Checkout tested on desktop and mobile \u2014 pickup points appear and are selectable<\/li>\n<\/ul>\n\n<h4>Support<\/h4>\n\n<ul>\n<li><strong>Qapla' issues<\/strong>: support@qapla.it \u2014 https:\/\/www.qapla.it<\/li>\n<li><strong>GLS issues<\/strong>: contact your GLS area representative \u2014 https:\/\/www.gls-group.com<\/li>\n<li><strong>Plugin issues<\/strong>: https:\/\/wordpress.org\/plugins\/qapla-pudo\/ \u2192 Support tab<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20are%20the%20differences%20between%20qapla%27%20and%20gls%3F\"><h3>What are the differences between Qapla' and GLS?<\/h3><\/dt>\n<dd><p>Qapla' and GLS are two different platforms with different coverage:<\/p>\n\n<ul>\n<li><strong>Qapla'<\/strong>: Gives you access to a network of 20+ European couriers (UPS, DHL, GLS, FedEx, TNT, InPost, BRT, Correos, SEUR, and many others). Ideal if you want to offer your customers maximum choice of pickup points. The network is extensive across Italy, Spain, and all of Europe.<\/li>\n<li><strong>GLS<\/strong>: Offers exclusively GLS pickup points. If you already have a contract with GLS for deliveries, this is the most straightforward choice. Coverage is good in Italy and Europe, but limited to the GLS network only.<\/li>\n<\/ul>\n\n<p>In short: choose Qapla' for maximum flexibility and a wide network; choose GLS for a simple, dedicated solution.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20contract%20with%20qapla%27%20or%20gls%20to%20use%20the%20plugin%3F\"><h3>Do I need a contract with Qapla' or GLS to use the plugin?<\/h3><\/dt>\n<dd><p>Yes, it is required. The plugin is free, but to work it needs API credentials provided by an active contract with Qapla' or GLS. Without these credentials, the plugin cannot connect to the servers to retrieve pickup points.<\/p>\n\n<p>If you don't have a contract yet, contact Qapla' or GLS directly. If you already have a contract with one of them (even for other logistics solutions), you can reuse the same API credentials.<\/p><\/dd>\n<dt id=\"how%20does%20the%20plugin%20appear%20in%20checkout%20and%20what%20information%20do%20customers%20see%3F\"><h3>How does the plugin appear in checkout and what information do customers see?<\/h3><\/dt>\n<dd><p>It depends on how you configure it. The plugin offers two display modes:<\/p>\n\n<p><strong>Interactive map (Google Maps or OpenStreetMap):<\/strong><\/p>\n\n<ul>\n<li>Customers see a map with pickup points marked<\/li>\n<li>They can browse and select their preferred point<\/li>\n<li>Each point shows opening hours, phone number, notes, courier name, and distance<\/li>\n<li>Desktop: large readable map | Mobile: optimized view<\/li>\n<\/ul>\n\n<p><strong>List view:<\/strong><\/p>\n\n<ul>\n<li>A list of available pickup points sorted by distance<\/li>\n<li>Same details: hours, phone, courier, distance<\/li>\n<li>Lightweight and works great on mobile<\/li>\n<\/ul>\n\n<p>In both modes, after selecting a pickup point the customer confirms the choice and proceeds to payment. The selected point's address and opening hours appear on the thank you page and in the confirmation email.<\/p><\/dd>\n<dt id=\"which%20e-commerce%20stores%20are%20ideal%20for%20this%20plugin%3F\"><h3>Which e-commerce stores are ideal for this plugin?<\/h3><\/dt>\n<dd><p>The plugin works best with stores selling small to medium-sized products, as pickup points have size limitations.<\/p>\n\n<p><strong>Ideal for:<\/strong> clothing and accessories, books and media, cosmetics and beauty, consumer electronics (earbuds, chargers, etc.), small home goods, toys, food and beverage.<\/p>\n\n<p><strong>Less suitable for:<\/strong> large furniture, bulky appliances, large sporting equipment, goods requiring specialized delivery.<\/p>\n\n<p>Note: size limits vary by courier and pickup point. You can enable this method for all products \u2014 it will be up to your logistics workflow to handle any courier incompatibilities.<\/p><\/dd>\n<dt id=\"i%20don%27t%20see%20any%20pickup%20points%20in%20the%20checkout%20%E2%80%94%20what%20should%20i%20do%3F\"><h3>I don't see any pickup points in the checkout \u2014 what should I do?<\/h3><\/dt>\n<dd><p>Most likely causes:<\/p>\n\n<ol>\n<li><strong>API key is incorrect<\/strong> \u2013 go to Qapla' Pudo settings, verify the key, and run the connection test<\/li>\n<li><strong>PUDO service not active in your contract<\/strong> \u2013 contact your Qapla' or GLS representative to verify<\/li>\n<li><strong>Search radius too small<\/strong> \u2013 increase the default radius in the plugin settings (try 25 km)<\/li>\n<li><strong>Shipping method not in the right zone<\/strong> \u2013 go to WooCommerce \u2192 Settings \u2192 Shipping and verify the method is assigned to the zone matching your customer's address<\/li>\n<\/ol><\/dd>\n<dt id=\"google%20maps%20is%20not%20loading%20%E2%80%94%20what%20should%20i%20do%3F\"><h3>Google Maps is not loading \u2014 what should I do?<\/h3><\/dt>\n<dd><ol>\n<li>Verify you have entered a Google Maps API key in the plugin settings<\/li>\n<li>In Google Cloud Console (https:\/\/console.cloud.google.com), confirm that <strong>Maps JavaScript API<\/strong> is enabled for your key<\/li>\n<li>If you have reached the free usage limit, add a payment method to your Google Cloud account<\/li>\n<\/ol><\/dd>\n<dt id=\"the%20%22qapla%27%20pudo%22%20shipping%20method%20does%20not%20appear%20in%20checkout%20%E2%80%94%20what%20should%20i%20do%3F\"><h3>The \"Qapla' Pudo\" shipping method does not appear in checkout \u2014 what should I do?<\/h3><\/dt>\n<dd><ol>\n<li>Verify you have added \"Qapla' Pudo\" as a shipping method in WooCommerce \u2192 Settings \u2192 Shipping for the correct zone<\/li>\n<li>Check that the customer's address falls within the shipping zone where the method is configured<\/li>\n<li>Go to Plugins and confirm that \"Qapla' Pickup Points\" is listed as Active<\/li>\n<\/ol><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.03<\/h4>\n\n<ul>\n<li>Fix: REST endpoint \/pudos permission_callback now verifies WordPress REST nonce (X-WP-Nonce header) instead of using __return_true \u2014 protects private API key from unauthenticated external access<\/li>\n<\/ul>\n\n<h4>2.02<\/h4>\n\n<ul>\n<li>Readme: Source Code section now explicitly documents js\/src\/google-markerclusterer\/ TypeScript sources included in the plugin package<\/li>\n<\/ul>\n\n<h4>2.01<\/h4>\n\n<ul>\n<li>Fix: Tracking widget \u2014 status icon for re-entering shipments now served locally (img\/status\/6-2.svg) instead of cdn.qapla.it<\/li>\n<li>Fix: Plugin URL passed to tracking widget via qplpuTrackingData.pluginUrl<\/li>\n<\/ul>\n\n<h4>2.00<\/h4>\n\n<ul>\n<li>Fix: REST endpoint \/pudos uses __return_true permission_callback (public endpoint, no auth required)<\/li>\n<li>Fix: Rate limiting moved from permission_callback to endpoint callback<\/li>\n<li>Fix: Removed duplicate Licence header field and outdated @version docblock<\/li>\n<li>Fix: new WC_Order() replaced with wc_get_order() for HPOS compliance<\/li>\n<li>Fix: Residual get_post_meta() for tracking number replaced with $order-&gt;get_meta()<\/li>\n<li>Fix: Block editor script handle mismatch (qplpu-block \u2192 qapla-pudo-block)<\/li>\n<li>Fix: Hardcoded Italian string \"Seleziona un punto di ritiro\" replaced with translatable esc_attr_e()<\/li>\n<li>Fix: i18n strings for select\/selected\/opening_hours\/phone\/notes now use __() instead of locale conditionals<\/li>\n<li>Fix: Shipping method field labels translated from Italian to English (Title, Cost, Free Shipping Threshold)<\/li>\n<li>Fix: Admin instruction string for GLS API keys translated to English<\/li>\n<li>Readme: Added == Installation == section<\/li>\n<li>Readme: Documented getCouriers API call with purpose and data transmitted<\/li>\n<li>Readme: Documented cdn.qapla.it image loading in tracking service<\/li>\n<li>Readme: Added missing changelog entries for versions 1.93\u20131.98<\/li>\n<\/ul>\n\n<h4>1.99<\/h4>\n\n<ul>\n<li>Fix: PUDO data lost on order when WooCommerce refreshes checkout (updated_checkout listener)<\/li>\n<li>Fix: HPOS compatibility \u2014 replaced update_post_meta\/get_post_meta with WooCommerce Order API<\/li>\n<li>Fix: Asset versioning \u2014 removed time() from wp_enqueue_style (WordPress.org guidelines)<\/li>\n<li>Fix: Admin tile preview images now served locally (no external CARTO\/OSM requests)<\/li>\n<li>Fix: Updated Terms of Service and Privacy Policy URLs<\/li>\n<\/ul>\n\n<h4>1.98<\/h4>\n\n<ul>\n<li>Fix: Settings link in plugin list was pointing to wrong admin page slug<\/li>\n<li>Fix: Updated Gutenberg block text domain to match plugin slug<\/li>\n<\/ul>\n\n<h4>1.97<\/h4>\n\n<ul>\n<li>Fix: Admin CSS\/JS not loading due to wrong page hook slug<\/li>\n<li>Fix: Removed duplicate map settings fields (now shared between Qapla and GLS tabs)<\/li>\n<li>Fix: Updated admin menu label<\/li>\n<\/ul>\n\n<h4>1.96<\/h4>\n\n<ul>\n<li>Fix: Removed deprecated load_plugin_textdomain() call (WordPress 4.6+)<\/li>\n<\/ul>\n\n<h4>1.95<\/h4>\n\n<ul>\n<li>Fix: Renamed plugin display name from \"Qapla' Pudo v2\" to \"Qapla' Pudo\"<\/li>\n<\/ul>\n\n<h4>1.94<\/h4>\n\n<ul>\n<li>Fix: Renamed main plugin file to qapla-pudo.php to match WordPress.org slug convention<\/li>\n<\/ul>\n\n<h4>1.93<\/h4>\n\n<ul>\n<li>Fix: Corrected text domain from qapla-pudo-v2 to qapla-pudo across all PHP files<\/li>\n<\/ul>\n\n<h4>1.92<\/h4>\n\n<ul>\n<li>Fix geocoding for non-Italian addresses: Nominatim query now uses structured fields and countrycodes filter<\/li>\n<li>Fix distance filter zoom: reduced fitBounds padding for better map fill<\/li>\n<\/ul>\n\n<h4>1.91<\/h4>\n\n<ul>\n<li>Fix zoom iniziale non adeguato al default_radius<\/li>\n<li>Fix filtri distanza OpenStreetMap non funzionanti dopo le modifiche precedenti<\/li>\n<\/ul>\n\n<h4>1.86<\/h4>\n\n<ul>\n<li>Patch sicurezza<\/li>\n<\/ul>\n\n<h4>1.75<\/h4>\n\n<ul>\n<li>Unified list card layout: single and multi-carrier cards now share the same 3-zone structure (header, address, carrier rows)<\/li>\n<li>Carrier logo moved from header to dedicated carrier row for clearer visual hierarchy<\/li>\n<li>Selection highlight uses box-shadow instead of border-width change (no layout shift)<\/li>\n<li>Removed obsolete CSS classes, updated tooltip positioning for unified header<\/li>\n<\/ul>\n\n<h4>1.74<\/h4>\n\n<ul>\n<li>Fixed: Info tooltip now correctly reads businessHours array from API (was looking for non-existent flat fields)<\/li>\n<li>Fixed: Removed debug overlay from tooltip, restored hasInfoData gate<\/li>\n<li>Added: Info tooltip on PUDO points showing opening hours, phone, notes \u2014 hover\/tap<\/li>\n<li>Added: Smart hours grouping with support for multiple daily time slots<\/li>\n<li>Changed: Font-size +2px on all popup and list elements for readability<\/li>\n<li>Changed: Info icon 22px, context-specific tooltip positioning<\/li>\n<\/ul>\n\n<h4>1.71<\/h4>\n\n<ul>\n<li>Fixed: InfoWindow styling now applied via JS <code>domready<\/code> event \u2014 reliably overrides Google Maps inline styles<\/li>\n<li>Fixed: Close button compact circular overlay and uniform 12px padding enforced via DOM manipulation<\/li>\n<li>Changed: CSS simplified to minimal fallback (close button rules removed, handled by JS)<\/li>\n<\/ul>\n\n<h4>1.70<\/h4>\n\n<ul>\n<li>Improved: Google Maps InfoWindow close button now compact circular overlay (CSS-only, superseded by v1.71)<\/li>\n<li>Improved: InfoWindow padding uniform 12px on all sides (removed extra right padding)<\/li>\n<\/ul>\n\n<h4>1.69<\/h4>\n\n<ul>\n<li>Fixed: Select\/Selected buttons now have uniform width (grid overlay prevents size change on toggle)<\/li>\n<li>Fixed: Preferred courier auto-select works correctly when multiple couriers share the same pickup point<\/li>\n<\/ul>\n\n<h4>1.68<\/h4>\n\n<ul>\n<li>Selected PUDO Couriers: tag input with lazy-loaded autocomplete to filter map couriers (Qapla' only)<\/li>\n<li>Nearest Preferred Courier: auto-select prioritizes preferred courier at same-distance points<\/li>\n<li>New REST endpoint for fetching couriers list from Qapla' API<\/li>\n<li>API error feedback displayed under couriers field<\/li>\n<\/ul>\n\n<h4>1.66<\/h4>\n\n<ul>\n<li>Reordered admin settings, removed redundant shipping method name setting<\/li>\n<li>Added shipping configuration hint with direct link<\/li>\n<\/ul>\n\n<h4>1.65<\/h4>\n\n<ul>\n<li>Fixed OSM map container already initialized error<\/li>\n<li>Fixed OSM marker clustering not working<\/li>\n<\/ul>\n\n<h4>1.64<\/h4>\n\n<ul>\n<li>Admin settings redesign: tab-based layout with platform tabs, card-based sections<\/li>\n<li>New OpenStreetMap Style selector with 4 tile styles and thumbnail preview cards<\/li>\n<li>New Google Maps Style selector with 6 styles and SVG-based preview cards<\/li>\n<li>Fixed OSM marker clustering race condition<\/li>\n<li>New <code>css\/admin.css<\/code> for admin UI<\/li>\n<\/ul>\n\n<h4>1.54<\/h4>\n\n<ul>\n<li>Marker clustering for both Leaflet and Google Maps<\/li>\n<li>Courier icon preloader with base64 caching<\/li>\n<li>Fixed Google Maps courier logo broken images<\/li>\n<\/ul>\n\n<h4>1.44<\/h4>\n\n<ul>\n<li>List view redesign: sort by distance, group by proximity, card-based UI<\/li>\n<li>Multilingual support (IT\/EN) for select buttons<\/li>\n<li>Group popup redesign on map<\/li>\n<\/ul>\n\n<h4>1.34<\/h4>\n\n<ul>\n<li>Redesigned popup layout for single and group markers<\/li>\n<li>New Map Marker Style setting (pin type \/ courier logo)<\/li>\n<li>Courier logo markers with selection highlight<\/li>\n<\/ul>\n\n<h4>1.24<\/h4>\n\n<ul>\n<li>Fixed Google Maps InfoWindow stale confirmed state<\/li>\n<li>Fixed single-marker popup missing confirmed button state<\/li>\n<\/ul>\n\n<h4>1.23<\/h4>\n\n<ul>\n<li>Fixed multiple markers remaining orange after sequential confirmations<\/li>\n<li>Fixed PUDO selection freeze on single-point markers<\/li>\n<\/ul>\n\n<h4>1.22<\/h4>\n\n<ul>\n<li>Fixed confirmed pin persistence when browsing other markers<\/li>\n<li>Fixed popup close restoring previous confirmed selection<\/li>\n<li>Fixed group markers orange state on click<\/li>\n<\/ul>\n\n<h4>1.21<\/h4>\n\n<ul>\n<li>Fixed PUDO selection data cleared on popup close<\/li>\n<li>Fixed selected pin persistence after popup close<\/li>\n<\/ul>\n\n<h4>1.20<\/h4>\n\n<ul>\n<li>Smart PUDO grouping by coordinate proximity (~50m) across all map views<\/li>\n<li>Orange selected pin on OSM map (aligned with Google Maps)<\/li>\n<li>PUDO grouping on Google Maps with numbered circle markers<\/li>\n<li>Unified group popup styling with \"Confirm this pickup point\" buttons<\/li>\n<li>Added CHANGELOG.md<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Pickup Points for WooCommerce. Let your customers choose when and where to collect their orders \u2014 via Qapla&#039; or GLS.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/276457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=276457"}],"author":[{"embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/qaplawoocommerce"}],"wp:attachment":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=276457"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=276457"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=276457"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=276457"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=276457"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=276457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}